QCanvasImage Class
QCanvasImage는 QCanvasPainter 의 이미지 클래스입니다. 더 보기...
| 헤더: | #include <QCanvasImage> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter) target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| 다음부터: | Qt 6.11부터 |
공개 함수
| QCanvasImage() | |
| QCanvasImage(const QCanvasImage &image) | |
| QCanvasImage(QCanvasImage &&other) | |
| ~QCanvasImage() | |
| qreal | devicePixelRatio() const |
| int | height() const |
| int | id() const |
| bool | isNull() const |
| void | setTintColor(QColor color) |
| QSize | size() const |
| qsizetype | sizeInBytes() const |
| void | swap(QCanvasImage &other) |
| QColor | tintColor() const |
| int | width() const |
| operator QVariant() const | |
| QCanvasImage & | operator=(QCanvasImage &&other) |
| QCanvasImage & | operator=(const QCanvasImage &image) |
관련 비멤버
| bool | operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs) |
| bool | operator==(const QCanvasImage &lhs, const QCanvasImage &rhs) |
상세 설명
QCanvasImage는 QCanvasPainter 에서 사용하는 이미지 클래스입니다. 이미지를 그리려면 먼저 예를 들어 QCanvasPainter::addImage()를 통해 이미지를 불러와야 합니다. 그런 다음 QCanvasPainter::drawImage()를 사용하여 이미지를 있는 그대로 그리거나, QCanvasImagePattern 브러시를 사용하여 채우기/선 그리기 작업을 할 수 있습니다.
다음은 간단한 예제입니다:
static QImage logoImage(":/qtlogo.png");
// Paint an image pattern.
QCanvasImage bg = painter.addImage(logoImage,
QCanvasPainter::ImageFlag::Repeat |
QCanvasPainter::ImageFlag::GenerateMipmaps);
QCanvasImagePattern ip(bg, 0, 0, 44, 32);
painter.setFillStyle(ip);
painter.fillRect(50, 50, 320, 230);
// Paint a single image, with tint color.
QCanvasImage logo = painter.addImage(logoImage);
logo.setTintColor("#2cde85");
painter.drawImage(logo, 100, 80);
위의 예제에서 QImage 는 정적 변수이며, 재그리기(repaint) 시마다 addImage()가 호출됩니다. 이미지와 플래그가 동일하게 유지되는 경우, addImage()는 이미지를 텍스처로 다시 업로드하지 않고 캐시에서 불러오기 때문에 이는 문제가 되지 않습니다. 하지만 더 일반적인 접근 방식은 QCanvasImage 변수를 클래스 멤버로 두고, 예를 들어 ` QCanvasPainterItemRenderer::initializeResources()` 내에서 ` QCanvasPainter::addImage()`를 호출하는 것입니다.
QCanvasBrush 와 QCanvasOffscreenCanvas 와 마찬가지로, QCanvasImage는 명시적으로 공유됩니다. 자세한 내용은 ‘암시적 데이터 공유’ 및 ‘ QSharedDataPointer ’을 참조하십시오.
참고: QCanvasImage객체는 텍스처와 같은 그래픽 리소스에 대한 핸들만 포함합니다. detach가 발생하더라도 실제 리소스, 즉 기본 텍스처와 그 안에 포함된 이미지 데이터는 실제로 복사되거나 복제되지 않습니다. 실제 그래픽 리소스(예: QRhiTexture)의 소유자는 addImage()를 통해 QCanvasImage를 할당해 준 QCanvasPainter 입니다.
QCanvasImage는 항상 이를 생성한 QCanvasPainter 에 속합니다. 이미지를 수동으로 제거하려면 removeImage()를 호출하면 됩니다. 하지만 대부분의 경우, 페인터가 자체 소멸 과정에서 이미지를 자동으로 소멸시키므로 이 작업은 필요하지 않습니다.
멤버 함수 설명서
QCanvasImage::QCanvasImage()
기본 이미지를 생성합니다.
QCanvasImage::QCanvasImage(const QCanvasImage &image)
지정된 ` image`의 복사본인 이미지를 생성합니다.
[constexpr noexcept default] QCanvasImage::QCanvasImage(QCanvasImage &&other)
other 에서 새로운 QCanvasImage 객체를 생성합니다.
[noexcept] QCanvasImage::~QCanvasImage()
이미지를 망가뜨립니다.
qreal QCanvasImage::devicePixelRatio() const
이미지의 장치 픽셀 비율을 반환합니다. 이는 장치 픽셀과 장치 독립 픽셀 간의 비율입니다.
장치 픽셀 비율이 1보다 큰 ` QCanvasImage `는 이미지를 사용할 때 해당 배율 계수를 적용합니다. 예를 들어, ` drawImage(image, 0, 0) `는 ` drawImage(image, 0, 0, image.width() / image.devicePixelRatio(), image.height() / image.devicePixelRatio())`와 동일하게 처리됩니다.
기본값은 1.0입니다.
이 값은 ` QCanvasImage `이 생성된 ` QImage `에서 그대로 이어받습니다. 텍스처나 ` offscreen canvas `에서 생성된 ` QCanvasImage `은 항상 장치 픽셀 비율이 1입니다.
QImage항목도 참조하십시오 .
int QCanvasImage::height() const
이 이미지의 높이를 픽셀 단위로 반환합니다.
int QCanvasImage::id() const
이 이미지의 텍스처 ID를 반환합니다. 이미지가 아직 할당되지 않은 경우, 0을 반환합니다.
isNull()도 참조하십시오 .
bool QCanvasImage::isNull() const
이미지가 아직 할당되지 않은 경우 true를 반환합니다. 자세한 내용은 QCanvasPainter::addImage()을 참조하십시오.
void QCanvasImage::setTintColor(QColor color)
이미지의 색조 color 를 설정합니다. 이 색상은 이미지의 색상과 곱해져 이미지에 색을 입힙니다. 예를 들어, 아이콘을 강조하거나 테마에 맞게 이미지를 조정하는 데 사용할 수 있습니다.
tintColor()도 참조하십시오 .
QSize QCanvasImage::size() const
이 이미지의 크기(너비와 높이)를 픽셀 단위로 반환합니다.
qsizetype QCanvasImage::sizeInBytes() const
이 이미지의 크기를 바이트 단위로 반환합니다.
QCanvasPainter addImage()가 반환된 후에는 CPU 측의 데이터 사본을 유지하지 않습니다. 소스가 인 경우, 애초에 CPU 측 이미지 데이터가 존재하지 않습니다. 따라서 이 함수의 결과는 기본 텍스처에 사용되는 GPU 메모리의 근사값입니다. QImage offscreen canvas
참고: 이 값은 이미지 형식과 크기를 기반으로 한 추정치에 불과합니다. Qt는 GPU 측 메모리에서 텍스처 데이터가 어떻게 저장되고 배열되어 있는지에 대한 정보를 가지고 있지 않습니다.
참고: 이 함수는 밉맵(mipmap)이나 멀티샘플(multisample) 데이터를 고려하지 않습니다.
[noexcept] void QCanvasImage::swap(QCanvasImage &other)
이 이미지를 other 로 교체합니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.
QColor QCanvasImage::tintColor() const
이미지의 색조를 반환합니다. 기본값은 Qt::white 입니다.
setTintColor()도 참조하십시오 .
int QCanvasImage::width() const
이 이미지의 너비를 픽셀 단위로 반환합니다.
QCanvasImage::operator QVariant() const
이미지를 ` QVariant` 형식으로 반환합니다.
[noexcept] QCanvasImage &QCanvasImage::operator=(QCanvasImage &&other)
other 를 이 QCanvasImage 인스턴스에 할당합니다.
QCanvasImage &QCanvasImage::operator=(const QCanvasImage &image)
지정된 ‘ image ’를 이 이미지에 할당하고, 이 이미지에 대한 참조를 반환합니다.
관련 비회원
[noexcept] bool operator!=(const QCanvasImage &lhs, const QCanvasImage &rhs)
이미지 핸들 lhs 이 rhs 과 다를 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.
operator==()도 참조하십시오 .
[noexcept] bool operator==(const QCanvasImage &lhs, const QCanvasImage &rhs)
이미지 핸들 lhs 이 rhs 과 동일한 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
참고: 동일하다는 것은 두 이미지 객체가 동일한 그래픽 리소스를 참조하고 색조가 같음을 의미합니다. 내용(픽셀 데이터)은 비교되지 않습니다.
operator!=()도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.