vb.net graphic 总是闪烁怎么解决

liuc3306 2017-06-08 11:50:46
直接在窗体上绘图,由于同心圆内圆要移动,所有需要实时清楚上次的绘图否则会重复显示。但加入Clear(backcolor)后整个绘图区域开始闪烁,这个怎么解决呢?谢谢大家,代码如下:

Private Sub DrawingGraphic(ByVal r1 As Int16, ByVal r2 As Int16, ByVal off1 As Int16, ByVal off2 As Int16) '绘制界面圆形

Dim g As Graphics
Dim brush1 As Brush = New SolidBrush(Color.FromArgb(191, 173, 111))
Dim point1 As Int16
Dim point2 As Int16
Dim point3 As Int16
Dim point4 As Int16
Dim line1 As Int16
Dim line2 As Int16
Dim line3 As Int16
Dim line4 As Int16

g = Me.CreateGraphics

point1 = 600 - r1 / 2 '圆心
point2 = 350 - r1 / 2
point3 = 600 + off1 - r2 / 2
point4 = 350 + off2 - r2 / 2
line1 = point1 + r1
line2 = point2 + r1 / 2
line3 = point1 + r1 / 2
line4 = point2 + r1

g.Clear(Me.BackColor)

g.DrawEllipse(New Pen(Color.Black, 1), point1, point2, r1, r1)
g.FillEllipse(brush1, point3, point4, r2, r2)
g.DrawLine(New Pen(Color.Black, 1), point1, line2, line1, line2)
g.DrawLine(New Pen(Color.Black, 1), line3, point2, line3, line4)

BoultGraphic(point1, point2, r1, off1, off2) '箭头指示
end Sub
...全文
367 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuc3306 2017-06-08
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
改用gdi试试,你这应该是gdi+,gdi可以用控件的Invalidate方法触发重绘
谢谢你,我不太清楚如果使用gdi 你能详细点介绍吗。刚接触vb.net
xdashewan 2017-06-08
  • 打赏
  • 举报
回复
改用gdi试试,你这应该是gdi+,gdi可以用控件的Invalidate方法触发重绘
im战术 2017-06-08
  • 打赏
  • 举报
回复
最好用后台缓冲,再同步显示.就永远不会闪了.
xdashewan 2017-06-08
  • 打赏
  • 举报
回复
引用 2 楼 liuc3306 的回复:
谢谢你,我不太清楚如果使用gdi 你能详细点介绍吗。刚接触vb.net
两者区别http://www.cnblogs.com/lidabo/p/3701252.html 例子http://blog.csdn.net/keenweiwei/article/details/3621187

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧