QT Qpainter 您所在的位置:网站首页 山顶风景好的词语 QT Qpainter

QT Qpainter

2023-03-01 23:32| 来源: 网络整理| 查看: 265

Qpainter - это класс Painter QT, который может использовать его для рисования, то есть шаблона.

Вам нужно добавить файлы заголовков:#include

Затем перепишите эту функцию:

protected: void paintEvent(QPaintEvent *event) override;

Реализуйте этот метод и краску в его методе.

Не нужно звонить, система автоматически вызовет. Когда появится новая картина, вам нужно позвонитьupdate();Функция обновляется.

Примечание: живопись должна выполняться в переписанной функции, чтобы сделать ее эффективной.

Конечно, есть исключения, которые также могут быть окрашены в другие функции, а затем вызовут функцию Paintevent. Следующее:

#include "TextQPainter.h" #include TextQPainter::TextQPainter(QWidget *parent) : QWidget(parent) { ui.setupUi(this); update(); } TextQPainter::~TextQPainter() { } void TextQPainter::paintEvent(QPaintEvent *event) { test(); } void TextQPainter::test() { QPainter painter(this); // Установить ширину painter.setPen(QPen(QBrush(Qt::SolidPattern), 10)); // Установить цвет кисти painter.setPen(QColor(100, 200, 100)); // Нарисуйте прямую линию painter.drawLine(5, 5, 300, 300); // рисование прямоугольника painter.drawRect(30, 30, 300, 200); // Круг живописи painter.drawEllipse(30, 30, 100, 100); // рисовать текст painter.drawText(50, 50, tr("Нарисуй текст")); }

Прямая линия

painter.drawLine(5, 5, 300, 300);

Установите ширину

painter.setPen(QPen(QBrush(Qt::SolidPattern), 10));

Рисование прямоугольника

painter.drawRect(30, 30, 300, 200);

Нарисовать круг

painter.drawEllipse(30, 30, 100, 100);

Установите цвет кисти

painter.setPen(QColor(100, 200, 100));

Нарисуйте текст

painter.drawText(50, 50, tr("Нарисуй текст"));

Установить шрифт

painter.setFont(QFont("Agency FB", 15)); // установить шрифт

Нарисуйте картинку

painter.drawPixmap(50, 100, QPixmap("p.jpg"));

Как показано ниже:

Конечно, вы также можете нарисовать другие специальные узоры: (согласно рисунке ниже, вы можете нарисовать свою любимую модель) Уведомление: Значение угла, используемое в радианах QPainter, основано на 1/16 °. Он представлен 16 при рисунке радиана. Кроме того, Qpainter :: DrawPixMap () может напрямую нарисовать изображение на детали.

Установить стиль кисти Щетка qt :: penstyle

painter.setPen(Qt::DashLine);

Согласно рисунке ниже, выберите свою любимую картину в стиле линии:

Constant Value Description Qt::NoPen 0 Нет линии вообще. Например, Qpainter :: DrawRect () заполняется, но не рисует никаких граничных линий. Qt::SolidLine 1 Нормальная линия. Qt::DashLine 2 Используйте несколько пикселей, которые будут разделены. Qt::DotLine 3 Отличается от нескольких пикселей. Qt::DashDotLine 4 Глупая точка и перелом. Qt::DashDotDotLine 5 Один удар, две точки, один удар, два точки. Qt::CustomDashLine 6 Используйте qpainterpathstroker :: setDashPattern () определение.

Установить шляпу Шляпа стиль qt :: pencapstyle

painter.setPen(Qt::RoundCap);

QT :: SquareCap Square Line, конечная точка не покрывающей линии QT :: Flatcap Square Wire Cond, конечная точка линии покрытия и вытяните его из половины с помощью линейной рамы Qt :: randcap круглая линия

Установите точку подключения Точка соединения Qt :: penjoinstyle

painter.setPen(Qt::BevelJoin);

Qt :: beveljoin две строки, чтобы сформировать квадратное соединение QT :: Miterjoin две строки, чтобы сформировать острое угловое соединение QT :: Roundjoin две строки, чтобы сформировать округленное угловое соединение

Установите кисть для рисования Стиль живописи QT :: Brushstyle

painter.setBrush(Qt::Dense4Pattern); // Установить стиль живописи

Установите цвет цветной кисти Цвет фона, который можно использовать для заполнения формы

painter.setBrush(QBrush(QColor(20, 50, 100))); // заполнить цвет фона

Constant Value Description Qt::NoBrush 0 Нет режима кисти Qt::SolidPattern 1 Унифицированный цвет Qt::Dense1Pattern 2 Чрезвычайно плотный рисунок кисти Qt::Dense2Pattern 3 Очень плотный рисунок кисти Qt::Dense3Pattern 4 Некоторые плотные рисунки кисти Qt::Dense4Pattern 5 Полудна Qt::Dense5Pattern 6 Некоторая редкая чистка Qt::Dense6Pattern 7 Очень редкий рисунок кисти Qt::Dense7Pattern 8 Чрезвычайно редкий рисунок кисти Qt::HorPattern 9 Горизонтальная линия; горизонтальная линия Qt::VerPattern 10 Вертикальная линия Qt::CrossPattern 11 Пересечь из горизонтальной линии и вертикальной линии Qt::BDiagPattern 12 Обратно -Behind Diagonal Qt::FDiagPattern 13 диагональ Qt::DiagCrossPattern 14 Крест -диагональный Qt::LinearGradientPattern 15 Линейный градиент (настройки с выделенным конструктором QBRUSH) Qt::ConicalGradientPattern 17 Градиент конуса (установка специальных настроек конструктора QBRUSH) Qt::RadialGradientPattern 16 Радиальный градиент (установка специальных настроек конструктора QBRUSH) Qt::TexturePattern 24 Пользовательский режим (см. Qbrush :: setTexture ())

Эффект выставки Эффект выставки выставки QGradient :: Тип

painter.setBrush(QBrush(QColor(10, 20, 30), QGradient::PadSpread));

QGradient :: PadsPread: стиль по умолчанию QGradient :: repeatspread: линейный градиент QGradient :: RefertsPream: Round Gradient

Режим заполнения Режим заполнения qt :: fillrule

painter.setBrush(Qt::OddEvenFill);

Qt :: addevenfill правил заполнения: Нарисуйте горизонтальную линию к графике из определенной точки на графике. Если пересечение этой линии и графический край - нечетное число, это означает, что эта точка расположена в графике; если точка пересечения ровно, это Точка находится за пределами графики.

QT :: правила заполнения ветра: Из горизонтальной линии до графики из определенной точки графика направление внешней линии каждого пересечения может быть компенсирована друг другу. Сущность. Направление края определяется порядок, описанный, когда он создается QpainterPath. Если в графических значениях используются графика, такая как AddRct () или addPolygon ().

Совместимый режим

Совместимый режим Qpainter :: CompositionMode QT справочная документация интерпретация:

Определите режим, поддерживаемый цифровым синтезом изображения. Синтетический режим используется для указания того, как пиксели в изображении (источник) слияют с пикселями в другом изображении (Target).

Обратите внимание, что режим работы, представленный префиксом Rasterop, поддерживается этой машиной в x11 и двигателе для рисования решетки. Это означает, что единственный способ использовать эти режимы на Mac - через Qimage. Для ручек и кистей с альфа -компонентами они не поддерживают инструкции смешанный режим. В то же время, откройте Qpainter :: instialiasing rederding побуждает эффективно отключить режим Rasterop.

Наиболее распространенным типом является источник (обычно называемый альфа -смешанным), где источник пиксель смешивается на целевом пикселе. Таким образом, источник альфа -компонент определяет прозрачность пикселей.

Некоторые синтетические режимы должны иметь альфа -канал в источнике или целевом изображении для создания эффектов. Чтобы получить наилучшую производительность, предпочтительным форматом изображения является format_argb32_premultiplying.

Когда установлен синтетический режим, он подходит для всех операций по рисованию, ручкам, кистям, градиенту и пикселям/изображениям.

Пример (квадратный аватар к округлую аватару):

// Аватар поворачивается вокруг Аватара // Параметр 1: Параметр изображения два: пустые параметры раунда изображения Три: необходимо установить размер исходного изображения QPixmap BasicWindow::getRoundImage(const QPixmap &src, QPixmap &mask, QSize maskSize) { if (maskSize == QSize(0, 0)) { maskSize = mask.size(); } else { mask = mask.scaled(maskSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); } // Сохранить изображение преобразования QImage resultImage(maskSize, QImage::Format_ARGB32_Premultiplied); QPainter painter(&resultImage); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(resultImage.rect(), Qt::transparent); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.drawPixmap(0, 0, mask); painter.setCompositionMode(QPainter::CompositionMode_SourceIn); painter.drawPixmap(0, 0, src.scaled(maskSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); painter.end(); return QPixmap::fromImage(resultImage); }

Кроме того, я написал небольшой пример с классом Painter, и если вы прикрепите ссылку для загрузки, вы можете скачать ее для игры. QT5.9.6 + VS2017 IDE.

Ссылка: https://pan.baidu.com/s/1hcfcaj40q46f4bvuw9xeew Извлечь код: SOU9После копирования этого раздела включите приложение Baidu Web Disk Mobile Phone, удобнее работать

Подвести итог: Художник - очень забавная вещь, но я узнал только немного меха. Используйте его, чтобы нарисовать различные эффекты, или вы можете использовать его для разработки некоторых простых мини -игр.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有