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;
|
|||
|
};
|
|||
|
|