2016-06-26 2 views
0

중첩 된 컨트롤을 사용하여 응용 프로그램을 작성하고 Control.Paint 이벤트 처리기를 사용자 지정 테두리를 그리려면 노력하고있어. 아마의 아이콘을 포함하는 "ChocoTester 정보"및 "보기 버전 ..."라벨뿐만 아니라, PictureBox 등이, 또한 국경을 그리는 방법컨트롤 상속 부모의 사용자 지정 그리기 코드

Drawing Glitch Example

공지 사항 (그리고 아래 이미지 참조 배경색도 있지만, 즉시 볼 수는 없습니다). 가장 바깥 쪽 상자에 Control.Paint 이벤트 처리기를 추가했습니다. . 그러나 어떤 이유로 인해 자식 컨트롤은 부모의 Paint 이벤트 코드를 상속합니다. 이 프로젝트에서 작업하기 전까지는 Windows Forms에서이 작업을 수행하는 것을 본 적이 없습니다.

자식 컨트롤의 BackColorTransparent입니다. 이것은 위에서 설명한 증상과 관련이있을 수도 있고 없을 수도 있습니다. 부모가 사용자 지정 Paint 이벤트를 가진 다른 컨트롤의 자식 컨트롤은 표준 Label 인스턴스이거나 사용자 지정 그리기 코드가 자체적 인 패널이므로이 동작을 나타냅니다.

Rectangle r = e.ClipRectangle; r.Inflate(-1, -1); 
e.Graphics.FillRectangle(Brushes.AliceBlue, r); 
e.Graphics.DrawRectangle(Pens.DarkBlue, r); 
+0

은 문제를 재현하는 코드를 공유합니다. –

답변

0

내가 실제로 내 자신의 말에이 문제를 해결 : 여기

이 문제를 전시 샘플 Panel.Paint 핸들러입니다. 문제는 도면의 크기를 PaintEventArgs.ClipRectangle으로 지정하는 것이 었습니다. Control.WidthControl.Height을 사용하여 Rectangle을 수동으로 구성하고이를 사용하여 화면에 그리면 위에 설명한 동작이 사라집니다.

관련 문제