最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Qt繪制雷達(dá)掃描效果

 更新時(shí)間:2023年04月04日 09:28:56   作者:Keep apart  
這篇文章主要為大家詳細(xì)介紹了如何利用Qt繪制簡(jiǎn)單的雷達(dá)掃描效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下

話不多說(shuō)直接上代碼,代碼規(guī)范性可能差了點(diǎn),但是效果得以實(shí)現(xiàn),在這里記錄一下。

scan.h的代碼如下

#ifndef SCAN_H
#define SCAN_H

#include <QWidget>
#include <QPainter>
#include <QTime>
#include <QTimer>
#include <QDebug>
#include <QPoint>
#include <QtMath>

namespace Ui {
class Scan;
}
class Scan : public QWidget
{
    Q_OBJECT
public:
    explicit Scan(QWidget *parent = nullptr);
    ~Scan();
public slots:
   void timerTimeOut();
protected:
   void paintEvent(QPaintEvent *event) override;
private slots:
   void on_pushButton_clicked();
private:
    Ui::Scan *ui;
};
#endif // SCAN_H

scan.cpp的代碼如下

#include "scan.h"
#include "ui_scan.h"
QTimer *timer = new QTimer();
int m_angle=0;
int alpha=0;
double cir_size=5;
Scan::Scan(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Scan)
{
    ui->setupUi(this);
    setPalette(Qt::black); setAutoFillBackground(true);//強(qiáng)制設(shè)置背景顏色為黑色
    connect(timer,SIGNAL(timeout()),this,SLOT(timerTimeOut()));//用槽函數(shù)控制雷達(dá)掃描效果。
    timer->start(10);


}

Scan::~Scan()
{
    delete ui;
}

void Scan::timerTimeOut()
{
    timer->start(10);
    if(m_angle<-360){
        m_angle=0;
    }//實(shí)現(xiàn)無(wú)縫連接,且保證m_angle的值不會(huì)溢出
    if(alpha>=255){
        alpha = 0;
    }
    if(cir_size>10){
        cir_size=5;
    }
    update();
}
void Scan::paintEvent(QPaintEvent *event)//此函數(shù)自動(dòng)執(zhí)行,實(shí)現(xiàn)掃描動(dòng)畫效果
{
    Q_UNUSED(event);
    QPainter painter(this);
    QPen pen;
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(QPen(qRgba(128, 255, 0,250)));

    //網(wǎng)格改成坐標(biāo)系
    int x=280;//原本為240,右移40,下移60
    int y=300;
    /** 直徑按照480處理 每隔40px畫一個(gè)圓 繪制雷達(dá)圖**/
    QPoint center(x,y);
    painter.drawEllipse(center,240,240);
    painter.drawEllipse(center,240-48,240-48);
    painter.drawEllipse(center,240-96,240-96);
    painter.drawEllipse(center,240-144,240-144);
    painter.drawEllipse(center,240-192,240-192);
    /** 畫外圈刻度值,將坐標(biāo)系移動(dòng)到圓心 **/
    painter.translate(x,y);
    painter.setPen(QPen(qRgba(255, 255, 0,250)));
    painter.setFont(QFont("Calibri",10));
    for(int i=1;i<=360;i++){
           painter.rotate(1);
           painter.drawLine(0,-240,0,-235);
    }
    for(int i=1;i<=72;i++){
        painter.rotate(5);
        painter.drawLine(0,-240,0,-232);
    }
    for(int i=1;i<=36;i++){
        painter.setRenderHint(QPainter::Antialiasing);
        painter.rotate(10);
        painter.drawLine(0,-240,0,-228);
    }
    for(int i=1;i<=4;i++){
        painter.rotate(90);
        painter.drawLine(0,-240,0,-168);
    }
    painter.translate(-x,-y);//恢復(fù)坐標(biāo)系
   /** 繪制掃描效果 **/
    QConicalGradient gradient(x, y, m_angle + 360);
    gradient.setColorAt(0.1, QColor(128, 255, 0, 150));
    gradient.setColorAt(0.7, QColor(0, 255, 0, 0));//尾部
    painter.setBrush(gradient);
    painter.setPen(QPen(Qt::NoPen));//去掉外框線
    if (width() > height()){
        painter.drawPie(40, 60, 480, 480, m_angle * 16, 360 * 16);
    }
    else{ painter.drawPie(40, 60, 480, 480, m_angle * 16, 360 * 16);}
    
    m_angle -= 1;//每次旋轉(zhuǎn)1度
    alpha +=2;
    cir_size+=0.01;

    //模擬畫出可疑點(diǎn)
    painter.setBrush(QBrush(QColor(50, 255, 200,alpha)));
    painter.drawEllipse(0,0,15,15);
    painter.drawEllipse(60+120,60+161,cir_size,cir_size);
    painter.drawEllipse(60+240,60+161,cir_size,cir_size);
    painter.drawEllipse(60+300,60+300,cir_size,cir_size);
    painter.setBrush(QBrush(QColor(50, 255, 200,(alpha+50)%255)));
    painter.drawEllipse(60+160,60+121,cir_size,cir_size);
    painter.drawEllipse(60+60,60+191,cir_size,cir_size);
    painter.drawEllipse(60+260,60+221,cir_size,cir_size);
    painter.setBrush(QBrush(QColor(50, 255, 200,(alpha+100)%255)));
    painter.drawEllipse(60+210,60+181,cir_size,cir_size);
    painter.drawEllipse(60+10,60+281,cir_size,cir_size);
    painter.drawEllipse(60+100,60+81,cir_size,cir_size);
 

}




void Scan::on_pushButton_clicked()
{
    m_angle=0;//將掃描動(dòng)畫重置并刷新數(shù)據(jù),后面要將數(shù)據(jù)刷新的函數(shù)寫在下面。
}

效果圖,雷達(dá)右上角的圖標(biāo)對(duì)應(yīng)著on_pushButton的點(diǎn)擊事件

到此這篇關(guān)于利用Qt繪制雷達(dá)掃描效果的文章就介紹到這了,更多相關(guān)Qt雷達(dá)掃描內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼

    Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼

    色輪圖就是色彩相位圖,它完整表現(xiàn)了色相環(huán)360度的全部顏色。本文將利用Matlab語(yǔ)言繪制四種不同的HSV色輪圖,感興趣的可以動(dòng)手嘗試一下
    2022-07-07
  • C語(yǔ)言經(jīng)典指針筆試題詳解

    C語(yǔ)言經(jīng)典指針筆試題詳解

    今天博主來(lái)講解4道經(jīng)典的指針筆試題,很多朋友沒(méi)有深刻理解函數(shù)傳參知識(shí)都會(huì)在這些題目上出錯(cuò),下面話不多說(shuō),我們開(kāi)始
    2021-10-10
  • 用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序

    用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序

    大家好,本篇文章主要講的是用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序,感興趣的同學(xué)趕緊來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 深入分析C語(yǔ)言中結(jié)構(gòu)體指針的定義與引用詳解

    深入分析C語(yǔ)言中結(jié)構(gòu)體指針的定義與引用詳解

    本篇文章是對(duì)C語(yǔ)言中結(jié)構(gòu)體指針的定義與引用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++右值引用與移動(dòng)構(gòu)造函數(shù)基礎(chǔ)與應(yīng)用詳解

    C++右值引用與移動(dòng)構(gòu)造函數(shù)基礎(chǔ)與應(yīng)用詳解

    左值和右值都是針對(duì)表達(dá)式,左值是指表達(dá)式結(jié)束后依然存在的持久對(duì)象,右值是指表達(dá)式結(jié)束時(shí)就不再存在的臨時(shí)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于C++11右值引用和移動(dòng)語(yǔ)義的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C語(yǔ)言用easyx實(shí)現(xiàn)消磚塊游戲

    C語(yǔ)言用easyx實(shí)現(xiàn)消磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言消磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語(yǔ)言程序中結(jié)構(gòu)體的內(nèi)存對(duì)齊詳解

    C語(yǔ)言程序中結(jié)構(gòu)體的內(nèi)存對(duì)齊詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言程序中結(jié)構(gòu)體的內(nèi)存對(duì)齊的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2022-11-11
  • C語(yǔ)言入門篇--充分理解操作符

    C語(yǔ)言入門篇--充分理解操作符

    本篇文章是基礎(chǔ)篇,適合c語(yǔ)言剛?cè)腴T的朋友,本文主要介紹了c語(yǔ)言的操作符基礎(chǔ)理論,希望可以幫助大家快速入門c語(yǔ)言的世界,更好的理解c語(yǔ)言
    2021-08-08
  • c語(yǔ)言枚舉類型enum的用法及應(yīng)用實(shí)例

    c語(yǔ)言枚舉類型enum的用法及應(yīng)用實(shí)例

    enum是C語(yǔ)言中的一個(gè)關(guān)鍵字,enum叫枚舉數(shù)據(jù)類型,枚舉數(shù)據(jù)類型描述的是一組整型值的集合,這篇文章主要給大家介紹了關(guān)于c語(yǔ)言枚舉類型enum用法及應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • C++的內(nèi)聯(lián)函數(shù)你了解嗎

    C++的內(nèi)聯(lián)函數(shù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的內(nèi)聯(lián)函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03

最新評(píng)論

昌图县| 上高县| 宁乡县| 庆安县| 珠海市| 南阳市| 河间市| 囊谦县| 青河县| 丹寨县| 南阳市| 钟山县| 潼南县| 万荣县| 华池县| 德安县| 泾川县| 盐山县| 永清县| 抚顺县| 育儿| 云阳县| 镇远县| 馆陶县| 天长市| 三门峡市| 繁峙县| 山东省| 宜兰县| 娱乐| 阜城县| 万全县| 轮台县| 泽普县| 庐江县| 天全县| 漳浦县| 云和县| 陵川县| 墨脱县| 尤溪县|