一个菜鸟级的问题,送分

dongyisheng 2008-06-13 07:05:21
Public Class Form1
Dim gString As Graphics = Me.CreateGraphics()
Dim strRect As New Rectangle(0, 0, 1000, 100)
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

gString.FillRectangle(Brushes.Blue, strRect)

End Sub


End Class

为啥画出的矩形会被截断啊?后面一半显示不出来,如果把Dim gString As Graphics = Me.CreateGraphics()放到Form1_Paint中就没有问题了,为什么啊?请高手指点啊!o(∩_∩)o...
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongyisheng 2008-06-16
  • 打赏
  • 举报
回复
太感谢 yanlongwuhui 搞定了
yanlongwuhui 2008-06-16
  • 打赏
  • 举报
回复
因为你声明的同时创建了Graphics对象,你创建的时机不对,那时候窗体的区域还不是全屏显示的区域,你创建的Graphics对象就是只有那么大的区域,而不是被截断了。估计窗体是最大化显示或是调整大小过的,所以在Form1_Paint直接调用gString.FillRectangle(Brushes.Blue, strRect) ,能操作的区域不是你所需要的了。
正确的做法应该是在模块的头那里声明对象:Dim gString As Graphics ,而在Form1_Paint创建Graphics 对象。当然在Form1_Paint中进行声明并创建也是可以的。
dongyisheng 2008-06-14
  • 打赏
  • 举报
回复
To yanlongwuhui:

我在贴里面已经说了呀“如果把Dim gString As Graphics = Me.CreateGraphics()放到Form1_Paint中就没有问题了”,可是我不清楚为什么呀?能告诉我理由吗?o(∩_∩)o...
yanlongwuhui 2008-06-14
  • 打赏
  • 举报
回复
把 Dim gString As Graphics = Me.CreateGraphics() 写Form1_Paint里面
dongyisheng 2008-06-14
  • 打赏
  • 举报
回复
TO 51Crack 兄:

谢谢!51Crack 使用的方法我知道是可以的,不过,因为我实际的情况是:我想在在一个计时器里面调用一个画矩形的函数,这样
我就不能使用51Crack 你的方法了,所以,我现在想在到的唯一办法就是先申明全局变量 Dim gString As Graphics = Me.CreateGraphics() ,然后再在Timer_tick里面调用 gString.FillRectangle(Brushes.Blue, strRect) ,所以才发现这个问题。请问51Crack 如何解决我这个问题呀?这个问题搞了我一整天了!:-)

足球中国 2008-06-13
  • 打赏
  • 举报
回复
1楼如果真是这样的美女,该多好啊。
floadcloud 2008-06-13
  • 打赏
  • 举报
回复
楼上正解
51Crack 2008-06-13
  • 打赏
  • 举报
回复
去掉 Dim gString As Graphics = Me.CreateGraphics()

Form1_Paint中改为e.Graphics.FillRectangle(Brushes.Blue, strRect)

16,718

社区成员

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

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