QPainter 클래스 상세 설명
4741 단어 QPainter
QPainter 클래스 의 낮은 수준 으로 그립 니 다.예 를 들 어 창 위 젯 에 있 습 니 다.
그리 기 도 구 는 대부분의 그래 픽 사용자 인터페이스 프로그램 을 그 리 는 데 고도 로 최적화 된 함 수 를 제공 합 니 다.QPainter 는 간단 한 직선 에서 떡 그림 과 현 처럼 복잡 한 모양 을 그 릴 수 있다.그것 도 배 열 된 텍스트 와 픽 셀 맵 을 그 릴 수 있다.보통'자 연 스 러 운'좌표 시스템 에서 그 려 지지 만 시각 과 세계 전환 에서 도 이 를 할 수 있다.
그림 그리 기 도구 의 전형 적 인 용법 은:
대부분의 경우 이 모든 것 은 그림 그리 기 이벤트 에서 이 루어 집 니 다.(실제로 QPainter 의 99%는 QWidget::paintEvent()의 재 구현 에 사용 되 었 고 그리 기 도 구 는 이러한 용법 을 고도 로 최적화 시 켰 다.)이것 은 매우 간단 한 실례 이다.
void SimpleExampleWidget::paintEvent()
{
QPainter paint( this );
paint.setPen( Qt::blue );
paint.drawText( rect(), AlignCenter, "The Text" );
}
사용 방법 이 간단 하고 사용 할 수 있 는 많은 설정 이 있 습 니 다.
이 설정 들 중 일 부 는 QWidget:font()와 같은 그리 기 장치 설정 에 미 러 가 있 음 을 주의 하 십시오.QPainter::begin()(또는 QPainter 의 구조 함수)은 그리 기 장치 에서 이 속성 을 복사 합 니 다.호출,예 를 들 어 QWidget:setFont()은 도구 가 그 위 에 그 려 질 때 까지 유효 합 니 다.
이 모든 설정 을 내부 스 택 에 저장 하고 restore()를 꺼 냅 니 다.
QPainter 의 핵심 기능 은 그리 기 입 니 다.그리고 가장 간단 한 그리 기 함수:drawPoint(),drawPoints(),drawLine(),drawRect(),drawWinFocusRect(),drawRoundRect(),drawEllipe(),drawArc(),drawPie(),drawChord(),drawLine Segments(),drawPolyline(),drawConvexPolygon(),drawCubicBezier()가 있 습 니 다.모든 이 함수 들 은 정수 좌 표를 사용 합 니 다.부동 소수점 버 전이 없습니다.가능 한 한 빨리 그리 고 싶 기 때 문 입 니 다.
픽 셀 맵/그림 을 그 리 는 함수 가 있 습 니 다.drawPixmap(),drawImage(),drawTiledPixmap()입 니 다.drawPixmap()과 drawImage()는 같은 결 과 를 얻 습 니 다.drawPixmap()을 제외 하고 화면 에서 더 빠 르 고 drawImage()는 QPrinter 와 QPicture 에서 더 빠 르 고 때로는 더 좋 습 니 다.
drawText()를 사용 하면 텍스트 그리 기 를 완성 할 수 있 으 며,좋 은 위치 가 필요 할 때,boundingRect()는 주어진 drawText()명령 이 그 려 질 곳 을 알려 줍 니 다.
그림%1 개의 캡 션 을 편 집 했 습 니 다.drawPicture()는 모든 그리 기 도구 설정 을 무시 하 는 유일한 함수 입 니 다.QPicture 는 자신의 설정 이 있 습 니 다.
보통 QPainter 는 장치 자체 의 좌표 시스템(보통 픽 셀)에서 작 동 하지만 QPainter 도 좌표 변환 을 잘 지원 한다.더 통용 되 는 개술 과 간단 한 실례 는 좌표 시스템 을 참고 하 십시오.
가장 많이 사용 되 는 함 수 는 scale(),rotate(),translate(),shear()입 니 다.이 모든 것 은 worldMatrix()에서 작 동 합 니 다.setWorldMatrix()는 현재 설정 한 WorldMatrix()를 교체 하거나 추가 할 수 있 습 니 다.
setViewport()는 QPainter 작업 의 사각형 을 설정 합 니 다.기본적으로 전체 장치 입 니 다.프린터 를 제외 하고 좋 습 니 다.setWindow()는 좌표 시스템 을 설정 합 니 다.viewport()에 비 친 사각형 입 니 다.window()에 그 려 진 것 은 결국 view port()에 있 습 니 다.창의 기본 값 은 시각 과 같 고 변환 을 사용 하지 않 으 면 최적화 되 어 약간의 속 도 를 얻 을 수 있 습 니 다.
모든 좌표 변환 이 완료 되면 QPainter 는 그림 을 임의의 사각형 이나 영역 으로 자 를 수 있 습 니 다.QPainter 가 자 르 면 hasClipping()이 진짜 이 고 clipRegion()은 자 르 기 영역 으로 돌아 갑 니 다.setClipRegion()이나 setClipRect()를 사용 하여 설정 할 수 있 습 니 다.재단 에 주의 하 는 것 은 매우 느리다.그것 은 시스템 에 완전히 의존 하지만 경험 적 인 방법 만 으로 는 그 리 는 속도 와 재단 구역 의 사각형 수량 이 반비례 한다 고 가정 할 수 있다.
QPainter 의 재단 후 그리 기 장치 도 재단 할 수 있 습 니 다.예 를 들 어 대부분의 창 위 젯 은 하위 창 위 젯 의 픽 셀 에 따라 자 르 고 대부분의 프린터 는 종이 에 가 까 운 가장자리 에 따라 자 릅 니 다.이 다른 재단 들 은 클립 리 온()이나 hasClipping()의 반환 값 에 영향 을 받 지 않 습 니 다.
QPainter 도 비교적 적 게 사용 되 는 함 수 를 포함 하 는데 그들 은 필요 할 때 매우 유용 하 다.
isActive()는 그리 기 도구 가 활성화 되 었 는 지 알려 줍 니 다.begin()(가장 많이 사용 되 는 구조 함수 와)을 활성화 합 니 다.end()(분석 함수 와)방출 합 니 다.그림 그리 기 도구 가 활성화 되 어 있 으 면 device()는 그림 그리 기 도 구 를 되 돌려 줍 니 다.
때때로 다른 것 을 평범 하지 않 은 QPaintDevice 에 그 리 는 것 은 사람들 이 원 하 는 것 이다.QPainter 는 정적 함 수 를 지원 합 니 다.redirect().우 리 는 그것 을 사용 하지 말 라 고 건의 하지만,일부 베테랑 들 에 게 는 완벽 하 다.
setTabStops()와 setTabArray()는 tab 가 어디에서 멈 추 는 지 바 꿀 수 있 지만 거의 사용 되 지 않 습 니 다.
경고:QPainter 는 바 텀 창 시스템 의 왼쪽 에서 주변 작업 을 제한 하려 고 하지 않 습 니 다.좌표 가+/-4000 일 때 일부 플랫폼 의 행동 이 정확 하지 않 을 수 있 습 니 다.
QPaintDevice,QWidget,QPixmap,QPrinter,QPicture,응용 프로그램 예행연습,좌표 시스템 개요,이미지 류 와 이미지 처리 류 를 참고 하 십시오.