当前位置: 代码迷 >> VB Dotnet >> 关于GDI+中的矩形填充,矩形左上角起始坐标无法正确定位!解决办法
  详细解决方案

关于GDI+中的矩形填充,矩形左上角起始坐标无法正确定位!解决办法

热度:213   发布时间:2016-04-25 02:23:57.0
关于GDI+中的矩形填充,矩形左上角起始坐标无法正确定位!!
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 中去执行的。提前去执行,当然就会取得错误的环境数据。这个希望你自己就能想明白。
  相关解决方案