#vb.net
#vb.net
Вопрос:
Пользовательский элемент управления не может рисовать за пределами заданного пространства.
Вверху слева есть небольшое поле, в котором можно рисовать, но оно никогда не меняет положения или размера. Это означает, что если я установлю местоположение или размер в значения за пределами этого поля, изображение будет обрезано.
Элемент управления:
Public Class mySprite
Inherits UserControl
Dim _location As System.Drawing.Point
Dim _size As System.Drawing.Size
Dim image as System.Drawing.Image
Public Sub New()
_location = New System.Drawing.Point(0, 0)
_size = New System.Drawing.Size(1, 1)
image = System.Drawing.Image.FromFile("sprite.png")
Invalidate()
End Sub
Overloads Property Location As System.Drawing.Point
Get
Return Location
End Get
Set(ByVal value As System.Drawing.Point)
_location = value
Invalidate()
End Set
End Property
Overloads Property Size As System.Drawing.Size
Get
Return _size
End Get
Set(ByVal value As System.Drawing.Size)
_size = value
ImageBase = ScaleImage(_ImageBase, _size.Width, _size.Height)
Invalidate()
End Set
End Property
Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
'MyBase.OnPaintBackground(e)
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim g As System.Drawing.Graphics = e.Graphics
g.Clear(Color.Transparent)
If Visible Then
g.DrawImage(image, 0, 0)
End If
End Sub
End Class
Использование:
Dim pic As New transPicBox
pic.Location = new System.Drawing.Point(100, 100)
pic.Size = New System.Drawing.Size(100, 100)
pic.Visible = True
Me.Controls.Add(pic)
Если кто-нибудь может улучшить заголовок, сообщение или ответ, пожалуйста, сделайте это.
Ответ №1:
При настройке местоположения или размера вызывайте MyBase.Location = value
и MyBase.Size = value
соответственно. Например.
Overloads Property Size As System.Drawing.Size
Get
Return _size
End Get
Set(ByVal value As System.Drawing.Size)
_size = value
MyBase.Size = value
ImageBase = ScaleImage(_ImageBase, _size.Width, _size.Height)
Invalidate()
End Set
End Property