QT Qpainter | 您所在的位置:网站首页 › 山顶风景好的词语 › QT Qpainter |
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 实验室设备网 版权所有 |