2014-09-30 1 views
0

내 맞춤 구성 요소에서 페인트 방법 다른 영역 (예 : 스크롤 막대)에 다른 영역이 있기 때문에 전체 캔버스가 아닌 일부 영역 만 페인트하고 싶습니다. 그리기를 원하지 않습니다. 가능한가? 왜 그들은 지구상에서 Canvas.ClipRect 읽기 전용을 만드나요?Paint 메서드에서 클리핑 사각형을 축소 할 수 있습니까?

+0

@DavidHeffernan, 고맙습니다. – markE

+1

말하기 어렵지만 왜 지구상에서 (Paint 메소드에서) 수정하고 싶습니까? 그냥 로컬 변수에 복사하고 필요에 따라 ;-) – TLama

+0

내 구성 요소에 내 구성 요소의 표면 (캔버스)에 그려진 오른쪽에 스크롤 막대가 있습니다. 그 위에 페인트하면 깜박입니다 발생합니다. –

답변

3

ExcludeClipRect을 사용하여 클리핑 영역에서 영역을 제외 할 수 있습니다. 캔버스 Handle을 장치 컨텍스트로 전달하십시오. 영역을 제외시키려는 각 스크롤 막대 등에 대해 함수를 한 번 호출하십시오.

+0

예, 이제 제외 된 영역을 그릴 수는 없지만 배경색이 채워진 채로 (여전히 모르는 사람에 의해) 배경색이 채워지고 전체 ClipRect가 스크롤 막대 위로 다시 그려집니다 ... –

+1

글쎄, 그럴 것입니다. 추가 조사를하십시오. 클립 rect 수정하는 방법을 물었다. 하나는'wm_erasebkgnd'를 처리하는 방법과 스크롤 막대를 어떻게 그리는 지 궁금해합니다. 그러나 그것은 분명히 다른 질문입니다. –

관련 문제