2014-03-18 3 views
0

첨부 된 비디오를보다 간단하게 설명하기 위해이 문제에 도움을 주시기 바랍니다.배경 패널 Windows Form

First example

패널 레이블 (라벨이 배경없이 PNG 이미지가) (질감 된 배경을 가지고) 이벤트 : MouseDown, MouseUpMouseMove. 비디오에서 레이블을 드래그하는 것을 볼 수 있습니다. 배경을 흰색으로 바꿔 레이블 드래그를 멈 추면 배경이 다시 나타납니다.

패널 컨트롤의 배경은 투명하지만 색상은 배경으로 변경됩니다. 문제는 물질과 관련하여 발생했습니다. 왜 이런 일이 일어나고 어떻게 덜 해결할 수 있는지 이해할 수 없습니다.

Second Example 패널은 투명 배경을하는 대신 제어하는 ​​유일한 차이, 위의 포함, 나는

답변

0

당신은 더블 버퍼를 사용해야 그 속성에 대한 블랙 색상을 선택하고, 당신은하지 않습니다 백그라운드에서 이미지 사용을 중지하려면 모든 것을 원활하게 실행할 수 있습니다.

두 가지 방법이 있지만 빠른 방법 (대부분은 시간이 충분하지 않음)은 패널의 doublebuffer을 사용하는 것입니다.

"느리지 만"더 좋은 방법은 Bitmap 객체를 버퍼로 사용하여 Double Buffer를 직접 만드는 것입니다. 이 예제는 "측면 버퍼"를 만들고 매개 변수로 이미지를 받아들이고 생성 된 버퍼를 사용하여 이미지를 그립니다.

public void DrawSomething(Graphics graphics, Bitmap yourimage) 
{ 
    Graphics g; 
    Bitmap buffer = new Bitmap(yourimage.Width, yourimage.Height, graphics); 
    g = Graphics.FromImage(buffer); 
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 

    g.DrawImage(yourimage, 0, 0); 

    graphics.DrawImage(buffer, 0, 0); 
    g.Dispose(); 
} 

OnPaint 이벤트에서 이것을 호출하십시오.

BTW ... 이것은 단지 이중 버퍼 예입니다.

건배

0

양식과 패널 모두에서 DoubleBuffered를 true로 변경하십시오. 나는 그것이 당신의 문제를 해결해야한다고 생각합니다.