国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt | 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可以轉(zhuǎn)動(dòng)的儀表盤

這篇具有很好參考價(jià)值的文章主要介紹了Qt | 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可以轉(zhuǎn)動(dòng)的儀表盤。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

環(huán)境:vs2017+Qt5.14.2


效果圖:

Qt | 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可以轉(zhuǎn)動(dòng)的儀表盤


準(zhǔn)備工作:
效果圖中的可以轉(zhuǎn)動(dòng)的儀表盤效果分為三個(gè)部分:

  1. 背景圖(就是帶去掉中間白色原點(diǎn),去掉中間藍(lán)色指針省下的部分);
  2. 指針圖片(中間藍(lán)色的指針部分,不包括指針上的白色圓點(diǎn));
  3. 原點(diǎn)圖片(中間白色的圓點(diǎn))

原理:
在paintEvent()中繪制這三張圖片。當(dāng)需要旋轉(zhuǎn)指針的角度時(shí),改變指針圖片的角度,再調(diào)用update()函數(shù)重新繪制顯示就可以了。


具體實(shí)現(xiàn):
1. 定義旋轉(zhuǎn)角度成員變量:int m_nValue;//指針旋轉(zhuǎn)角度。
2. 重載paintEvent()函數(shù)。
3. 加載三張圖片。
QPixmap img = QPixmap(":/image/banhuan.png");
QPixmap needle = QPixmap(":/image/zhizhen.png");
QPixmap overlay = QPixmap(":/image/zhizhenyuan.png");
4. 在paintEvent()函數(shù)中進(jìn)行繪制。

void CDialBox::paintEvent(QPaintEvent *event)
{
     QPainter painter(this);
     painter.save();//保存
     painter.setRenderHint(QPainter::SmoothPixmapTransform, true); //平滑像素圖,防止圖形走樣
     painter.translate(this->width() / 2, this->height() / 2); // 原點(diǎn)定位在中間位置
     // 背景圖
     painter.drawPixmap(-img->width() / 2, -img->height() / 2, img);
     // 指針圖
     painter.rotate(m_nValue);//設(shè)置旋轉(zhuǎn)角度
     painter.drawPixmap(-needle.width() / 2, -needle.height() + needle.width() / 2, needle);
     //原點(diǎn)圖
     painter.drawPixmap(-overlay.width() / 2, -overlay.height() / 2, overlay);
     painter.restore();//恢復(fù) 
}
  • 其中:painter.save();painter.restore();為保存QPainter當(dāng)前的狀態(tài)和恢復(fù)QPainter當(dāng)前的狀態(tài)。這里使用這兩個(gè)函數(shù)主要是服務(wù)于painter.translate()函數(shù)的。
  • 因?yàn)閜ainter.translate(x, y)函數(shù)用來(lái)設(shè)置當(dāng)前QPainter的相對(duì)坐標(biāo)。正常QPainter的坐標(biāo)原點(diǎn)(0,0)在屏幕的左上角,調(diào)用painter.translate(x, y)函數(shù),會(huì)將原點(diǎn)設(shè)置為指定的(x,y)的位置,也就是說(shuō)屏幕的(x,y)為QPainter畫(huà)布的(0,0)位置。
  • 為了防止畫(huà)布上的圖片有縮放或拉伸導(dǎo)致的圖像走形,可以調(diào)用painter.setRenderHint(QPainter::SmoothPixmapTransform, true);來(lái)進(jìn)行平滑設(shè)置。
  • 在繪制圖形時(shí)順序很重要,先調(diào)用painter.drawPixmap()函數(shù)進(jìn)行繪制的圖形在最下面,后面調(diào)用的會(huì)覆蓋在之前的圖形之上,所以根據(jù)效果圖,應(yīng)該先繪制背景圖片,再繪制指針圖片,最后繪制原點(diǎn)圖片。
  • 因?yàn)榇藭r(shí)原點(diǎn)(0,0)的位置在效果圖的最中間位置,所以繪制背景圖時(shí)的(x,y)應(yīng)該為(-img->width() / 2, -img->height() / 2);
  • 指針圖的X值為負(fù)的寬度的一半,Y值為負(fù)的高度的值加上寬度的一半。 調(diào)用painter.rotate()函數(shù)是用來(lái)將畫(huà)布以坐標(biāo)原點(diǎn)為中心進(jìn)行順時(shí)針旋轉(zhuǎn)指定的角度。所以定義一個(gè)成員變量來(lái)給這個(gè)角度進(jìn)行傳值。
    原點(diǎn)圖的(x,y)應(yīng)該為(-overlay.width() / 2, -overlay.height() / 2);


5.改變指針角度
定義一個(gè)改變指針角度值的函數(shù)void valueChanged(int value);

void CDialBox::valueChanged(int value) 
{
     m_nValue = value;
     update();
}

設(shè)置角度的值,調(diào)用update()函數(shù)進(jìn)行刷新。調(diào)用update();函數(shù)會(huì)執(zhí)行paintEvent();

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-431140.html

到了這里,關(guān)于Qt | 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可以轉(zhuǎn)動(dòng)的儀表盤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Qt+C++自定義控件儀表盤動(dòng)畫(huà)仿真

    Qt+C++自定義控件儀表盤動(dòng)畫(huà)仿真

    程序示例精選 Qt+C++自定義控件儀表盤動(dòng)畫(huà)仿真 如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見(jiàn)文章底部個(gè)人 QQ 名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助! 這篇博客針對(duì)Qt+C++自定義控件儀表盤動(dòng)畫(huà)仿真編寫(xiě)代碼,代碼整潔,規(guī)則,易讀。 學(xué)習(xí)與應(yīng)用推薦首選。 一、所需工具軟件 二、使用步驟 ?

    2024年02月12日
    瀏覽(17)
  • 【監(jiān)控儀表系統(tǒng)】Grafana 中文入門教程 | 構(gòu)建你的第一個(gè)儀表盤

    【監(jiān)控儀表系統(tǒng)】Grafana 中文入門教程 | 構(gòu)建你的第一個(gè)儀表盤

    Grafana 讀音:/gr??fɑ?n?ɑ?/ 在大廠工作久了,時(shí)常對(duì)一些工具的存在覺(jué)得理所當(dāng)然。 比如說(shuō),需要計(jì)算資源的時(shí)候,一個(gè)配置文件就可以要來(lái)兩百臺(tái)虛擬化好的機(jī)子。需要試下緩存?點(diǎn)下鼠標(biāo)就可以要到幾十個(gè)配置好的 Redis 結(jié)點(diǎn)。 最省心的是,這些工具都已經(jīng)根據(jù)工作流

    2024年02月02日
    瀏覽(26)
  • [譯]使用Python和Dash 創(chuàng)建一個(gè)儀表盤(上)

    [譯]使用Python和Dash 創(chuàng)建一個(gè)儀表盤(上)

    在數(shù)據(jù)科學(xué)和分析的領(lǐng)域,數(shù)據(jù)能力的釋放不僅是通過(guò)提取見(jiàn)解的方式, 同時(shí)也要能通過(guò)有效的方式來(lái)傳達(dá)見(jiàn)解.這就是數(shù)據(jù)可視化發(fā)揮見(jiàn)解的地方. 數(shù)據(jù)可視化是信息和數(shù)據(jù)的可視化呈現(xiàn). 它使用可視化元素,如圖表、圖形、地圖,使其更容易看懂原始數(shù)據(jù)中的模式、趨勢(shì)及異常值

    2024年02月16日
    瀏覽(43)
  • ChatGPT實(shí)現(xiàn)儀表盤生成

    ChatGPT實(shí)現(xiàn)儀表盤生成

    Grafana是開(kāi)源社區(qū)最流行的數(shù)據(jù)可視化軟件,一定程度上也和 superset 一起被視為 tableau 等商業(yè) BI 的開(kāi)源替代品,很多IT 團(tuán)隊(duì)、科研團(tuán)隊(duì),都會(huì)使用 Grafana 來(lái)做數(shù)據(jù)監(jiān)控、挖掘分析。Grafana社區(qū)也有很多貢獻(xiàn)者,在 github 上分享自己針對(duì)不同場(chǎng)景制作的數(shù)據(jù)分析儀表盤效果和配置

    2024年02月02日
    瀏覽(17)
  • 微信小程序?qū)崿F(xiàn)帶刻度簡(jiǎn)易儀表盤

    微信小程序?qū)崿F(xiàn)帶刻度簡(jiǎn)易儀表盤

    實(shí)現(xiàn)如圖樣式的儀表盤,要求分?jǐn)?shù)向下取整、進(jìn)度精確展示。 1、首先畫(huà)出環(huán)形進(jìn)度條,通過(guò)大圓包小圓的方式實(shí)現(xiàn):大圓(circle1)背景淺色,小圓(circle2)背景白色 2、在小圓內(nèi)部畫(huà)刻度,根據(jù)UI圖確認(rèn)一共有12個(gè)刻度,其中長(zhǎng)短刻度交叉顯示(如圖), 定義一個(gè)長(zhǎng)度為1

    2024年02月11日
    瀏覽(17)
  • 界面控件DevExpress WPF Gauge組件 - 輕松實(shí)現(xiàn)個(gè)性化商業(yè)儀表盤

    界面控件DevExpress WPF Gauge組件 - 輕松實(shí)現(xiàn)個(gè)性化商業(yè)儀表盤

    DevExpress WPF Gauge(儀表)控件包含了多種圓形儀表類型、水平和垂直線性儀表、分段和矩陣數(shù)字儀表以及狀態(tài)指示器,同時(shí)還具有最終用戶交互性的集成支持。 P.S :DevExpress WPF擁有120+個(gè)控件和庫(kù),將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過(guò)DevExpress WPF能

    2024年02月06日
    瀏覽(23)
  • 如何在CentOS7搭建DashDot服務(wù)器儀表盤并實(shí)現(xiàn)遠(yuǎn)程監(jiān)控

    如何在CentOS7搭建DashDot服務(wù)器儀表盤并實(shí)現(xiàn)遠(yuǎn)程監(jiān)控

    本篇文章我們將使用Docker在本地部署DashDot服務(wù)器儀表盤,并且結(jié)合cpolar內(nèi)網(wǎng)穿透工具可以實(shí)現(xiàn)公網(wǎng)實(shí)時(shí)監(jiān)測(cè)服務(wù)器系統(tǒng)、處理器、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)、顯卡等,并且擁有API接口。 DashDot是一款簡(jiǎn)單、實(shí)用的開(kāi)源現(xiàn)代服務(wù)器儀表盤,主要應(yīng)用于小型 VPS 和私人服務(wù)器(比如說(shuō)N

    2024年03月16日
    瀏覽(24)
  • 新版Grafana儀表盤

    新版Grafana儀表盤

    一 Grafana 是什么 ????????Grafana 是一個(gè)開(kāi)源的指標(biāo)量監(jiān)測(cè)和可視化工具,常用于展示基礎(chǔ)設(shè)施的時(shí)序數(shù)據(jù)和應(yīng)用 程序運(yùn)行分析。 ????????官網(wǎng)指路: https://grafana.com/ ????????與前文相關(guān)的兩個(gè)概念: ????????1)數(shù)據(jù)源(Datasource):定義了將用方式來(lái)查詢數(shù)據(jù)展

    2024年02月13日
    瀏覽(25)
  • echarts繪制儀表盤

    echarts繪制儀表盤

    ?代碼展示:

    2024年02月13日
    瀏覽(26)
  • Grafana增加儀表盤

    Grafana增加儀表盤

    grafana 是一款采用Go語(yǔ)言編寫(xiě)的開(kāi)源應(yīng)用,主要用于大規(guī)模指標(biāo)數(shù)據(jù)的可視化展現(xiàn),是網(wǎng)絡(luò)架構(gòu)和應(yīng)用分析中最流行的時(shí)序數(shù)據(jù)展示工具,目前已經(jīng)支持絕大部分常用的時(shí)序數(shù)據(jù)庫(kù)。 Grafana下載地址:https://grafana.com/grafana/download Grafana儀表盤模板下載地址:https://grafana.com/grafa

    2024年02月04日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包