Nas*_*efi 2 c# line invalidation
要通过用户在C#中单击鼠标来提高绘制多点线的性能,我需要使线无效而不是矩形.有没有办法做到这一点?
panel1.Invalidate();
Run Code Online (Sandbox Code Playgroud)
(假设我们正在谈论Windows Forms)
底层Windows API永远不会使矩形以外的任何东西无效,因此尝试这样做完全没有意义.(您可以设置非矩形剪辑区域,但这对绘制速度没有帮助.)
有关详细信息,请参阅Microsoft文章"呈现Windows窗体控件",特别注意标题为"绘图区域的几何图形"的部分,该部分指出"将带有矩形或区域作为参数的Invalidate的重载版本使用该参数生成ClipRectangle属性" of PaintEventArgs".
因此,矩形总是用于通过创建包含它的剪辑矩形来表示无效区域.
另一个需要注意的重要事项是,如果在重新绘制窗口之前将多个无效区域添加到Windows消息队列中,则所有未处理的区域将合并为包含所有未处理区域的单个边界矩形.
最后一点在关于消息和消息队列 MSDN文章中描述.请注意"排队消息"部分,其中指出"同一窗口的多个WM_PAINT消息被合并为单个WM_PAINT消息,将客户区域的所有无效部分合并到一个区域".