QPixmap agvPixmap(":/new/prefix1/agvload.png"); QPainter painter(this); painter.drawPixmap(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-(agv_size-nodeSize)/2,agvPixmap.scaled(agv_size, agv_size)); painter.drawText(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-agv_size,"Loading");,不需要放圖片
时间: 2024-03-13 17:45:27 浏览: 17
如果不需要放置图片,可以直接使用 `QPainter` 中的 `drawRect()` 函数来绘制一个矩形代替图片,如下所示:
```
QPainter painter(this);
painter.setBrush(QBrush(Qt::red)); // 设置矩形的颜色为红色
painter.drawRect(agvs[i].current_x*25+200-(agv_size-nodeSize)/2, (agvs[i].current_y+1)*25+50-agv_size-20, agv_size, 20); // 绘制矩形
painter.drawText(agvs[i].current_x*25+200-(agv_size-nodeSize)/2, (agvs[i].current_y+1)*25+50-agv_size-20, agv_size, 20, Qt::AlignCenter, "Loading"); // 绘制文本
```
这样修改后,会在 AGV 上方输出文本 "Loading",并且以红色矩形作为背景。其中, `drawRect()` 函数用于绘制矩形, `setBrush()` 函数用于设置矩形的颜色和填充样式, `drawText()` 函数用于绘制文本。
相关问题
for (int i = 0; i < agvs.size(); i++) { if (agvs[i].getLoad()){ painter.drawPixmap(agvs[i].getCurrentX()*25+200-(nodeSpacing-nodeSize)/2,(agvs[i].getCurrentY()+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agvload.png").scaled(25,25)); } else { painter.drawPixmap(agvs[i].getCurrentX()*25+200-(nodeSpacing-nodeSize)/2,(agvs[i].getCurrentY()+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agv1.png").scaled(25,25)); }},將這個agv圖片置頂
如果您想要将 agv 图片置顶,可以使用 QPainter 的 setCompositionMode() 方法,并将其设置为 CompositionMode_SourceOver。这将确保在绘制时,新的图形将覆盖旧的图形。
下面是一个示例代码:
```
for (int i = 0; i < agvs.size(); i++) {
if (agvs[i].getLoad()){
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawPixmap(agvs[i].getCurrentX()*25+200-(nodeSpacing-nodeSize)/2,(agvs[i].getCurrentY()+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agvload.png").scaled(25,25));
} else {
painter.drawPixmap(agvs[i].getCurrentX()*25+200-(nodeSpacing-nodeSize)/2,(agvs[i].getCurrentY()+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agv1.png").scaled(25,25));
}
}
```
在这段代码中,setCompositionMode() 方法被用来设置绘制模式。当绘制新的 agv 图片时,它将覆盖旧的图形。这样,新的图片就会置顶了。
painter.drawPixmap(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-(agv_size-nodeSize)/2,agv_size,agv_size,QPixmap(":/new/prefix1/agvload.png").scaled(25,25));,修改爲在agv上方,輸出字“Loading”
可以这样修改代码:
```
QPixmap agvPixmap(":/new/prefix1/agvload.png");
QPainter painter(this);
painter.drawPixmap(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-(agv_size-nodeSize)/2,agv_size,agv_size,agvPixmap.scaled(25,25));
painter.drawText(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-agv_size,"Loading");
```
这样修改后,会在 AGV 上方输出文本 "Loading"。