gpt4 book ai didi

c# - Monogame C# : How can I go about creating a fixed grid of images that fit uniformly in each cell?

转载 作者:行者123 更新时间:2023-11-30 18:45:25 24 4
gpt4 key购买 nike

我想创建一个分成多个单元格的网格,这些单元格将包含图像,这些图像不会改变它们的尺寸,但会均匀地适合网格的每个单元格。我过去的尝试没有实现这个概念,因为最后一次尝试只使用了一个应用于对象位置的向量列表;我想知道您将如何在网格上实现这些单元格,然后在每个单元格中放置一个图像,确保图像不适应单元格的尺寸。

//Previous vector attempt

public 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;
}

我目前的理论

  • 创建一个单元格类,它通过绘制事件中的基本划分在定义的点将两个矩形(单元格和图像)嵌套在一起。

THEORY EXAMPLE

最佳答案

您在之前的尝试(您帖子中的尝试)中的直觉与您想要实现的目标非常接近。您查找 Vector2 位置的逻辑是正确的。

因为您已经有了网格点的坐标,所以您可以将 Texture2D 放在每个网格点位置上。

通过这样做,每个 Texture2D 的左上角都将位于您分配给它的网格单元格的左上角。

您也不必担心 Texture2D 会调整大小以适应网格单元。每当您绘制它们时,它们将使用您提供给它们的图像文件的尺寸绘制。

即如果您将 153x45px 图像分配给 Texture2D,则绘制时它的大小仍将是 153x45 像素。 (也就是说,除非您更改了它的 scale,但我假设您没有。)

如果您想让Texture2D在网格单元格的左上角,那么您必须偏移(X,Y) 坐标按您希望它移动的像素量计算。

例如将 Texture2D 向下移动 15 像素并向右移动 30 像素需要您将其原始位置更新为 (X + 15, Y + 30)

关于c# - Monogame C# : How can I go about creating a fixed grid of images that fit uniformly in each cell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53767803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com