2016-12-30 3 views
4

draw_callback 외부의 GtkDrawingArea 컨텍스트에 액세스하여 변경할 수 있습니까? 그렇다면 짧은 예제 (모든 언어)를 제공하거나 살펴 봐야 할 부분을 알려 주시면 매우 기쁩니다. 지금까지 발견 된 모든 예제는 콜백 내부에 드로잉하는 것이 었습니다. 그래서 그 가능성에 의문을 제기하고 있습니다.GtkDrawingArea draw_callback 외부의 카이로 컨텍스트에 액세스

답변

3

GTK + 2에서는 GDK와 카이로 상호 작용을 사용하여 GdkWindow에서 카이로 컨텍스트를 얻는 것이 가능했습니다. GTK + 3에서 물어볼 수있는 것은 아마도 thisthis과 같은 방식으로 할 수 있습니다.

이것은 XY 문제의 고전적 표현처럼 들립니다. GTK + 3의 카이로 상호 작용으로 이제 just queue a draw signal for only the specific clip region you want이 될 수 있습니다. 그리기 콜백을 일반적으로 작성하고 잘린 영역에서 필요한 것을 그립니다.

문서가 충분하기를 바라지 만, 그렇지 않다면 알려주십시오. 나는 지금이 순간을 예언 할 시간이 없다.

2

늦게 대답하는 것은 조금 이상합니다.하지만 비슷한 문제가 발생했습니다. 그래서 여기에 사후에 대한 두 가지 센트가 있습니다.

일반적으로 ::draw 콜백 외부의 DrawingArea 컨텍스트에 Cairo 명령을 보내지 않으려합니다. 동시에, 일반적으로 ::draw 핸들러 외부에 물건을 그려야합니다 (예 : 장기간 실행되는 도면 계산). 그럴 경우, 추가 카이로 컨텍스트 (오프 스크린)를 작성하고 그 중 하나를 작성해야합니다 (장기 실행 중일 경우 다른 스레드에서 가능할 수도 있음). 그런 다음, 그 화면 밖의 컨텍스트를 표면으로 사용하는 ::draw 핸들러 페인트 (내 용어는 문맥, 표면, 그림, 그림과 관련하여 정확하지만 아이디어를 얻으실 수 있기를 바랍니다.)

GTK + 설명서가 custom drawing 인 좋은 예가 draw_cb입니다.