2010-03-29 5 views
2

이미지가있는 표준 그림 상자 컨트롤이 있습니다. 반투명 레이어를 추가하고 싶습니다. 그것은 이미지를 숨기지 않을 것입니다, 그것은 어떤 종류의 필터 일 것입니다.그림 상자에 반투명 레이어 추가

어떻게하면됩니까?

+0

지금까지 무엇을 얻었습니까? –

+0

답을 명확히 할 수 있습니까? 내 사전은 '지금까지'에 다른 의미를 부여합니다 ... 나는 그림이있는 그림이 있습니다. 나는 단추처럼 사용한다. 그래서 그림 상자 단추를 클릭하면 추가 레이어를 추가하고 싶습니다. 이 레이어는 picturebox가 눌려 졌음을 나타냅니다. –

답변

1

이 코드는 다음과 유사합니다 :

private void pictureBox1_Paint (object sender, PaintEventArgs e) 
{ 
    using (SolidBrush b = new SolidBrush(Color.FromArgb(128, Color.White)) 
    { 
     e.Graphics.FillRectangle (b, 0, 0, pictureBox1.Width, pictureBox1.Height); 
    } 

그러나, 단순히 그 opactity 사용할 수있는 다른 브러시 클래스가 있습니다 128로 설정되어 하나의 색 브러시를 사용하여 위의 코드와 같은 LinearGradientBrush, TextureBrush, PAthGradientBrushHatchBrush.

추천 당신이 원하는 것처럼 사용자 정의 효과를 페인트 (버튼을 누른 상태에 대해), 권장 접근 방식은 두 응용 프로그램의 런타임에 생성하거나 외부 프로그램을 사용 할 수 있습니다 미리 렌더링 이미지를 생성하는 것 Adobe Photoshop과 같은 이미지를 저장 한 다음이 이미지를 저장하십시오.

그러면 페인팅 코드는 단순히 "버튼"의 현재 상태를 나타내는 이미지를 가져와 오버라이드 된 pictureBox1_Paint 메서드에서 그 이미지를 그립니다.

이 기법을 사용하면 응용 프로그램의 상태 변경 시간이 서로 다른 동일한 상태를 단순히 다시 그리는 것이 아니라 그래픽 페인팅 성능을 향상시킬 수 있습니다.

+0

이미 미리 렌더링 된 이미지가 있습니다. 나는 그들을 자원 파일에 저장한다. 입력 해 주셔서 감사합니다. 나는 당신의 코드를 사용할 것입니다. 사실, 제목 표시 줄처럼 보이는 선상 브러시로 그림 상자를 만드는 방법을 알고 계십니까? 여러 번 시도했지만 결과가 없습니다 ... –

+0

안녕 Alexander, 제목 표시 줄의 색상은 SystemColors.ActiveCaption 및 SystemColors.InactiveCaption에서 찾을 수 있습니다. 그냥 궁금해서 창 캡션 바에있는 버튼을 모방하고 싶습니까? 그렇다면, 관련된 모든 윈도우 메시지를 관리해야하지만, ControlPaint.DrawCaptionButton을 살펴보아야합니다. –

0

당신은 Paint 이벤트를 등록하고이 같은 일부 코드를 작성할 수 있습니다

당신은 반투명 브러시를 genereate 필요
private void pictureBox1_Paint (object sender, PaintEventArgs e) 
    { 
     e.Graphics.FillRectangle (Brushes.Transparent, 0, 0, pictureBox1.Width, pictureBox1.Height); 
    } 

가 (필요한 색상의 ALPA 수준 변경)

자세한 정보를 컨트롤의 사용자 정의 그림에 대해서는 MSDN

작은 코드 단편입니다. 인쇄 이벤트 및 그래픽 개체를 올바르게 사용하려면 먼저 MSDN 항목을 읽어야합니다.

+0

위의 코드는 그림 상자에있는 이미지에는 영향을 미치지 않습니다. 그림 상자의 배경에만 영향을줍니다 ... –

+0

내 대답과 받아 들인 것과는 큰 차이가 없습니다. – crauscher

+0

투명한 브러시는 null 브러시와 같습니다. 제공된 코드 샘플에서는 그림 상자의 이미지에 영향을 미치지 않습니다. 당신의 대답은 알렉산더가 반투명 한 브러쉬를 사용해야한다고 말한 반면 샘플을 만드는 방법은 분명하지 않습니다. :-) –

관련 문제