2012-05-19 2 views

답변

4

예, QPainter::save()QPainter::restore()을 확인하십시오.

여러 QPainter의 수명 사이에 저장/복원하려면 수동으로해야합니다. 페인터 상태 (펜, 브러쉬, 변형 등)를 캡슐화하는 클래스 PainterState을 만든 다음 QStack<PainterState>을 저장할 수 있습니다.

QPainterState 클래스가 있지만 내부 용으로 만 사용되며 하나의 QPainter와 함께 사용해야합니다. QPainterState 멤버에 관심이있는 경우 소스 ("qpainter_p.h")를 참조하십시오 (여기에 복사하기에는 너무 많음).

+0

그래서 새 장치에서 begin()을 수행하면 저장된 상태가 그대로 유지됩니까? save() begin() restore()가 작업을 수행합니까? – feverzsj

+0

@feverzsj 나는 그렇게 생각하지 않는다. 여러 기기를 사용하는 경우 직접 상태를 관리해야합니다. 하지만 내가 말했듯이, 당신 만의'QStack '를 만드는 것은 쉽습니다. – Anthony

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 개체를 목록, 스택 등에 큐에 넣고 필요할 때 재생할 수 있습니다.

관련 문제