painter.drawRect
时间: 2024-06-02 10:11:37 浏览: 8
这是一个用于在图形界面上绘制矩形的方法。其语法通常形如:
painter.drawRect(x, y, width, height)
其中,painter 是一个绘图对象,x 和 y 分别表示矩形左上角的坐标,width 和 height 分别表示矩形的宽度和高度。调用该方法后,程序会在界面中绘制出一个矩形。
相关问题
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()`方法在当前格子的中心绘制了一条水平直线,然后又恢复了原来的画刷,并绘制了蓝色的矩形。你可以根据需要修改画笔的颜色、粗细和样式。
QPoint start(agvs[i].current_x*25+200+nodeSize/2, (agvs[i].current_y+1)*25+50+nodeSize/2); if (agvs[i].current_x == next_node->x && next_node->y > agvs[i].current_y)//向下 { QPoint end(next_node->x* 25 + 200 +nodeSize/2, (agvs[i].current_y+1)*25+50+nodeSize/20+16); painter.drawLine(start, end); }, // 畫出地圖 for(int i=0;i<31;i++) for(int j=0;j<31;j++) { switch(_MAP[i][j]) { case 1://画障礙物 painter.setBrush(QBrush(Qt::black,Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); break; case 0://画地圖 painter.setPen(QColor(66, 139, 230)); // 设置线条颜色 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize));,將筆刷之内的坐標點都變爲紅色
您可以使用以下代码将笔刷内的坐标点变为红色:
```
painter.setPen(QColor(Qt::red)); // 设置线条颜色为红色
painter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); // 设置笔刷颜色为红色
painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); // 画一个矩形,颜色为红色
```
请注意,这将覆盖之前设置的颜色。如果您希望在之前的颜色上添加红色,可以使用以下代码:
```
painter.setPen(QColor(Qt::red)); // 设置线条颜色为红色
painter.setBrush(QBrush(QColor(66, 139, 230, 128), Qt::DiagCrossPattern)); // 设置笔刷颜色为之前的颜色加上红色,使用斜线图案
painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); // 画一个矩形,颜色为之前的颜色加上红色
```
这将在之前的颜色上添加红色,并使用斜线图案来填充矩形。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)
![](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)