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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

qt绘制一圈圆_Qt绘制圆形,矩形等图形   绘制同心圆

發(fā)布時(shí)間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt绘制一圈圆_Qt绘制圆形,矩形等图形   绘制同心圆 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原來(lái)Qt也可以繪制圖形啊。

利用QPainter類(lèi)來(lái)繪制,再輔以其他類(lèi),諸如QPen來(lái)說(shuō)明繪制的畫(huà)筆,QPoint來(lái)說(shuō)明某個(gè)點(diǎn),QPaletee來(lái)說(shuō)明繪制的顏料等等。在QWidget類(lèi)中來(lái)實(shí)現(xiàn)虛擬函數(shù)oid

paintEvent(QPaintEvent

*)。當(dāng)調(diào)用這個(gè)QWidget時(shí),來(lái)自動(dòng)調(diào)用繪制函數(shù)。將圖形更新到QWidget上。

下面先寫(xiě)段簡(jiǎn)短的程序來(lái)說(shuō)明下:

//----------------------------------------------------------

//在void

layoutWidget::paintEvent(QPaintEvent *)中實(shí)現(xiàn)

//(我自己建的類(lèi)叫l(wèi)ayoutWidget類(lèi),繼承自 QWidget類(lèi))

void

LayoutWidget::paintEvent(QPaintEvent *)

{

painter=new QPainter;

painter->begin(this);?drawBox(xLength,yLength);?//繪制一個(gè)矩形(長(zhǎng):xLength,寬:yLength)

drawTarget(x0,y0,painter);?//繪制一個(gè)圓形(圓心(x0,y0),半徑:r(程序中設(shè)置))

painter->end(); ?delete painter;

}

------------------------------------------------

//繪制矩形drawBox()

void

LayoutWidget::drawBox(int width,int length)

{

painter->setBrush(QBrush(Qt::darkGreen,Qt::SolidPattern));

//設(shè)置畫(huà)刷形式

painter->drawRect(xOff,yOff,width,length);?//xOff和yOff是距離widget的左上角的像素

}

//drawRect()函數(shù)的應(yīng)用

----------------------------------------------------------------------

//繪制圓形drawTarget()?此為繪制兩個(gè)同心圓的程序

void

LayoutWidget::drawTarget(int x0,int y0,QPainter *painter)

{

QPoint

point(x0,y0);?//圓心

QPalette palette;

painter->setBrush(QBrush(Qt::gray,Qt::SolidPattern));

//設(shè)置畫(huà)刷形式

painter->drawEllipse(point,r1,r1);?//畫(huà)大圓

painter->setBrush(QBrush(palette.brush(QPalette::Background)));

//設(shè)置畫(huà)刷為背景色

painter->drawEllipse(point,r2,r2);?//畫(huà)小圓

}

//drawEllipse()函數(shù)的應(yīng)用,這個(gè)函數(shù)有多個(gè)重載函數(shù),翻來(lái)覆去,還是

//把QPoint作為其中一個(gè)參數(shù)較好,較方便,這個(gè)點(diǎn)即為圓形的圓心。其

//他的重載函數(shù)還需計(jì)算下到Widget左上角的像素,個(gè)人覺(jué)得有點(diǎn)麻煩。

----------------------------------------------------

//另外,炫耀下我的發(fā)現(xiàn),如何獲取窗口的背景顏色?我可是費(fèi)了好大一番功夫。找到QPaletee

//?類(lèi),然后用它的枚舉enum ColorRole{Window,Background,WindowText,...,NoRole}

//還有函數(shù)const QBrush &bursh(ColorRole

role) const

//所以才有了painter->setBrush(QBrush(palette.brush(QPalette::Background)));

//設(shè)置畫(huà)刷為背景色

這樣的調(diào)用

真的覺(jué)得我很天才啊,哈哈

另外,如何獲取窗口的大小?

直接this->width(),this->height()即可獲得窗口的寬度和高度

總結(jié)

以上是生活随笔為你收集整理的qt绘制一圈圆_Qt绘制圆形,矩形等图形   绘制同心圆的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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