1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef PAINTAREA_H
#define PAINTAREA_H
#include <QColor>
#include <QImage>
#include <QPainterPath>
#include <QWidget>
class BrushInterface;
class PaintArea : public QWidget
{
Q_OBJECT
public:
PaintArea(QWidget *parent = nullptr);
bool openImage(const QString &fileName);
bool saveImage(const QString &fileName, const char *fileFormat);
void setImage(const QImage &image);
void insertShape(const QPainterPath &path);
void setBrushColor(const QColor &color);
void setBrushWidth(int width);
void setBrush(BrushInterface *brushInterface, const QString &brush);
QImage image() const { return theImage; }
QColor brushColor() const { return color; }
int brushWidth() const { return thickness; }
QSize sizeHint() const override;
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
private:
void setupPainter(QPainter &painter);
QImage theImage = {500, 400, QImage::Format_RGB32};
QColor color = Qt::blue;
int thickness = 3;
BrushInterface *brushInterface = nullptr;
QString brush;
QPoint lastPos = {-1, -1};
QPainterPath pendingPath;
};
#endif
|