【发布时间】:2010-01-16 00:25:50
【问题描述】:
我有一个带有图片框的表单,它显示图片和在图片框的 Paint 事件处理程序中绘制的一些叠加层。叠加层会根据鼠标移动更新其自身(基本上会改变叠加层不同部分的不透明度)。
目前,我正在从鼠标移动处理程序调用pictureBox.Invalidate() 以确保重新绘制覆盖。我还实现了一些逻辑来确定是否真的需要重新绘制 - 如果没有对象随着鼠标移动而改变其不透明度,PictureBox 不会失效。
当我移动鼠标的速度比非常慢时,我仍然在双核机器上获得 50% 的 CPU 使用率 - 我猜绘画例程无法像鼠标那样频繁地重新绘画生成移动的事件。
绘制的对象不多,最多 10 个填充矩形,每个矩形有 4 个填充三角形角。问题已经存在于单个覆盖对象中。基本上只有FillRectangle 和FillArea 方法用于执行绘画。
在这种情况下,您会提出什么方法来防止如此高的 CPU 使用率?
【问题讨论】:
-
你的电脑是什么规格的?你有板载显存的显卡吗?
-
没有板载显卡,这是一款带有游戏显卡的高端开发机器 - 不是最新一代,但绝对是一款不错的。
标签: c# winforms user-interface gdi+