亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Monogame C#:如何創建一個固定的圖像網格,使其均勻地適合每個單元格?

Monogame C#:如何創建一個固定的圖像網格,使其均勻地適合每個單元格?

C#
尚方寶劍之說 2022-06-12 15:14:23
我想創建一個劃分為單元格的網格,這些單元格將包含不改變其尺寸的圖像,但會均勻地適合網格的每個單元格。我過去的嘗試沒有實現這個概念,因為最后一次嘗試只使用了應用于對象位置的向量列表;我想知道你將如何在網格上實現這些單元格,然后在每個單元格內放置一個圖像,確保圖像不會適應單元格的尺寸。//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您查找職位的邏輯是正確的。

由于您已經有了網格點的坐標,因此您可以將Texture2Ds 放在每個網格點位置上。

通過這樣做,每個都Texture2D將使其左上角位于您分配給它的網格單元的左上角。

您也不必擔心Texture2D調整 s 大小以適應網格單元格。無論何時繪制它們,它們都將使用您提供的圖像文件的尺寸進行繪制。

即,如果您將153x45px圖像分配給 a Texture2D,那么它153x45在繪制時仍然是像素大小。(也就是說,除非你改變了它scale,但我假設你沒有。)

如果你想讓Texture2D不在網格單元的左上角,那么你必須將(X,Y)坐標偏移你希望它移動的像素量。

例如,將 aTexture2D向下移動 15 個像素并向右移動 30 個像素將需要您將其原始位置更新(X + 15, Y + 30).


查看完整回答
反對 回復 2022-06-12
?
慕運維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 軸對齊,請對單元格高度和圖像高度執行相同操作


查看完整回答
反對 回復 2022-06-12
  • 2 回答
  • 0 關注
  • 155 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號