日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

4.QPixmap,QTransform,绘图函数的使用

發(fā)布時(shí)間:2024/9/27 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4.QPixmap,QTransform,绘图函数的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  • 新建一個(gè)項(xiàng)目Painter

  • MyWidget.h

    #ifndef MYWIDGET_H

    #define MYWIDGET_H

    ?

    #include <QWidget>

    ?

    class MyWidget : public QWidget

    {

    ??? Q_OBJECT

    public:

    ??? explicit MyWidget(QWidget *parent = 0);

    ??? void paintEvent(QPaintEvent *);

    ?

    signals:

    ?

    public slots:

    ?

    };

    ?

    #endif // MYWIDGET_H

    MyWidget.cpp

    #include "MyWidget.h"

    #include <QPainter>

    #include <QPixmap>

    #include <QApplication>

    ?

    MyWidget::MyWidget(QWidget *parent) :

    ??? QWidget(parent)

    {

    }

    ?

    void MyWidget::paintEvent(QPaintEvent *)

    {

    ??? QPixmap pixmap(size());

    ?

    ??? QPainter p(&pixmap);

    ?

    ??? //p.translate(100, 100);

    ??? //p.scale();

    ??? //消除鋸齒

    ??? p.setRenderHint(QPainter::Antialiasing);

    ??? //轉(zhuǎn)換

    ??? QTransform transform;

    ??? transform.translate(50,50);

    ??? //旋轉(zhuǎn)30

    ??? transform.rotate(30);

    ?? // transform.scale(.5, .5);

    ??? p.setTransform(transform);

    #if 1

    ??? //下面的transform可以覆蓋上面的一個(gè)transform的效果

    ??? QTransform transform2;

    ??? //對(duì)整個(gè)效果進(jìn)行縮放

    ??? transform2.scale(.5, .5);

    ??? //最后一個(gè)參數(shù)實(shí)現(xiàn)和上面一個(gè)transform實(shí)現(xiàn)組合

    ??? p.setTransform(transform2, true);

    #endif

    ??? //通過(guò)兩個(gè)點(diǎn)實(shí)現(xiàn)畫線

    ??? p.drawLine(QPoint(0, 0), QPoint(100, 100));

    ?

    ??? //p.translate(-100, -100);

    ??? //鋼筆

    ??? p.setPen(QPen(Qt::red, 2, Qt::DashLine));

    ??? //使用刷子

    ??? p.setBrush(Qt::yellow);

    ??? //設(shè)置刷子

    ??? p.setFont(QFont("aaa", 40, 700, true));

    ?

    ??? p.drawEllipse(QPoint(95, 333), 50, 50);

    ??? //里面寫上文字

    ??? p.drawText(QPoint(300, 50), "Hello world");

    ??? //p.drawPixmap(QPoint(40, 40), QPixmap("../aaa.png"));

    ??? //p.drawRect(QRect(40, 60, 100, 50));

    ??? //下面的方式實(shí)現(xiàn)畫一個(gè)圓角矩形

    ??? p.drawRoundRect(QRect(40, 60, 100, 50));

    ?

    ??? p.end();

    ?

    ??? p.begin(this);

    ??? //通過(guò)下面的方式實(shí)現(xiàn)畫圖,之所以運(yùn)行的結(jié)果是黑絲的圖,是因?yàn)榧拥氖?span lang="EN-US">pixmap

    ??? p.drawPixmap(0, 0, pixmap);

    }

    ?

    int main(int argc, char** argv)

    {

    ??? QApplication app(argc, argv);

    ?

    ??? MyWidget w;

    ??? w.show();

    ?

    ??? return app.exec();

    }

    運(yùn)行結(jié)果:

    ?

    ?

    ?

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的4.QPixmap,QTransform,绘图函数的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。