我可以做一些简单的事情:
将以下内容添加到设计器代码
中的InitializeComponent方法中Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or _
ControlStyles.UserPaint Or _
ControlStyles.DoubleBuffer, True)
Me.UpdateStyles()
有可能摆脱这个吗?或者ShapeContainer内部存在缺陷,我需要找到不同的解决方案吗?
答案 0 :(得分:2)
这是相当有缺陷的。它使用自己的窗口覆盖到窗体上,并打开WS_EX_TRANSPARENT样式。这种风格使它看不见,但也防止任何类型的双缓冲工作正常。双缓冲表单没有效果,错误的窗口。
这是绘制形状的一种相当昂贵的方式。廉价且无闪烁的方式是在形式的OnPaint()覆盖或Paint事件处理程序中使用e.Graphics.FillRectangle()。
答案 1 :(得分:0)
我从来没有使用过ShapeContainer,但是当我做这样的自定义图形时,我为Panel创建了一个子类,在我的子类的构造函数中,我将DoubleBuffered设置为true。
更具体的代码示例here。