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

Qt中圖片旋轉(zhuǎn)縮放操作的實現(xiàn)

 更新時間:2024年01月04日 10:18:28   作者:糯諾諾米團  
本文主要介紹了Qt中圖片旋轉(zhuǎn)縮放操作的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在我們開發(fā)過程中,難免會遇到加載圖片的問題,在上一個開發(fā)項目里我就遇到了圖片縮放的問題,所以,我決定將這一部分好好研究,記錄下來,希望對大家有幫助喲~

在講解之前,我們先看一看具體的展示效果,有沒有你需要的功能?如果有,那就繼續(xù)跟著我的思路走吧~

功能實現(xiàn)

具體的功能分成了兩類:旋轉(zhuǎn)、縮放

1:圖片加載

說到了圖片旋轉(zhuǎn),第一個需要講述的功能是:打開文件并加載圖片資源。效果圖右側(cè)是采用QLabel控件進行圖片加載。

打開文件并選擇指定圖片路徑這個功能就不用再過多說明了,前兩章節(jié)文章都有進行說明,只是采用了QFileDialog::getOpenFileName靜態(tài)函數(shù)。

在圖片加載功能中,唯一需要說明的是QLabel加載圖片資源,代碼如下:

m_qsPicturePath = qsFilePath;
QImage img(qsFilePath);
ui.labPng->setPixmap(QPixmap::fromImage(img));

代碼說明:

qsFilePath:讀取出來的選擇路徑,并將該字符串賦值給m_qsPicturePath進行記錄。

為什么要將該路徑進行賦值呢?

對于后續(xù)不同的功能,每改變一次都需要將QImage重新設(shè)置到QLabel控件中,當(dāng)前,也可以采取QImage作為成員變量,這里就隨意了。

接下來就重點講解旋轉(zhuǎn)以及縮放這兩個功能了。在Qt中實現(xiàn)二維轉(zhuǎn)換功能有兩種方式,分別是:QMatrix、QTransform兩個類。

在書本上介紹的時候一般都是以QMatrix類為主,實際上該類已經(jīng)過時了,提供它是為了保持舊源代碼的工作,并且強烈建議不要在新代碼中使用它。

This class is obsolete.It is provided to keep old source code working. We strongly advise against using it in new code

在相同實現(xiàn)功能的方式下,一般會采用QTransform類進行實現(xiàn)的。在Qt中QTransform是推薦的轉(zhuǎn)換類。

QTransform與QMatrix的區(qū)別

它是一個真正的3x3矩陣,允許透視變化。 QTransform的toAffine()方法允許將QTransform轉(zhuǎn)換為QMatrix,如果在矩陣上指定了透視圖轉(zhuǎn)換,那么轉(zhuǎn)換將導(dǎo)致數(shù)據(jù)丟失。

2:旋轉(zhuǎn)

首先我們先講述下旋轉(zhuǎn)功能是如何實現(xiàn)的。

在這個demo中,分別進行了4個角度的旋轉(zhuǎn),0°、90°、180°、270°

無論是哪個角度進行轉(zhuǎn)換,都采用QTranform::rotate函數(shù)實現(xiàn)的。

代碼展示:

QTransform transform;
transform.rotate(0);
QImage img(m_qsPicturePath);
img = img.transformed(transform);
ui.labPng->setPixmap(QPixmap::fromImage(img));

代碼解析:

QTransform::rotate()圍繞指定軸逆時針旋轉(zhuǎn)給定角度的坐標軸,并返回對矩陣的引用。

當(dāng)前的旋轉(zhuǎn)角度是°,大家在使用的時候可以根據(jù)自己的角度自行設(shè)置,只需要修改rotate的參數(shù)就可以了,參數(shù)角度是用度數(shù)表示的。

有一點需要注意的是:如果將QTransform用于小部件坐標中定義的點,旋轉(zhuǎn)方向?qū)⑹琼槙r針的,因為Y軸指向下方。

既然提到了QMatrix類,那么使用該類是如何實現(xiàn)的呢?

QMatrix matrix;
matrix.rotate(90);
QImage img(m_qsPicturePath);
img = img.transformed(matrix);
ui.labPng->setPixmap(QPixmap::fromImage(img));

3:縮放

代碼展示:

QTransform transform;
transform.scale(2, 2);
QImage img(m_qsPicturePath);
img = img.transformed(transform);
ui.labPng->setPixmap(QPixmap::fromImage(img));

代碼解析:

QTransform::scale()水平方向按sx和垂直方向按sy縮放坐標系統(tǒng),并返回對矩陣的引用。

對于scale的參數(shù),可以簡單的理解:想要實現(xiàn)放大功能,參數(shù)大于1,想要實現(xiàn)縮放功能,參數(shù)小于1

當(dāng)前例子代碼對圖片進行了兩倍放大,假設(shè)要是縮放,只需要設(shè)置成:transform.scale(0.5, 0.5);

注意:當(dāng)參數(shù)是(1,1)時,說明圖片既沒有放大也沒有縮小。

QMatrix的調(diào)用方式一致,只是類名換了,調(diào)用的參數(shù)名都是一致的,轉(zhuǎn)換角度那里已經(jīng)寫明了使用方式,這里就不再過多說明了。因為QMatrix是Qt中遺棄掉的功能,以后大家都使用QTransform類就可以了。

總結(jié)

到這里,旋轉(zhuǎn)縮放的功能就已經(jīng)實現(xiàn)了。

在這個小demo中,難度不大,最值得記錄的是使用哪個類進行操作,在Qt中QTranform的是被推薦的,只要好好讀懂類參數(shù),就能實現(xiàn)簡單的圖形轉(zhuǎn)換操作,如果有想要了解這兩個類的詳細說明的,下面我會把鏈接貼出來,具體的函數(shù)操作大家可以自行學(xué)些

QTransform類詳情

QMatrix類詳情

到此這篇關(guān)于Qt中圖片旋轉(zhuǎn)縮放操作的實現(xiàn)的文章就介紹到這了,更多相關(guān)Qt 圖片旋轉(zhuǎn)縮放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?shared_ptr智能指針reset()使用示例詳解

    C++?shared_ptr智能指針reset()使用示例詳解

    這篇文章主要為大家介紹了C++?shared_ptr智能指針reset()使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • C++模擬實現(xiàn)vector流程詳解

    C++模擬實現(xiàn)vector流程詳解

    這篇文章主要介紹了C++容器Vector的模擬實現(xiàn),Vector是一個能夠存放任意類型的動態(tài)數(shù)組,有點類似數(shù)組,是一個連續(xù)地址空間,下文更多詳細內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-08-08
  • c++利用windows函數(shù)實現(xiàn)計時示例

    c++利用windows函數(shù)實現(xiàn)計時示例

    這篇文章主要介紹了c++利用windows函數(shù)實現(xiàn)計時示例,需要的朋友可以參考下
    2014-05-05
  • C語言實現(xiàn)高精度加法

    C語言實現(xiàn)高精度加法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)高精度加法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++優(yōu)先級隊列的使用指南與模擬實現(xiàn)

    C++優(yōu)先級隊列的使用指南與模擬實現(xiàn)

    優(yōu)先級隊列是一種特殊的隊列,其中每個元素都有一個與之關(guān)聯(lián)的優(yōu)先級,優(yōu)先級較高的元素會在隊列中較早地被處理,而優(yōu)先級較低的元素會在后續(xù)處理,本文給大家介紹C++優(yōu)先級隊列的使用指南與模擬實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • C語言程序如何求學(xué)生總成績和平均成績

    C語言程序如何求學(xué)生總成績和平均成績

    這篇文章主要介紹了C語言程序如何求學(xué)生總成績和平均成績,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++設(shè)計模式編程中簡單工廠與工廠方法模式的實例對比

    C++設(shè)計模式編程中簡單工廠與工廠方法模式的實例對比

    這篇文章主要介紹了C++設(shè)計模式編程中簡單工廠與工廠方法模式的實例對比,文中最后對兩種模式的優(yōu)缺點總結(jié)也比較詳細,需要的朋友可以參考下
    2016-03-03
  • C語言代碼實現(xiàn)簡單三子棋游戲

    C語言代碼實現(xiàn)簡單三子棋游戲

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)簡單三子棋游戲,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言?指針數(shù)組進階詳解

    C語言?指針數(shù)組進階詳解

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-02-02
  • C++中std::conditional的使用說明

    C++中std::conditional的使用說明

    這篇文章主要介紹了C++中std::conditional的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

澄江县| 湘潭市| 成都市| 资阳市| 双流县| 延边| 通河县| 凯里市| 定州市| 黄陵县| 甘泉县| 萨迦县| 三明市| 普陀区| 祁连县| 曲沃县| 宝山区| 那坡县| 桦南县| 濮阳市| 光山县| 穆棱市| 四子王旗| 峡江县| 沾化县| 江油市| 监利县| 水富县| 宁津县| 治县。| 辽源市| 古蔺县| 汝阳县| 桓仁| 永济市| 晴隆县| 普兰店市| 营口市| 安岳县| 栾城县| 武穴市|