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 21:44:00 浏览: 23
如果您想要根据AGV的angle_值来旋转绘制的图像,可以将绘图器的坐标系进行旋转,然后绘制图像。例如:
```
QPixmap agvPixmap(":/new/prefix1/agv1.png");
QPainter painter(this);
painter.begin(this);
// 绘制代码,例如:
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));
painter.end();
```
这里我们将绘图器的坐标系移动到AGV的中心点,然后旋转绘图器的坐标系。最后,我们使用drawPixmap()函数绘制旋转后的图像。
请注意,如果您在之前调用了其他绘图函数如drawLine()或drawRect()等,需要先调用painter.resetTransform()函数将绘图器的坐标系重置为默认值,然后再进行平移和旋转。
相关问题
{ 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 图片也会按照指定的大小进行缩放。
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)