QPainter를 사용하여 cairo의 push_group/pop_group을 구현하려고하지만 QPainter는 새로운 painterDevice로 begin()을 실행하는 동안 상태를 모두 재설정하므로 모든 상태를 수동으로 저장/되돌려 야합니다.QPainter 상태를 쉽게 복사 할 수 있습니까?
0
A
답변
4
예, QPainter::save()
과 QPainter::restore()
을 확인하십시오.
여러 QPainter의 수명 사이에 저장/복원하려면 수동으로해야합니다. 페인터 상태 (펜, 브러쉬, 변형 등)를 캡슐화하는 클래스 PainterState
을 만든 다음 QStack<PainterState>
을 저장할 수 있습니다.
QPainterState 클래스가 있지만 내부 용으로 만 사용되며 하나의 QPainter와 함께 사용해야합니다. QPainterState 멤버에 관심이있는 경우 소스 ("qpainter_p.h")를 참조하십시오 (여기에 복사하기에는 너무 많음).
0
QPainter 개체를 구성 할 때 QPicture에 그릴 수 있습니다. 그런 다음 필요할 때 다시로드하여 실제 QPaintDevice에 그려 넣을 수 있습니다.
QPicture picture;
QPainter painterQueued;
painterQueued.begin(&picture); // paint in picture
painterQueued.drawEllipse(10,20, 80,70); // draw an ellipse
painterQueued.end(); // painting done
QImage myImage;
QPainter painterTarget;
painterTarget.begin(&myImage); // paint in myImage
painterTarget.drawPicture(0, 0, picture); // draw the picture at (0,0)
painterTarget.end(); // painting done
많은 QPicture 개체를 목록, 스택 등에 큐에 넣고 필요할 때 재생할 수 있습니다.
관련 문제
- 1. aptana를 사용하여 서버간에 파일을 쉽게 복사 할 수 있습니까?
- 2. 모든 템플릿 시스템에서 라디오 상자의 상태를 쉽게 확인할 수 있습니까?
- 3. QPainter Save State
- 4. TFS2010에서 파일 기록을 복사 할 수 있습니까?
- 5. Maven은 마지막 명령을 쉽게 다시 실행할 수 있도록 상태를 기억합니까?
- 6. CakePHP에서 레코드를보다 쉽게 처리 할 수 있습니까?
- 7. QProgressBar를 쉽게 사용자 정의 할 수 있습니까?
- 8. CodeIgniter로 단위 테스트를 쉽게 할 수 있습니까?
- 9. TFS 병합을 더 쉽게 할 수 있습니까?
- 10. 이메일 주소록 초대를 쉽게 할 수 있습니까?
- 11. 이 작업을 쉽게 수행 할 수 있습니까?
- 12. 파이썬에서는 xml을 쉽게 편집 할 수 있습니까?
- 13. CObList를 쉽게 분류 할 수 있습니까?
- 14. wxWidgets로 IPC를 쉽게 할 수 있습니까?
- 15. tcmportmapper를 iOS로 쉽게 이식 할 수 있습니까?
- 16. 텍스트 파일을 쉽게 파싱 할 수 있습니까?
- 17. Python을위한 동시성 구현을 쉽게 할 수 있습니까?
- 18. NSLibraryDirectory에서 파일을 쉽게 제거 할 수 있습니까?
- 19. ListView에서 항목을 쉽게 재정렬 할 수 있습니까?
- 20. NSImage를 쉽게 애니메이트 할 수 있습니까?
- 21. VSTO 외부의 Outlook 연락처에 쉽게 액세스 할 수 있습니까?
- 22. NHibernate에서 엔터티 상태를 관리 할 수 있습니까?
- 23. ObjectContext.SaveChanges의 진행 상태를 추적 할 수 있습니까?
- 24. Rails에서 상태를 어떻게 처리 할 수 있습니까?
- 25. .net 배포에서 sharpdevelop로 웹 참조를 쉽게 전환 할 수 있습니까?
- 26. 어떻게 쉽게 무시하고 Mage_Eav_Model_Entity_Collection_Abstract를 사용할 수 있습니까?
- 27. QPainter 너비와 높이
- 28. msbuild는 하위 디렉토리에서 루트 디렉토리로 복사/복사 할 수 있습니까?
- 29. PyQt4 : QPainter 및 QGraphicsSvgItem
- 30. SVN은 sqlite를 복사 할 수 있습니까?
그래서 새 장치에서 begin()을 수행하면 저장된 상태가 그대로 유지됩니까? save() begin() restore()가 작업을 수행합니까? – feverzsj
@feverzsj 나는 그렇게 생각하지 않는다. 여러 기기를 사용하는 경우 직접 상태를 관리해야합니다. 하지만 내가 말했듯이, 당신 만의'QStack'를 만드는 것은 쉽습니다. –
Anthony