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 10:45:27 浏览: 137
如果不需要放置图片,可以直接使用 `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的路径,你需要在这段代码中添加一些额外的内容。具体来说,你需要为每个AGV绘制一条路径线。你可以使用QPainter的drawLine()方法来绘制线条。以下是一个示例代码片段,可以帮助你了解如何实现这个功能:
```
for (int i = 0; i < agvs.size(); i++) {
// 绘制AGV
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路径
QVector<Node*> path = agvs[i].getPath();
for (int j = 0; j < path.size() - 1; j++) {
painter.drawLine(path[j]->getX()*25+200,path[j]->getY()*25+50,path[j+1]->getX()*25+200,path[j+1]->getY()*25+50);
}
}
```
在这个示例代码中,我们首先遍历所有的AGV,并绘制它们的图像。然后,我们从每个AGV对象中获取路径,并使用QPainter的drawLine()方法绘制路径线。这里我们使用了QVector容器来存储路径节点,并使用循环遍历该容器,以便为每个相邻的节点绘制一条线。
请注意,这只是一个示例实现,你需要根据你程序的逻辑和需求来调整代码。
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"。
阅读全文