我想創建一個劃分為單元格的網格,這些單元格將包含不改變其尺寸的圖像,但會均勻地適合網格的每個單元格。我過去的嘗試沒有實現這個概念,因為最后一次嘗試只使用了應用于對象位置的向量列表;我想知道你將如何在網格上實現這些單元格,然后在每個單元格內放置一個圖像,確保圖像不會適應單元格的尺寸。//Previous vector attemptpublic int _screenHeight;public int _screenWidth;_screenWidth = GraphicsDevice.PresentationParameters.BackBufferWidth;_screenHeight = GraphicsDevice.PresentationParameters.BackBufferHeight;public List<Vector2> generateGrid(int _rows, int _cols) { // Example list List<Vector2> gridPoints = new List<Vector2>(); int rows = _rows; int cols = _cols; int units_x = _screenWidth / rows; int units_y = _screenHeight / cols; for (int i = 0; i < _cols; i++) for (int j = 0; j < _rows; j++) gridPoints.Add(new Vector2(0 + units_x * j, 0 + units_y * i)); // returns the vector points return gridPoints; }我目前的理論創建一個單元格類,它通過繪制事件中的基本劃分在定義的點將兩個矩形(單元格和圖像)嵌套在一起。
2 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
您在之前的嘗試(您的帖子中的直覺)中的直覺非常接近您想要實現的目標。Vector2
您查找職位的邏輯是正確的。
由于您已經有了網格點的坐標,因此您可以將Texture2D
s 放在每個網格點位置上。
通過這樣做,每個都Texture2D
將使其左上角位于您分配給它的網格單元的左上角。
您也不必擔心Texture2D
調整 s 大小以適應網格單元格。無論何時繪制它們,它們都將使用您提供的圖像文件的尺寸進行繪制。
即,如果您將153x45px
圖像分配給 a Texture2D
,那么它153x45
在繪制時仍然是像素大小。(也就是說,除非你改變了它scale
,但我假設你沒有。)
如果你想讓Texture2D
它不在網格單元的左上角,那么你必須將(X,Y)
坐標偏移你希望它移動的像素量。
例如,將 aTexture2D
向下移動 15 個像素并向右移動 30 個像素將需要您將其原始位置更新(X + 15, Y + 30)
.

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
一旦你有了網格,你只需要將內部圖像放在你的單元格的中心。最簡單的方法是使用偏移量。根據您的示例圖像,您需要將其沿 X 軸居中。
這意味著您的 X 偏移量將是
int offsetX = (cellWidth - imageWidth) / 2;
從那里您可以通過迭代網格來使用網格點(假設點 0,0 是左上角)放置圖像。
Vector2 imagePoition = new Vector2(gridPoints[i].X + offsetX, gridPoints[i].Y);
如果您需要將其沿 Y 軸對齊,請對單元格高度和圖像高度執行相同操作
- 2 回答
- 0 關注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消