|
|
|
|
#include "MyQGraphicsEllipseItem.h"
|
|
|
|
|
|
|
|
|
|
MyQGraphicsEllipseItem::~MyQGraphicsEllipseItem()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::SetCircleAttr(double x1, double y1, double width, double height)
|
|
|
|
|
{
|
|
|
|
|
m_circleX = x1 / 100.00;
|
|
|
|
|
m_circleY = y1 / 100.00;
|
|
|
|
|
m_diameter = width / 100.00;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
|
|
|
|
setPos(QPointF(x1, y1));
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ID
|
|
|
|
|
m_id = GlobalDefine::GetInstance()->GetItemId();
|
|
|
|
|
|
|
|
|
|
m_translteType = NONE;
|
|
|
|
|
|
|
|
|
|
m_backupDiameter = width / 100.00;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::SetCircleInterfaceAttr(double x1, double y1, double dia)
|
|
|
|
|
{
|
|
|
|
|
m_circleX = x1;
|
|
|
|
|
m_circleY = y1;
|
|
|
|
|
m_diameter = dia;//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB>
|
|
|
|
|
this->setRect(QRectF(0, 0, m_diameter * DIE_SCALE, m_diameter * DIE_SCALE));
|
|
|
|
|
setPos(QPointF(m_circleX * DIE_SCALE, m_circleY * DIE_SCALE));
|
|
|
|
|
this->setScale(m_initScale);
|
|
|
|
|
m_translteType = NONE;
|
|
|
|
|
m_backupDiameter = dia / 100.00;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
|
|
|
|
{
|
|
|
|
|
QGraphicsEllipseItem::paint(painter, option, widget);
|
|
|
|
|
|
|
|
|
|
QPen pen;
|
|
|
|
|
pen.setWidth(FEATURE_POINT_LINE_WIDTH);
|
|
|
|
|
painter->setPen(pen);
|
|
|
|
|
painter->setBrush(FEATURE_POINT_COLOR);
|
|
|
|
|
//Բ<><D4B2>
|
|
|
|
|
painter->drawEllipse(QPointF(rect().width() / 2, rect().width() / 2), FEATURE_POINT_SIZE / 5, FEATURE_POINT_SIZE / 5);
|
|
|
|
|
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ڰ<EFBFBD>ס<EFBFBD><D7A1>Ҫ<EFBFBD><D2AA><EFBFBD>ŵĵ<C5B5>
|
|
|
|
|
painter->drawEllipse(QPointF(rect().width() - 2, rect().width() / 2), FEATURE_POINT_SIZE / 5, FEATURE_POINT_SIZE / 5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
|
|
|
|
{
|
|
|
|
|
if (event->button() == Qt::LeftButton)
|
|
|
|
|
{
|
|
|
|
|
emit signal_select(m_id);
|
|
|
|
|
m_mousePressDownPos = event->scenePos();
|
|
|
|
|
|
|
|
|
|
if (abs(event->scenePos().x() - (m_circleX + m_diameter) * DIE_SCALE) <= FEATURE_POINT_SIZE &&
|
|
|
|
|
abs(event->scenePos().y() - (m_circleY + m_diameter / 2) * DIE_SCALE) <= FEATURE_POINT_SIZE)
|
|
|
|
|
{
|
|
|
|
|
m_translteType = SCALE;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_translteType = MOVE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
|
|
|
|
{
|
|
|
|
|
if (m_translteType == MOVE)
|
|
|
|
|
{
|
|
|
|
|
setPos(event->scenePos().x(), event->scenePos().y());
|
|
|
|
|
m_circleX = (double)this->scenePos().x() / 100.00;
|
|
|
|
|
m_circleY = (double)this->scenePos().y() / 100.00;
|
|
|
|
|
}
|
|
|
|
|
else if (m_translteType == SCALE)
|
|
|
|
|
{
|
|
|
|
|
auto& nowMouseCoord = event->scenePos();
|
|
|
|
|
double prop = ((double)event->scenePos().x() - (double)m_mousePressDownPos.x()) / 150.00;
|
|
|
|
|
double scaleNum = m_initScale + prop;
|
|
|
|
|
m_nowScale = scaleNum;
|
|
|
|
|
this->setScale(m_nowScale);
|
|
|
|
|
m_diameter = m_backupDiameter * scaleNum;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MyQGraphicsEllipseItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
|
|
|
|
{
|
|
|
|
|
if (m_translteType == SCALE) {
|
|
|
|
|
m_initScale = m_nowScale;
|
|
|
|
|
}
|
|
|
|
|
}
|