GDI+中使用RotateTransform()旋转坐标系统后,得到画图位置的问题。

love87less 2010-12-31 02:13:13
使用GDI+,意图绘制一个台球桌上,球杆根据白球位置,会自动旋转后始终指向白球的程序。
演示的时候,我是将白球放置在一个地方固定不动的。然后,在绘制球杆的时候,根据鼠标当前位置,
使用RotateTransform()来旋转整个坐标系统,然后再使用DrawImage()来绘制球杆的。

当前我已经能正确的让球杆图片旋转后指向白球。但是,有如下问题出现,关于背景刷新的:

当我移动球杆后,在新位置我确实能把球杆图片使用DrawImage绘制出来,但是,这个时候,需要把上一次球杆的位置那个地方重绘一下。目前,就是不知道如何才能确定我原来球杆的位置。

比如我之前球杆是相对于X轴30度的,现在移动到了45度,那我应该如何把原来的30度那个地方的背景重绘上去呢?
背景包括:台球桌台+台球。

谢谢!

是GDI+哈!
...全文
775 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
love87less 2011-01-04
  • 打赏
  • 举报
回复
谢谢各位的意见,我再试下哈。
love87less 2011-01-04
  • 打赏
  • 举报
回复
谢谢各位的意见,我在试下哈。。。
向立天 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 love87less 的回复:]
引用 3 楼 xianglitian 的回复:
会卡?
你的计算量很大么?
没有理由啊

准确说不是卡,而是有一点停顿感。因为是把整个台球桌面,17个台球,全部都贴了一遍。而那个桌面有1024*768那么大的。。。
另外,貌似全部重新贴这个做法本身就不对把。应该是只要刷新上次被球杆遮挡的部分吧。
[/Quote]
全部重新贴有什么不对?
局部刷新是局部刷新
在OnPaint里肯定是全都要画出来啊
j8daxue 2011-01-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 love87less 的回复:]
引用 3 楼 xianglitian 的回复:
会卡?
你的计算量很大么?
没有理由啊

准确说不是卡,而是有一点停顿感。因为是把整个台球桌面,17个台球,全部都贴了一遍。而那个桌面有1024*768那么大的。。。
另外,貌似全部重新贴这个做法本身就不对把。应该是只要刷新上次被球杆遮挡的部分吧。
[/Quote]
1.球杆应该是需要时才出现,所以把球,桌面XXX等画在一个Bitmap缓存里,这样鼠标移动重绘球杆时,每次都贴这个bmp(或球杆最大外接矩形区域)上去,再画球杆
2.球移动时,把除了球以外的元素作为缓存,然后更新时只绘制相应区域覆盖以前区域。
Graphics* g = Graphics::FromImage(...)
Sou2012 2011-01-01
  • 打赏
  • 举报
回复
有很多绘制操作吗?
love87less 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xianglitian 的回复:]
会卡?
你的计算量很大么?
没有理由啊
[/Quote]
准确说不是卡,而是有一点停顿感。因为是把整个台球桌面,17个台球,全部都贴了一遍。而那个桌面有1024*768那么大的。。。
另外,貌似全部重新贴这个做法本身就不对把。应该是只要刷新上次被球杆遮挡的部分吧。
向立天 2010-12-31
  • 打赏
  • 举报
回复
会卡?
你的计算量很大么?
没有理由啊
love87less 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xianglitian 的回复:]
每一次都全部重绘
包括台球案子
[/Quote]

我之前是这样的,但是这样,会明显发现卡。。。。
向立天 2010-12-31
  • 打赏
  • 举报
回复
每一次都全部重绘
包括台球案子

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧