資源簡介
在Qt5中實現(xiàn)的雷達(dá)掃描效果,qt-5.5.1 下編譯通過,下載此項目后,在qt5中的項目位置修改路徑打開。僅提供一個模擬版本,后續(xù)使用可以自己開發(fā)。

代碼片段和文件信息
#include?“cradar.h“
#include?
#include?
#include?
#include?
#include
CRadar::CRadar(QWidget?*parent)?:?QWidget(parent)
{
????//初始化
????m_pieRotate?=?0;
????m_timerId?=?-1;
????m_nSpeed?=?50;
????m_points< ????m_pointsAlapha<<100<<100<<100<<100<<100;
????//啟動定時器
????m_timerId?=?startTimer(m_nSpeed);
????m_pointTimerId?=?startTimer(1200);
}
void?CRadar::paintEvent(QPaintEvent?*event)
{
????QPainter?painter(this);
????//抗鋸齒
????painter.setRenderHint(QPainter::Antialiasing);
????//背景
????painter.fillRect(rect()QColor(100100200));
????//邊長
????int?len?=?m_drawArea.width();
????//底盤(x軸、y軸和3個圓)
????painter.setPen(QPen(Qt::white));
????painter.drawLine(m_drawArea.topLeft()?+?QPoint(0len/2)m_drawArea.topRight()?+?QPoint(0len/2));
????painter.drawLine(m_drawArea.topLeft()?+?QPoint(len/20)m_drawArea.bottomLeft()?+?QPoint(len/20));
????painter.drawEllipse(m_drawArea.center()len/2len/2);
????painter.drawEllipse(m_drawArea.center()len/3len/3);
????painter.drawEllipse(m_drawArea.center()len/6len/6);
????//轉(zhuǎn)動部分
????????//---//線
????qreal?x?=?m_drawArea.center().x()?+?(qreal)len/2?*?cos(-m_pieRotate*3.14159/180);
????qreal?y?=?m_drawArea.center().y()?+?(qreal)len/2?*?sin(-m_pieRotate*3.14159/180);
????painter.setPen(QPen(Qt::white));
????painter.drawLine(m_drawArea.center()QPointF(xy));
???????//----//扇形
????QConicalGradient?gradient;
????gradient.setCenter(m_drawArea.center());
????gradient.setAngle(m_pieRotate?+?180);?//漸變與旋轉(zhuǎn)方向恰好相反,以扇形相反的邊作為漸變角度。
????gradient.setColorAt(0.4QColor(255255255100));?//從漸變角度開始0.5?-?0.75為扇形區(qū)域,由于Int類型計算不精確,將范圍擴大到0.4-0.8
????gradient.setColorAt(0.8QColor(2552552550));
????painter.setBrush(QBrush(gradient));
????painter.setPen(Qt::NoPen);
????painter.drawPie(m_drawAream_pieRotate*1690*16);
????//裝飾-隨機點
????for(int?i?=?0;?i?????{
????????int?colorAlaph?=?m_pointsAlapha.at(i);
????????painter.setPen(QPen(QColor(255255255colorAlaph)3));
????????painter.drawPoint(m_points.at(i));
????}
????//更詳細(xì)解釋參考:http://fearlazy.com/index.php/post/31.html
}
void?CRadar::resizeEvent(QResizeEvent?*event)
{
????//以較短的邊長作為繪制區(qū)域邊長
????if(width()?>?height())
????{
????????m_drawArea?=?QRect((width()?-?height())/20height()height());
????}
????else
????{
????????m_drawArea?=?QRect(0(height()?-?width())/2width()width());
????}
????m_drawArea.adjust(1010-10-10);
}
void?CRadar::timerEvent(QTimerEvent?*event)
{
????if(m_timerId?==?event->timerId())
????{
????????m_pieRotate?-=?10;
????????update();
????}
????else?if(m_pointTimerId?==?event->timerId())
????{
????????//隨機更換裝飾的點
????????for(int?i?=?0;?i?????????{
????????????int?offsetX?=?rand()%m_drawArea.width();
????????????int?offsetY?=?rand()%m_drawArea.width();
????????????int?alapha?=?rand()%255;
???????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3401??2018-09-17?20:30??CRadar\cradar.cpp
?????文件????????998??2018-09-17?20:21??CRadar\cradar.h
?????文件????????401??2018-09-17?19:52??CRadar\CRadar.pro
?????文件??????18700??2018-09-17?20:40??CRadar\CRadar.pro.user
?????文件????????175??2018-09-17?19:50??CRadar\main.cpp
?????文件????????250??2018-09-17?20:11??CRadar\widget.cpp
?????文件????????273??2018-09-17?20:14??CRadar\widget.h
?????文件????????441??2018-09-17?19:50??CRadar\widget.ui
?????目錄??????????0??2018-09-17?20:40??CRadar
-----------?---------??----------?-----??----
????????????????24639????????????????????9
- 上一篇:網(wǎng)盤地址.txt
- 下一篇:MC1496同步檢波PCB
評論
共有 條評論