Vb.net 在哪里声明引用VB对象的公共对象?
我第一次使用Visual Studio和VB.net 有人能告诉我在哪里声明引用VB对象的公共对象吗 此代码工作正常:Vb.net 在哪里声明引用VB对象的公共对象?,vb.net,object,global,public,declare,Vb.net,Object,Global,Public,Declare,我第一次使用Visual Studio和VB.net 有人能告诉我在哪里声明引用VB对象的公共对象吗 此代码工作正常: Public Class Form1 Private ThePen As New System.Drawing.Pen(Color.Red) Private Sub Line(A As Point, y As Point) Dim NewGraphic As Graphics = PictureBox1.CreateGraphics()
Public Class Form1
Private ThePen As New System.Drawing.Pen(Color.Red)
Private Sub Line(A As Point, y As Point)
Dim NewGraphic As Graphics = PictureBox1.CreateGraphics()
NewGraphic.DrawLine(ThePen, A, B)
NewGraphic.Dispose()
End Sub
End Class
但我只想公开宣布一次
Dim NewGraphic As Graphics = PictureBox1.CreateGraphics()
我试图在开始时声明它,但似乎我的对象PictureBox1
尚未加载(因此,无法访问PictureBox1.CreateGraphics()
)
所以我试了一下
Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
但我不能在内部声明公共变量:(您几乎不应该调用
CreateGraphics
。在控件的Paint
事件处理程序中绘制控件,或者,如果合适,创建自定义控件并重写OnPaint
方法。将表示图形的数据存储在一个或多个字段中,并且每当您想要更改图形时,将这些字段设置为d调用控件上的Invalidate
Private lineStart作为点
专用线端点作为点
专用副抽绳(起点为点,[终点]终点为点)
lineStart=开始
lineEnd=[end]
PictureBox1.Invalidate()
端接头
私有子PictureBox1_Paint(发送方作为对象,e作为事件参数)处理PictureBox1.Paint
e、 图形.绘图线(Pens.Red、lineStart、lineEnd)
端接头
一般来说,最好指定要失效的区域,而不是不指定参数并使整个控件失效。实际上,在屏幕上绘制像素是缓慢的部分,因此最好将其保持在最小值。我将把这部分留给您,但您可能希望查看更多信息。注意在,如果您要移动一行,您需要使包含旧行的区域和将包含新行的区域无效。在这种情况下,您可以使用不同的区域多次调用
invalidate
,或者您可以将这些区域合并为一个区域
,并调用一次。如此不同的视图,但很有趣
我无法测试它:(
中的e.object有问题
e.Graphics.DrawLine(Pens.Red, lineStart, lineEnd)
BC30456 Visual Basic“Graphics”不是“EventArgs”的成员。您根本不必使用
CreateGraphics()
。从PictureBox.Paint
事件的处理程序调用该代码。修改Line
方法以接受图形对象(专用子行(g为图形,a为点,B为点)
),然后传递Paint
处理程序的PaintEventArgs
参数的e.Graphics
对象。(顺便说一句,您没有指定点值的设置位置。此外,您使用的是B
点,而不是y
,该方法中不存在此点)。不要处理您的方法接收的图形对象,该对象将在其他地方处理。