fix: Increase the auto locate animation frame rate.
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
namespace
|
||||
{
|
||||
const int BLINK_FREQUENCY = 18;
|
||||
const int XYWIDGET_WIDTH = 655;
|
||||
const int XYWIDGET_HEIGHT = 655;
|
||||
}
|
||||
|
||||
CoordinateXYWidget::CoordinateXYWidget(QWidget* aParent)
|
||||
@@ -18,13 +20,15 @@ CoordinateXYWidget::CoordinateXYWidget(QWidget* aParent)
|
||||
, mBlinking(false)
|
||||
, mBlinkFrequency(0)
|
||||
, mBlinkPoint(QPointF())
|
||||
, mBuffer()
|
||||
, mStopGradientEnd(0.05)
|
||||
{
|
||||
setFixedSize(655,655);
|
||||
setFixedSize(XYWIDGET_WIDTH, XYWIDGET_HEIGHT);
|
||||
connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::startAutoLocate, this, &CoordinateXYWidget::startFlash);
|
||||
connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::stopAutoLocate, this, &CoordinateXYWidget::stopFlash);
|
||||
connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::quitAutoLocate, this, &CoordinateXYWidget::quit);
|
||||
connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::autoLocateXYUpdated, this, &CoordinateXYWidget::setBlinkPoint);
|
||||
initBuffer();
|
||||
hide();
|
||||
}
|
||||
|
||||
@@ -33,6 +37,32 @@ CoordinateXYWidget::~CoordinateXYWidget()
|
||||
mTimer->stop();
|
||||
}
|
||||
|
||||
void CoordinateXYWidget::initBuffer()
|
||||
{
|
||||
QPen pen;
|
||||
pen.setWidth(2);
|
||||
pen.setColor(Qt::gray);
|
||||
pen.setStyle(Qt::SolidLine);
|
||||
for(int angle=5; angle<=365; angle+=5)
|
||||
{
|
||||
mBuffer[angle] = QPixmap(XYWIDGET_WIDTH, XYWIDGET_HEIGHT);
|
||||
mBuffer[angle].fill(Qt::transparent);
|
||||
QPainter bufferPainter(&mBuffer[angle]);
|
||||
bufferPainter.setRenderHint(QPainter::Antialiasing);
|
||||
bufferPainter.setPen(pen);
|
||||
|
||||
int w = XYWIDGET_WIDTH - 5;
|
||||
int h = XYWIDGET_HEIGHT - 5;
|
||||
QConicalGradient coniGrad(w/2,h/2,360-angle);
|
||||
coniGrad.setColorAt(0,QColor(0,0,0,255));
|
||||
coniGrad.setColorAt(0.05,QColor(0,170,255,255));
|
||||
coniGrad.setColorAt(1,QColor(0,0,0,255));
|
||||
coniGrad.setSpread(QGradient::ReflectSpread);
|
||||
bufferPainter.setBrush(coniGrad);
|
||||
bufferPainter.drawEllipse(this->rect().center(),w/2,h/2);
|
||||
}
|
||||
}
|
||||
|
||||
void CoordinateXYWidget::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
@@ -43,23 +73,28 @@ void CoordinateXYWidget::paintEvent(QPaintEvent *event)
|
||||
QPoint center = this->rect().center();
|
||||
QRect rect(center,QPoint(w,h));
|
||||
p.setRenderHint(QPainter::Antialiasing,true);
|
||||
|
||||
|
||||
QConicalGradient coniGrad(w/2,h/2,360-mAngle);
|
||||
coniGrad.setColorAt(0,QColor(0,0,0,255));
|
||||
coniGrad.setColorAt(0.05,QColor(0,170,255,255));
|
||||
coniGrad.setColorAt(mStopGradientEnd,QColor(0,0,0,255));
|
||||
coniGrad.setColorAt(1,QColor(0,0,0,255));
|
||||
coniGrad.setSpread(QGradient::ReflectSpread);
|
||||
p.setBrush(coniGrad);
|
||||
|
||||
QPen pen;
|
||||
pen.setWidth(2);
|
||||
pen.setColor(Qt::gray);
|
||||
pen.setStyle(Qt::SolidLine);
|
||||
p.setPen(pen);
|
||||
|
||||
p.drawEllipse(center,w/2,h/2);
|
||||
if(mStopGradientEnd < 1)
|
||||
{
|
||||
QConicalGradient coniGrad(w/2,h/2,360-mAngle);
|
||||
coniGrad.setColorAt(0,QColor(0,0,0,255));
|
||||
coniGrad.setColorAt(0.05,QColor(0,170,255,255));
|
||||
coniGrad.setColorAt(mStopGradientEnd,QColor(0,0,0,255));
|
||||
coniGrad.setColorAt(1,QColor(0,0,0,255));
|
||||
coniGrad.setSpread(QGradient::ReflectSpread);
|
||||
p.setBrush(coniGrad);
|
||||
p.drawEllipse(center,w/2,h/2);
|
||||
}
|
||||
else
|
||||
{
|
||||
p.drawPixmap(0,0, mBuffer[mAngle]);
|
||||
}
|
||||
p.setBrush(Qt::NoBrush);
|
||||
p.drawEllipse(center,w/2 - 100,h/2 - 100);
|
||||
pen.setColor(QColor(0, 224, 255, 255).lighter());
|
||||
p.setPen(pen);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define COORDINATEXYWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QMap>
|
||||
|
||||
class QTimer;
|
||||
|
||||
@@ -22,14 +23,15 @@ protected:
|
||||
private:
|
||||
void updateFlash();
|
||||
void updateStopFlash();
|
||||
void initBuffer();
|
||||
|
||||
private:
|
||||
int mAngle;
|
||||
QTimer* mTimer;
|
||||
bool mBlinking;
|
||||
int mBlinkFrequency;
|
||||
int mBlinkPointX;
|
||||
QPointF mBlinkPoint;
|
||||
QMap<int, QPixmap> mBuffer;
|
||||
|
||||
double mStopGradientEnd;
|
||||
};
|
||||
|
||||
@@ -36,6 +36,7 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
, mTabWidget(new QTabWidget(this))
|
||||
, mInitializWidget(new InitializeWidget(this))
|
||||
, mShutdownWidget(new ShutdownWidget(nullptr))
|
||||
, mScanPage(nullptr)
|
||||
, mTabInited(false)
|
||||
{
|
||||
mUI->setupUi(this);
|
||||
@@ -112,6 +113,9 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
|
||||
GUIErrorHandle::Default()->init();
|
||||
QApplication::setActiveWindow(centralWidget());
|
||||
//初始化耗时,提前初始化
|
||||
mScanPage = new ScanFormWidget(this);
|
||||
mScanPage->hide();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@@ -188,8 +192,8 @@ void MainWindow::initializeTabWidget()
|
||||
mTabWidget->insertTab(0,verifyForm, tr("Recon"));
|
||||
auto selectForm = new SelectFormWidget(this);
|
||||
mTabWidget->insertTab(0,selectForm, tr("Select"));
|
||||
auto scanForm = new ScanFormWidget(this);
|
||||
mTabWidget->insertTab(0,scanForm, tr("Scan"));
|
||||
//auto scanForm = new ScanFormWidget(this);
|
||||
mTabWidget->insertTab(0,mScanPage, tr("Scan"));
|
||||
|
||||
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ private:
|
||||
QTabWidget* mTabWidget;
|
||||
InitializeWidget* mInitializWidget;
|
||||
ShutdownWidget* mShutdownWidget;
|
||||
QWidget* mScanPage;
|
||||
|
||||
bool mTabInited;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user