Как зделать так чтобы сквозь PictureBox было видно что находится под ним
пожалуйста помогите
MIT писал(а):Выкинуть PictureBox и юзать класс с унаследованной панелью, в котором затирается событие прорисовки фона.
Joo писал(а):MIT писал(а):Выкинуть PictureBox и юзать класс с унаследованной панелью, в котором затирается событие прорисовки фона.
А на примере можно? Что-то мне кажется работать не будет. Но я не утверждаю, не проверял сам.
Можно. Работать будет, я использовал подобную методику. Единственная ее проблема - медленная перерисовка при некоторых условиях.Joo писал(а):А на примере можно? Что-то мне кажется работать не будет
''' <summary>
''' Real Transparent Panel
''' </summary>
''' <remarks></remarks>
Public MustInherit Class RTPanel 'MustInherit
Inherits Panel
''' <summary>
''' Drawing surface where graphics should be drawn.
''' Use this member in the OnDraw method.
''' </summary>
Protected graphics As Graphics
Public Sub New()
MyBase.New()
_ignoge_ERASEBKGND = False
End Sub
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = (cp.ExStyle Or 32)
'WS_EX_TRANSPARENT
Return cp
End Get
End Property
Protected Overrides Sub OnPaintBackground(ByVal pevent As PaintEventArgs)
' Don't paint background
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
' Update the private member so we can use it in the OnDraw method
Me.graphics = e.Graphics
' Set the best settings possible (quality-wise)
Me.graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
Me.graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
Me.graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
Me.graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
' Calls the OnDraw subclass method
MyBase.OnPaint(e)
OnDraw()
End Sub
''' <summary>
''' Override this method in subclasses for drawing purposes.
''' </summary>
Protected MustOverride Sub OnDraw()
Private _ignoge_ERASEBKGND As Boolean
Public Property ignore_WM_ERASEBKGND() As Boolean
Get
Return _ignoge_ERASEBKGND
End Get
Set(ByVal value As Boolean)
_ignoge_ERASEBKGND = value
End Set
End Property
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If _ignoge_ERASEBKGND And m.Msg = &H14 Then Exit Sub 'WM_ERASEBKGND
MyBase.WndProc(m)
End Sub
End Class
Public Class MyPanel
Inherits RTPanel
Protected Overrides Sub OnDraw()
With MyBase.graphics
'.DrawRectangle(New Pen(Color.Black, 3), New Rectangle(0, 0, MyBase.Width, MyBase.Height))
End With
End Sub
End Class
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 87