2015-02-03 1 views
-4

PictureBox 이미지를 깨끗하게하여 TransparentPictureBox.Image = Nothing 코드를 만들면 이미지가 사라지지 않고 이전 이미지와 겹치는 모든 새 이미지를 얻을 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까? =Impossible clean PictureBox

Public Class TransparentPictureBox 
Inherits PictureBox 

Public Sub New() 
    Me.SetStyle(ControlStyles.Opaque, True) 
    Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False) 
End Sub 

Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams 
    Get 
     Dim cp As CreateParams = MyBase.CreateParams 
     cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT 
     Return cp 
    End Get 
End Property 
End Class 
+1

PB에도 BackgroundImage에 할당 된 이미지가 없으면 관련 코드가 모두 표시되지 않을 수 있습니다. – Plutonix

+0

PictureBox.Image = 아무 것도 작동하지 않습니다. Plutonix 명시된 바와 같이 이미지를 지우거나로드하는 데 사용하는 추가 코드로 게시물을 업데이트하십시오. 다른 문제가이 문제를 일으키는 것으로 의심됩니다. –

+0

사용자 지정 컨트롤을 사용하고 있습니다. 나는 컨트롤의 클래스를 붙여 넣었습니다. –

답변

1

컨트롤이 작동 중입니다. exa 당신이 그것을 설계 할 때 ctly. TrueControlStyles.Opaque 옵션 세트와

, 그것의 배경을 그릴하지 않습니다

true의 경우, 컨트롤이 불투명 그려지고 배경이 그려진되지 않습니다.

Image 속성을 Nothing으로 설정하면 내용을 비울 것으로 예상됩니다. PictureBox 어떻게 그립니까? 먼저 배경색을 그립니다. 그런 다음 위에 이미지를 그립니다. 배경 그림을 사용 중지 했으므로 배경이 그려지지 않고 이전 이미지가 지워지지 않습니다.

왜 옵션을 설정 했습니까? 그것이 당신이 찾고있는 행동이 아니라면 그것을 제거하십시오.

+0

Trasparent PictureBox 컨트롤이 필요하기 때문에이 PictureBox는 녹색 필드가있는 다른 PictureBox에 있습니다. Me.SetStyle (ControlStyles.Opaque, True)를 제거하면 방패로 2 차 공백이있는 PictureBox를 얻게됩니다. –

+0

나는 그것을 당신에게 곧바로 줄 것이다 : WinForms 투명도 지원은 짜증 난다. 이야기의 끝. 그런 종류의 유연성을 원하면 WPF로 이동하십시오. 하나의 옵션은 원하는 투명도로 런타임에 합성 이미지를 그려서 하나의 PictureBox에 넣는 것입니다. –

-1

그냥이 최적이 아닌 솔루션 있지만이 쓰기 있지만 picturebox1.imagelocation 작동합니다 :

initial image

나는 사용자 정의 컨트롤을 사용하여 유지

overlapping

, 이것은 클래스 ""

+0

잘 작동하지 않았습니다. –

+0

시도해 볼 수도 있습니다이 PictureBox1.CreateGraphics.Clear (Me.BackColor) – Sniper

+0

유일한 문제는 흰색 배경이 이미지 뒤에 나타납니다. –