painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize));,在別的函數中刪除特定點
时间: 2023-11-22 10:54:49 浏览: 37
如果你想要删除特定点,你需要先找到这个点在画布上的位置。假设你有这个点的行列坐标 `row` 和 `col`,可以使用以下代码计算出它在画布上的位置:
```
int x = col * 25 + 200;
int y = (row + 1) * 25 + 50;
```
然后,你可以使用 `QPainter` 的 `eraseRect` 函数来删除这个点,代码如下:
```
painter.eraseRect(QRect(x, y, nodeSize, nodeSize));
```
这将在画布上删除一个矩形区域,这个区域的左上角坐标是 `(x, y)`,宽度和高度都是 `nodeSize`。请注意,这个函数只能删除已经画过的矩形,如果你还没有画过这个点,它将不会起作用。
相关问题
for(int i=0;i<31;i++) for(int j=0;j<31;j++) { switch(_MAP[i][j]) { case 1://画障礙物 painter.setBrush(QBrush(Qt::gray,Qt::SolidPattern)); painter.drawRect(QRect(i*25+200-(nodeSpacing-nodeSize)/2,(j+1)*25+50-(nodeSpacing-nodeSize)/2,25,25)); break; case 0://画地圖 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); break; case 2://路線 painter.setBrush(QBrush(Qt::yellow,Qt::SolidPattern)); painter.drawRect(QRect(i*25+200,(j+1)*25+50,nodeSize,nodeSize)); break; case 3://agv painter.drawPixmap(i*25+200-(nodeSpacing-nodeSize)/2,(j+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agv1.png").scaled(25,25)); case 5://agv模擬直綫路綫 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize));,添加代碼,在map值為5的之間繪製直綫
你的代码中,当_MAP[i][j]的值为5时,会绘制一个蓝色的矩形,但是并没有绘制直线。如果你想要在5之间绘制直线,可以添加以下代码:
```cpp
case 5: // agv模拟直线路线
painter.setPen(QPen(QColor(255, 0, 0), 3, Qt::SolidLine)); // 设置画笔颜色、粗细和样式
painter.drawLine(QPointF(i*25+200+nodeSize/2, (j+1)*25+50+nodeSize/2), QPointF((i+1)*25+200-nodeSize/2, (j+1)*25+50+nodeSize/2)); // 绘制直线
painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); // 恢复原来的画刷
painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); // 绘制蓝色矩形
break;
```
这段代码中,我设置了一个红色的画笔,使用`QPainter::drawLine()`方法在当前格子的中心绘制了一条水平直线,然后又恢复了原来的画刷,并绘制了蓝色的矩形。你可以根据需要修改画笔的颜色、粗细和样式。
painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,7,7));將矩形的外框改成藍色
可以通过设置QPen的颜色来修改矩形的外框颜色,代码如下:
```
QPen pen(Qt::blue); // 创建蓝色的QPen
painter.setPen(pen); // 设置画笔
painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern));
painter.drawRect(QRect((i*25+200),(j+1)*25+50,7,7));
```
这样就可以将矩形的外框改成蓝色了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)