Dim br1 As New SolidBrush(Color.FromArgb(0, 255, 0))
gr.FillRectangle(br1, New Rectangle(500, 200, 20, 50))
在窗体按钮botton1的click事件中添加以上代码,为的是填充一矩形,矩形左上角起始坐标为500,200 宽度为20,高度50
运行后发现并没有任何图形出现,现将矩形左上角起始坐标值改小,改为200,200运行之后的结果如下图所示:

为什么设置500,200的起始坐标就不能画出我想要的矩形呢?不解啊?
------解决方案--------------------
这个跟语句写的位置有点关系,至于为何有如此关系,得去听微软解释,估计跟函数设计有关.
而与逻辑无关,把语句修改如下测试就知道:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.CreateGraphics().FillRectangle(New SolidBrush(Color.FromArgb(0, 255, 0)), New Rectangle(280, 200, 20, 50))
Me.CreateGraphics().FillRectangle(New SolidBrush(Color.FromArgb(0, 255, 0)), New Rectangle(500, 200, 20, 50))
Me.Width = 1024
Me.Height = 500
End Sub
End Class
透过以上实验,可以得知Me.CreateGraphics()先会获取原窗体的大小进行绘制,第二次才按指定大小进行绘制,以上代码点击2次按钮效果是不同的,原因明显可知.
至于代码优化问题,如果有重用的代码可优化提取出来.
------解决方案--------------------
晕!
许多代码必须放到 Form_Load 中去执行的。提前去执行,当然就会取得错误的环境数据。这个希望你自己就能想明白。