67 lines
2.1 KiB
C++
67 lines
2.1 KiB
C++
#pragma once
|
|
#include <qobject.h>
|
|
#include<QGraphicsItemGroup>
|
|
#include "DrawViewParams.h"
|
|
#include "ShapeControlItem.h"
|
|
|
|
class ShapeItemBase :
|
|
public QObject, public QGraphicsItemGroup
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
ShapeItemBase(EShapeType type);
|
|
virtual ~ShapeItemBase();
|
|
void SetZoomVal(qreal ZoomVal) { scaler = ZoomVal; }
|
|
qreal GetContrSize() const { return ContrSize; }
|
|
QPolygonF GetShapePoygonF()
|
|
{
|
|
//if (!itemPolygon.isClosed())
|
|
//{
|
|
// itemPolygon.append(itemPolygon.first());
|
|
//}
|
|
for (int i = 0; i < itemPolygon.count(); i++)
|
|
{
|
|
itemPolygon[i] = mapToScene(itemPolygon[i]);
|
|
}
|
|
return itemPolygon;
|
|
}
|
|
ShapeMode GetShapeMode() { return m_shape_mode; }
|
|
private:
|
|
virtual void shapeInit() = 0;
|
|
public slots:
|
|
virtual void calculateShape() = 0;
|
|
virtual void rotateShape(qreal delta) {};
|
|
protected:
|
|
void focusInEvent(QFocusEvent* event) override;
|
|
|
|
void focusOutEvent(QFocusEvent* event) override;
|
|
|
|
QRectF boundingRect() const override;
|
|
|
|
QPainterPath shape() const override;
|
|
|
|
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
|
|
|
|
protected:
|
|
ShapeControlItem* activeHandle;
|
|
QList<ShapeControlItem* > ControlList;
|
|
QRectF bounding_rect;
|
|
qreal scaler; //缩放系数
|
|
const qreal ContrSize = 8; //控制点尺寸
|
|
EShapeType types; //枚举类型
|
|
QColor ItemColor = QColor(0, 100, 200); //线条颜色
|
|
QColor BackgroundColor = QColor(0, 160, 230, 100); //填充背景颜色
|
|
QColor addBackgroundColor = QColor(0, 255, 0, 100); //填充背景颜色
|
|
QColor divBackgroundColor = QColor(255, 0, 0, 50); //填充背景颜色
|
|
QColor activeBackgroundColor = QColor(255, 255, 0, 100); //填充背景颜色
|
|
bool shape_active = false;
|
|
QString ItemDiscrib = QString::fromLocal8Bit("描述");
|
|
|
|
ShapeMode m_shape_mode = ShapeMode::mNone;
|
|
QPointF Center; //中心点
|
|
QPainterPath ItemShape; //有边框区域
|
|
QPainterPath ItemPath; //有边框区域
|
|
QPolygonF itemPolygon;
|
|
};
|
|
|