效率问题 求 绘图时鼠标带十字线 思路

zzlfe 2009-08-15 12:37:26
现在是鼠标移动时,refresh绘图区,然后根据鼠标位置 xy绘制两条线,现在问题是鼠标移动时,CPU占用率较大,有个VC做的控件,画十字线CPU看不出变化来,因为绘制内容特别,现成的控件无法完成。
这里有个类似帖子,http://topic.csdn.net/t/20050705/09/4123254.html#不过他遇到的是延时。
...全文
173 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hughyp 2009-10-20
  • 打赏
  • 举报
回复
问题解决了吗?
zzlfe 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dylike 的回复:]
比如,采用桌面秀那样的透空窗体,除十字线部分其他地方全部不可见(当然可以设置鼠标穿透),这样的话,由于是另一个窗体线程,而且是屏幕合成,不会影响你的主窗体绘制.
关键字: UPDATELAYEREDWINDOW

参阅
[/Quote]注释真多啊
dylike 2009-08-16
  • 打赏
  • 举报
回复
比如,采用桌面秀那样的透空窗体,除十字线部分其他地方全部不可见(当然可以设置鼠标穿透),这样的话,由于是另一个窗体线程,而且是屏幕合成,不会影响你的主窗体绘制.
关键字: UPDATELAYEREDWINDOW

参阅
云水千寻 2009-08-16
  • 打赏
  • 举报
回复
鼠标移动时,refresh绘图区?
也就是说,只要鼠标移动就refresh,这样的话CPU占用肯定很高的
zhoujk 2009-08-16
  • 打赏
  • 举报
回复
做到 picturebox 的 鼠标移动事件中,但是每次事件完成前, sleep(x),保证不要老是占用CPU
dylike 2009-08-15
  • 打赏
  • 举报
回复
不是很明白,请详细描述,最好能带图.
zzlfe 2009-08-15
  • 打赏
  • 举报
回复
没有延时,是效率不够高。

如果是合成到其他图片(如地图),那么建议使用另一个独立的窗体,通过绘制十字线,并且设置非十字线区域的背景色透明(透空)来实现,
麻烦这个详细说说
chaozi_249 2009-08-15
  • 打赏
  • 举报
回复
就用3楼的第2种方法吧。
在鼠标进入绘图区时,内存建立空画布-->获得鼠标的当前位置-->绘制十字线(长度自己设置)-->显示到绘画区域。离开绘图区,释放资源。。
dylike 2009-08-15
  • 打赏
  • 举报
回复
两种方法:
1 使用图像显示区域CreateGraphics实时绘制(效率差,效果不好)
2 内存建立空画布=>绘制十字线=>显示在显示区域,如Picturebox,同时开启窗体双缓冲.

如果是合成到其他图片(如地图),那么建议使用另一个独立的窗体,通过绘制十字线,并且设置非十字线区域的背景色透明(透空)来实现,这样就不会有延迟.
zzlfe 2009-08-15
  • 打赏
  • 举报
回复
绘图时,为了更好显示当前位置,在整个绘图区显示鼠标位置水平和垂直两条直线。画这两条直线的思路
谢谢

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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