Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在QT中绘制32x32平铺图像_Qt_Map_Tile - Fatal编程技术网

在QT中绘制32x32平铺图像

在QT中绘制32x32平铺图像,qt,map,tile,Qt,Map,Tile,我很想知道如何将一幅图像分割成32x32(或任何大小)的可选分幅,并在Qt中显示它们?例如,平铺贴图编辑器(屏幕右下角的面板)。我正在考虑尝试在Qt中创建一个2D级别的编辑器以获得乐趣,但我对Qt还相当陌生,还没有找到这个特定问题的答案。或者我只是不知道如何表达这个问题。将主图像添加到QPixmap中,然后对于要创建的每个磁贴,调用QPixmap的复制函数。这允许您指定要复制的区域,并返回带有该区域的新QPixmap 对于使用copy创建的每个QPixmap磁贴,使用此选项创建QGraphics

我很想知道如何将一幅图像分割成32x32(或任何大小)的可选分幅,并在Qt中显示它们?例如,平铺贴图编辑器(屏幕右下角的面板)。我正在考虑尝试在Qt中创建一个2D级别的编辑器以获得乐趣,但我对Qt还相当陌生,还没有找到这个特定问题的答案。或者我只是不知道如何表达这个问题。

将主图像添加到QPixmap中,然后对于要创建的每个磁贴,调用QPixmap的复制函数。这允许您指定要复制的区域,并返回带有该区域的新QPixmap

对于使用copy创建的每个QPixmap磁贴,使用此选项创建QGraphicsPixmapItem,然后将其添加到QGraphicsScene

所以,你可以这样做:-

// assuming your source image is in your resources qrc file
QPixmap srcImage(":/images/srcImage.png");

//in a loop for x and a 2nd loop for y

// copy a section of the source image
QPixmap tileImg = srcImage.copy(x, y, w, h);

// create the tile
QGraphicsPixmapItem* pTile = new QGraphicsPixmapItem(tileImg);

// add the pTile to the scene.

使用QGraphicsPixmapItem将为您提供一个平铺对象,可以在场景中定位、选择和移动。

Qt发行版中的示例或演示目录中都有一个平铺对象。谢谢Merlin069。我会用这个方法。