Прозрачный в VB .NET

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Sirius SVU
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 15.11.2002 (Пт) 23:35
Откуда: из Россия.Москва

Прозрачный в VB .NET

Сообщение Sirius SVU » 26.03.2003 (Ср) 0:15

Как сделать контрол в .NET прозрачным, как Image в VB6 :?:

CREATOR
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 26.03.2003 (Ср) 12:32

Сообщение CREATOR » 03.05.2003 (Сб) 8:42

:arrow: Вот пример :) , попробуй .... :wink: При желании его можно развить ......... переделать под себя ....
Код: Выделить всё
Public Class TransparentCtrl
    Inherits System.Windows.Forms.UserControl
    Private WS_CLIPCHILDREN As Integer = &H2000000
    Private WS_CLIPSIBLINGS As Integer = &H4000000
    Private WS_EX_TRANSPARENT As Integer = &H20

#Region " Код сгенерированный дизайнером форм "

    Public Sub New()
        MyBase.New()
        'Этот вызов необходим дизайнеру форм.
        InitializeComponent()
        'Добавте свой код инициализации после вызова InitializeComponent()
        MyPreInit()
    End Sub
    Public Sub New(ByVal container As System.ComponentModel.IContainer)
        'Этот вызов необходим дизайнеру форм.
        InitializeComponent()
        'Добавте свой код инициализации после вызова InitializeComponent()
        MyPreInit()
        container.Add(Me)
    End Sub 'New

    'Переопределение Dispose для очистки списка компонентов.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Необходимо для работы дизайнера форм
    Private components As System.ComponentModel.IContainer

    'ВНИМАНИЕ: следующий фрагмент необходим для дизайнера форм
    'Для его модификации используйте дизайнер форм. 
    'Не изменяйте его в редакторе.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        components = New System.ComponentModel.Container()
    End Sub

#End Region

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.Style = cp.Style And Not (WS_CLIPCHILDREN Or WS_CLIPSIBLINGS)
            cp.ExStyle = cp.ExStyle Or WS_EX_TRANSPARENT
            Return cp
        End Get
    End Property

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim g As Graphics = e.Graphics
        Dim rc As Rectangle = ClientRectangle
        rc.Width -= 10
        rc.Height -= 10
        g.DrawEllipse(New Pen(Color.Blue), rc)
    End Sub

    Sub MyPreInit()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor Or ControlStyles.Opaque, True)
        SetStyle(ControlStyles.DoubleBuffer, False)
    End Sub 'MyPreInit

End Class

Некоторые ньюансы не позволят его использовать на ранних версиях виндов, а так ничего ....... и достаточно просто ....


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 71

    TopList