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/agv1.png").scaled(25,25));,根據agv的angle_值來旋轉圖片
时间: 2024-03-12 16:43:56 浏览: 12
您可以使用QPixmap的transformed()函数和QTransform的rotate()函数将图像旋转。例如,以下代码将根据AGV的angle_值(以度为单位)旋转图像:
```
QPixmap agvPixmap(":/new/prefix1/agv1.png");
QPainter painter;
painter.translate(agvs[i].current_x*25+200, (agvs[i].current_y+1)*25+50);
painter.rotate(agvs[i].angle_);
painter.drawPixmap(-agv_size/2, -agv_size/2, agv_size, agv_size, agvPixmap.scaled(25, 25).transformed(QTransform().rotate(agvs[i].angle_)));
```
这里,我们首先将绘图器的坐标系移动到AGV的中心点,然后旋转绘图器。最后,我们使用transformed()函数将图像旋转并绘制它。
相关问题
{ 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/agv1.png").scaled(25,25)); },修改代碼,agv會根據agv的角度選擇
根据 AGV 的角度选择不同的图片可以通过修改 `QPixmap` 的路径来实现,例如:
```
if (agvs[i].current_orientation == "up") {
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/agv1_up.png").scaled(25,25));
} else if (agvs[i].current_orientation == "down") {
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/agv1_down.png").scaled(25,25));
} else if (agvs[i].current_orientation == "left") {
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/agv1_left.png").scaled(25,25));
} else if (agvs[i].current_orientation == "right") {
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/agv1_right.png").scaled(25,25));
}
```
其中 `agvs[i].current_orientation` 表示 AGV 的角度,根据不同的角度选择不同的图片。需要在 `:/new/prefix1/` 目录下添加对应的图片文件,例如 `agv1_up.png`、`agv1_down.png`、`agv1_left.png`、`agv1_right.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,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");,報錯修改
抱歉,我在上一个回答中的代码出现了错误。应该是这样修改:
```
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");
```
这样修改后,会在 AGV 上方输出文本 "Loading",并且 AGV 图片也会按照指定的大小进行缩放。