Прозрачность PictureBox

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

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

Technar
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 31.07.2008 (Чт) 19:15

Прозрачность PictureBox

Сообщение Technar » 04.07.2009 (Сб) 14:35

Как зделать так чтобы сквозь PictureBox было видно что находится под ним :?: :roll:
пожалуйста помогите :cry:

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Прозрачность PictureBox

Сообщение Nord777 » 04.07.2009 (Сб) 14:43

PictureBox1.BackColor = Color.Transparent
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Technar
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 31.07.2008 (Чт) 19:15

Re: Прозрачность PictureBox

Сообщение Technar » 04.07.2009 (Сб) 15:22

Ой простите пожалуйста не то написал вот что надо было:
как зделать так чтобы под PictureBox видно было другой PictureBox?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Прозрачность PictureBox

Сообщение MIT » 04.07.2009 (Сб) 16:34

Выкинуть PictureBox и юзать класс с унаследованной панелью, в котором затирается событие прорисовки фона.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Прозрачность PictureBox

Сообщение Joo » 04.07.2009 (Сб) 16:54

MIT писал(а):Выкинуть PictureBox и юзать класс с унаследованной панелью, в котором затирается событие прорисовки фона.

А на примере можно? Что-то мне кажется работать не будет. Но я не утверждаю, не проверял сам.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Technar
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 31.07.2008 (Чт) 19:15

Re: Прозрачность PictureBox

Сообщение Technar » 04.07.2009 (Сб) 17:02

Joo писал(а):
MIT писал(а):Выкинуть PictureBox и юзать класс с унаследованной панелью, в котором затирается событие прорисовки фона.

А на примере можно? Что-то мне кажется работать не будет. Но я не утверждаю, не проверял сам.

Да действительно дайте пожалуйста пример :)

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Прозрачность PictureBox

Сообщение MIT » 04.07.2009 (Сб) 17:16

Joo писал(а):А на примере можно? Что-то мне кажется работать не будет
Можно. Работать будет, я использовал подобную методику. Единственная ее проблема - медленная перерисовка при некоторых условиях.
Ссыль: http://www.codeproject.com/KB/miscctrl/ ... trols.aspx (не та статья, что искал, но на схожую тему)

З.Ы. Я на этом написал кое-чего поинтереснее...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Прозрачность PictureBox

Сообщение MIT » 04.07.2009 (Сб) 17:35

Короче говоря не помню где эта статья...
Вот моя наработка:
Код: Выделить всё
''' <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


За основы взят материал из той самой статьи, но немного доработан.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


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

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

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

    TopList  
cron