none
vb2010: como fazer 1 picturebox realmente transparente? RRS feed

Respostas

  • eu ja  sonsegui resolver:

    Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs) 'on usercontrol
            MyBase.OnPaintBackground(e)
    
            If Me.BackgroundImage IsNot Nothing And Me.BackColor = Color.Transparent Then
                Me.BackgroundImageLayout = ImageLayout.None
                Using gp As New Drawing2D.GraphicsPath
                    If Me.AutoSize = True Then Me.Size = New Size(Me.BackgroundImage.Width, Me.BackgroundImage.Height) 'automatically resize the control to the size of the BackgroundImage
                    Using bm As New Bitmap(Me.BackgroundImage)
                        For y As Integer = 0 To bm.Height - 1
                            For x As Integer = 0 To bm.Width - 1
                                If (bm.GetPixel(x, y) <> bm.GetPixel(0, 0) AndAlso bm.GetPixel(x, y).A > 0) Then
                                    gp.AddRectangle(New Rectangle(x, y, 1, 1))
                                End If
                            Next
                        Next
                    End Using
                    Me.Region = New Region(gp)
                End Using
            End If
        End Sub

    mas preciso de mais rapidez. alguem me pode ajudar?

    segunda-feira, 30 de janeiro de 2017 20:14

Todas as Respostas

  • Olá!

    Ajudaria se você postasse seu código, ou parte dele para entendermos o seu objetivo.

    Att,


    Fabio Rosa.

    quarta-feira, 25 de janeiro de 2017 11:18
  • veja a imagem:

    quero evitar esse problema. sei posso usar a SetStyle(), mas nao sei usar isso :(

    quarta-feira, 25 de janeiro de 2017 20:06
  • Bom dia,

    Nesse link ha algumas sugestões.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 30 de janeiro de 2017 12:32
    Moderador
  • eu ja  sonsegui resolver:

    Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs) 'on usercontrol
            MyBase.OnPaintBackground(e)
    
            If Me.BackgroundImage IsNot Nothing And Me.BackColor = Color.Transparent Then
                Me.BackgroundImageLayout = ImageLayout.None
                Using gp As New Drawing2D.GraphicsPath
                    If Me.AutoSize = True Then Me.Size = New Size(Me.BackgroundImage.Width, Me.BackgroundImage.Height) 'automatically resize the control to the size of the BackgroundImage
                    Using bm As New Bitmap(Me.BackgroundImage)
                        For y As Integer = 0 To bm.Height - 1
                            For x As Integer = 0 To bm.Width - 1
                                If (bm.GetPixel(x, y) <> bm.GetPixel(0, 0) AndAlso bm.GetPixel(x, y).A > 0) Then
                                    gp.AddRectangle(New Rectangle(x, y, 1, 1))
                                End If
                            Next
                        Next
                    End Using
                    Me.Region = New Region(gp)
                End Using
            End If
        End Sub

    mas preciso de mais rapidez. alguem me pode ajudar?

    segunda-feira, 30 de janeiro de 2017 20:14