Qt如何實現(xiàn)基礎(chǔ)圖形繪制-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Qt如何實現(xiàn)基礎(chǔ)圖形繪制”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Qt如何實現(xiàn)基礎(chǔ)圖形繪制”這篇文章吧。

創(chuàng)新互聯(lián)公司是專業(yè)的陽高網(wǎng)站建設(shè)公司,陽高接單;提供做網(wǎng)站、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行陽高網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

一.基礎(chǔ)圖形繪制

A.Qt圖形系統(tǒng)中的關(guān)鍵角色
QPainter--Qt中的畫家,能夠繪制各種基礎(chǔ)圖形 ,擁有繪圖所需的畫筆、畫刷、字體
QPaintDevice--Qt中的畫布,畫家的繪圖板,所有的QWidget類都繼承自QPaintDevice
Qt圖形系統(tǒng)中的關(guān)鍵角色
Qt如何實現(xiàn)基礎(chǔ)圖形繪制
Qt中所使用的工具
1.QPen-用于繪制幾何圖形的邊緣,由顏色、寬度、線風(fēng)格等參數(shù)組成
2.QBrush-用于填充幾何圖形的調(diào)色板,由顏色和填充風(fēng)格組成
3.QFont-用于文本繪制,由字體屬性組成
Qt如何實現(xiàn)基礎(chǔ)圖形繪制
需要注意的是--只能在QWidget::paintEvent中繪制圖形
Qt如何實現(xiàn)基礎(chǔ)圖形繪制
B.Qt圖形系統(tǒng)中的坐標(biāo)系
1.物理坐標(biāo)系--原點(0,0)在左上角的位置,單位是像素并且X坐標(biāo)向右增長,Y坐標(biāo)向下增長
2.邏輯坐標(biāo)系--數(shù)學(xué)模型中的抽象坐標(biāo)系,單位由具體問題決定,坐標(biāo)軸的增長方向由具體問題決定
我們需要注意的是QPainter使用邏輯坐標(biāo)系繪制圖形,邏輯坐標(biāo)系中圖形的大小和位置經(jīng)由轉(zhuǎn)換后繪制于具體設(shè)備,且在默認(rèn)情況下的邏輯坐標(biāo)與物理坐標(biāo)系完全一致
C.視口與窗口
1.視口--物理坐標(biāo)系中一個任意指定的矩形
2.窗口--邏輯坐標(biāo)系下對應(yīng)到物理坐標(biāo)系中的相同矩形
深入理解視口與窗口
1.視口與窗口是不同坐標(biāo)系中的同一個矩形
2.視口與窗口中的坐標(biāo)點存在一一映射的關(guān)系
3.視口與窗口能夠通過坐標(biāo)轉(zhuǎn)換而相互轉(zhuǎn)換
Qt如何實現(xiàn)基礎(chǔ)圖形繪制Qt如何實現(xiàn)基礎(chǔ)圖形繪制
視口與窗口的變換方法
1.定義視口--左上角坐標(biāo),右下角坐標(biāo),計算寬度和高度
2.定義窗口--左上角坐標(biāo),右下角坐標(biāo),計算寬度和高度
代碼示例

Widget.cpp
#include "Widget.h"
#include <QPainter>
#include <QPointF>
#include <QPen>
#include <qmath.h>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}

void Widget::paintEvent(QPaintEvent *)
{
    //繪圖工具的基本設(shè)置
    QPainter painter(this);
    QPen pen;

    pen.setColor(Qt::green);
    pen.setStyle(Qt::SolidLine);
    pen.setWidthF(0.01);

    painter.setPen(pen);

    painter.setViewport(50, 50, width()-100, height()-100);//視圖
    painter.setWindow(-10, 2, 20, -4); //窗口

    painter.fillRect(-10, 2, 20, -4, Qt::black);

    painter.drawLine(QPointF(-10, 0), QPointF(10, 0));   // x
    painter.drawLine(QPointF(0, 2), QPointF(0, -2));     // y

    for(float x=-10; x<10; x+=0.01)
    {
        float y = qSin(x);

        painter.drawPoint(QPointF(x, y));
    }

}

Widget::~Widget()
{

}

運行結(jié)果如圖所示
Qt如何實現(xiàn)基礎(chǔ)圖形繪制
C.實例實現(xiàn)--簡單的繪圖程序
我們需要的功能--自由的繪制圖形,并且能夠選擇圖形繪制顏色
a.界面的選擇
1.以QWidget為基類創(chuàng)建繪圖主窗口
2.使用QGroupBox創(chuàng)建圖形設(shè)置區(qū)域
3.使用單選QRadioBox實現(xiàn)目標(biāo)圖形的選擇
4.使用組合框QCombox實現(xiàn)繪圖顏色的選擇
b.自由繪圖的主要實現(xiàn)
1.以鼠標(biāo)按下為開始,記錄開始坐標(biāo)--mousePressEvent
2.記錄鼠標(biāo)移動時經(jīng)過的像素坐標(biāo)--mouseMoveEvent
3.以鼠標(biāo)釋放為結(jié)束,記錄坐標(biāo)--mouseReleaseEvent
4.按照記錄順序在兩兩坐標(biāo)之間繪制直線--painEevent
c.基礎(chǔ)圖形的繪制與自由繪圖類似
1.以鼠標(biāo)按下為開始,記錄開始坐標(biāo)--mousePressEvent
2.將鼠標(biāo)移動時經(jīng)過的每個坐標(biāo)作為臨時結(jié)束坐標(biāo)--mouseMoveEvent
3.以鼠標(biāo)釋放為結(jié)束,確定最終結(jié)束坐標(biāo)--mouseReleaseEvent
4.在開始坐標(biāo)和結(jié)束坐標(biāo)之間繪制目標(biāo)圖形--painEevent
實現(xiàn)的程序運行圖如下
Qt如何實現(xiàn)基礎(chǔ)圖形繪制Qt如何實現(xiàn)基礎(chǔ)圖形繪制


以上是“Qt如何實現(xiàn)基礎(chǔ)圖形繪制”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:Qt如何實現(xiàn)基礎(chǔ)圖形繪制-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article6/dooeig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、營銷型網(wǎng)站建設(shè)網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計公司、電子商務(wù)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作