我正忙于开发一个 C# win 表单应用程序,它以分层结构绘制数据库结构的图形表示。
一切正常,只是滚动有问题。它有一个糟糕的闪烁问题。
我研究了以下内容:
当你想刷新表面时打电话Invalidate()
(帮助很大,但仍然有点滞后)
还要将DoubleBuffered
属性设置为 True (这个问题我收到一条ArgumentException
消息“参数无效。”。但我可以DoubleBuffered
在我的主窗体上设置为 true)
我的设计细节
我有两个班级Node
,Link
他们都有GraphicsPath
成员,他们都有public void Draw(Graphics g)
自己画的方法。
我还有一个StructureMap
覆盖该protected override void OnPaint(PaintEventArgs e)
方法的用户控件调用,循环遍历每个Node
调用它的绘图函数。循环很简单,因为父节点通过Link
对象链接到子节点。我所要做的就是调用父节点的draw方法,它的所有子节点也被重绘。
我也在以同样的方式进行命中测试。
有没有更好的方法?为什么我不能DoubleBuffered
在我的用户控件上设置为 true?
PS:这是我的第一篇文章,请告诉我我是怎么做的?