我有一个 WinForms 应用程序,我必须在控件之间画一些线。这些行需要持久存在,所以我覆盖了表单OnPaint()
event.
问题是,重新绘制的线条不是很平滑。
我正在创建图形如下:
Graphics g;
g = this.CreateGraphics();
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.FillRectangle(Brushes.White, this.ClientRectangle);
并绘制线条如下:
public void lineDraw(Control L1, Control L2) {
using (Pen pen = new Pen(Color.Black, 4)) {
pen.StartCap = System.Drawing.Drawing2D.LineCap.Flat;
pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
int x1, x2, y1, y2;
//choose x/y coordinates
g.DrawLine(pen, x1, y1, x2, y2);
}
}
我可以设置任何属性来提高绘制图形的平滑度吗?
Goal
图像显示在控件(或窗体)上。
无效
每当控件(或窗体)调整大小、最小化/最大化、部分模糊或移动时,都必须(部分)重绘。当发生这种情况时,必须重绘的控件部分被称为无效的.
当无效时,控件会执行以下操作:
- Call
OnPaintBackground
:这会用背景颜色填充无效区域。
- Call
OnPaint
:这会在背景之上绘制文本和图形。
Why OnPaint
导致闪烁
你已经覆盖了OnPaint method http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx的控制。每次重新绘制控件时,您都会看到控件的闪烁,其中仅绘制了其背景颜色。那是之后OnPaintBackground
已被调用并且之前OnPaint
已被调用。
解决方案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)