代码拉取完成,页面将自动刷新
同步操作将从 yupengDuan/GraphicsShape 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "gstempcanvaslayer.h"
#include "gscommondef.h"
#include <QDebug>
GsTempCanvasLayer::GsTempCanvasLayer(const QSizeF &size, QGraphicsObject *parent):
QGraphicsObject (parent),
m_size(size)
{
setCacheMode(DeviceCoordinateCache);
initCanvas();
}
GsTempCanvasLayer::~GsTempCanvasLayer()
{
SAFE_DELETE(m_pTempPainter);
SAFE_DELETE(m_pTempCanvas);
qDebug() << "--->>>Lynn<<<---" << __FUNCTION__;
}
void GsTempCanvasLayer::clear()
{
m_pTempCanvas->fill(Qt::transparent);
this->update();
}
QRectF GsTempCanvasLayer::boundingRect() const
{
return QRectF(0,0,m_size.width(),m_size.height());
}
void GsTempCanvasLayer::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->drawImage(0,0,*m_pTempCanvas);
}
void GsTempCanvasLayer::drawShape(GsShapeType type, QPointF p1, QPointF p2)
{
m_pTempCanvas->fill(Qt::transparent);
m_pTempPainter->setRenderHint(QPainter::Antialiasing, true);
m_pTempPainter->setCompositionMode(QPainter::CompositionMode_Source);
m_pTempPainter->setPen(QPen(Qt::red,3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
switch(type){
case Shape_Line:
m_pTempPainter->drawLine(p1,p2);
break;
case Shape_Rectange:
m_pTempPainter->drawRect(QRectF(p1,p2));
break;
case Shape_Circle:
m_pTempPainter->drawEllipse(p1.x(),p1.y(),
qAbs(p2.y() - p1.y()),
qAbs(p2.y() - p1.y()));
break;
case Shape_Oval:
m_pTempPainter->drawEllipse(QRectF(p1,p2));
break;
default:
break;
}
update();
}
void GsTempCanvasLayer::initCanvas()
{
m_pTempCanvas = new QImage(m_size.toSize(),QImage::Format_ARGB32_Premultiplied);
m_pTempCanvas->fill(Qt::transparent);
m_pTempPainter = new QPainter(m_pTempCanvas);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。