2013-07-08 4 views
0

그림 상자의 이미지가 메모리의 비트 맵에서 동적으로 업데이트되며 비트 맵에서 선택한 부분을 투명한 색상으로 지워서 Picturebox의 이미지를 볼 수있게합니다 그것. 여기 비트 맵 부분을 투명하게 지 웁니다.

내 코드

Dim gBmp As Graphics = Graphics.FromImage(GraphLayer(LayerArray)) 
Dim TileSrcCrop As New Rectangle(nVal(xTile), nVal(yTile), TileSize, TileSize) 
Dim TileDrawSize As New Rectangle(nVal(H), nVal(V), TileSize, TileSize) 

gBmp.DrawImage(GraphImage(LayerArray), TileDrawSize, TileSrcCrop, GraphicsUnit.Pixel) 
PicMap(LayerArray).Image = GraphLayer(LayerArray) 

감사

I는 Windows 아이콘이 될 수 있습니다 말을하려고 해요 무엇
+0

이 스 니펫에서 "선택한 부분"이 의미하는 바는 거의 없습니다. 새로운 비트 맵을 만들고, 그 안에 비트 맵을 그려 넣은 다음, Brushes.Transparent를 사용하여 Graphics.FillRectangle로 구멍을 만들어야합니다. –

+0

"PicMap"배열의 PictureBox가 말 그대로 서로 겹쳐서 표시되며 각 PictureBox의 일부가 투명하여 아래의 ** 다른 ** PictureBox를 볼 수있게하려면? 그렇다면 ** 이미지를 투명하게 만들어서 ** 수행 할 수 없습니다. .Net의 투명성은 컨테이너 컨트롤에만 관련됩니다. 따라서 이미지의 일부를 투명하게 만들면 상위 컨테이너의 "아래"에 해당 색상 만 표시됩니다. ** ** 아래 다른 컨트롤의 색상이 아닙니다 **. 겹치는 컨트롤은 .Net 에서처럼 작동하지 않습니다. –

+0

투명도가있는 ** 겹치는 ** PictureBox를 얻으려면 Region() 속성을 수정하여 문자 그대로 컨트롤에서 "구멍"을 펀치해야합니다. Region()에없는 파트는 클리핑되어 밑의 컨트롤을 볼 수 있습니다. GraphicsPath()를 사용하고 Region() 생성자에 전달하여 올바른 부분을 빌드 할 수 있습니다. –

답변

0

이지만, IIRC는 왼쪽 상단 픽셀은 당신이 원하는 색상을 지정해야합니다 투명도를위한 색상으로 지정하십시오. 보통 MS에서 Magenta (255, 0, 255)를 사용합니다. 이를 투명 마스크라고합니다. 그런 다음 색상을 투명하게 만들려는 모든 곳에서 왼쪽 상단 픽셀에 배치 한 색상을 사용합니다.

HTH - 아이콘 전용인지 알려주세요.하지만 Windows 비트 맵 파일도 마찬가지입니다.

+0

답장을 보내 주셔서 감사합니다. 나는이 메서드를 사용하고 있습니다. MakeTransparent()하지만 이미지의 알파 채널을 사용하므로 투명 마스크를 사용하면 이미지가 반투명으로 보이지 않습니다. –

+0

아, 알겠습니다. 또한, 그 비트 맵 (32 비트 것들 즉, 알파 채널을 지원하는 걸 잊었 ... Hehe, 그날 다시, 투명 마스크는 우리가 Windows 비트 맵에 대한 모든했다. :) – fourpastmidnight