Qt 字型輪廓的繪製

2022-04-21 12:03:39 字數 1513 閱讀 1195

效果如圖所示:

繪製的過程如下:

1

qfont font;

2 font.setpointsize(this->height() * 2 * mzoomratio / 3

);3 font.setbold(true);4

if(mdrawoutlined)514

pen.setwidth(penwidth);

15int len =metrics.width(mtext);

16int w =width();

17int px = (len - w) / 2;18

if(px < 0)19

22//

(px,py)是字型基線的起點位置,在qt助手中查詢addtext函式可以了解到

23int py = (height() - metrics.height()) / 2 +metrics.ascent();

24if(py < 0)25

28path.addtext(px, py, font, mtext);

29painter.strokepath(path, pen);

30painter.drawpath(path);

31painter.fillpath(path, qbrush(mtextcolor));

32//

painter.drawrect(rect());33}

34else

35

**中strokepath函式式繪製字型的輪廓, fillpath函式用於填充字型。

addtext函式中(px, py)指的是繪畫的起點位置,py的計算方法在上面已經給出,通過控制px可以實現左對齊、右對齊、居中等對齊方式。用qt助手檢視該函式說明可以了解。

這種方法適合在不可編輯的文字區域繪製例如qlabel,qbutton等,對於qtextedit等可編輯的區域可以使用qss來實現,實現的方法在qt助手中已經給出了,在qt助手中搜尋stylecolor就可以找到。

。。。 其實qss的方法我現在還不會用

這裡使用另外一種方法實現qtextedit中字型輪廓的繪製方法

**如下:

ui->textedit->setfontpointsize(50

); qtextcharformat format;

format.settextoutline (qpen (qt::red,

1, qt::solidline, qt::roundcap, qt::roundjoin)); //

color and width of outline

ui->textedit->mergecurrentcharformat(format);

opencv尋找輪廓 繪製輪廓 輪廓層級原理

void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierarchy,int mode,int method,point offset point 引數image inputarray型...

字型輪廓和裝置字型

字型輪廓和裝置字型 發布或匯出 flash 文件時,文字欄位中的字型由嵌入字型輪廓或字型名稱來表示。或者,也可以使用裝置字型來指定通用型別的字型,如 sans serif。字型輪廓和名稱 對於靜態文字,flash 會建立字型的輪廓並將它們嵌入到 swf 檔案中。然後 flash player 會使用...

OpenCV中的輪廓發現和輪廓繪製

實現 import cv2 import numpy as np 輪廓發現和輪廓繪製 img是一張與binary類似的二值圖,contours是list列表結構每個元素包含乙個邊沿資訊,heriachy是乙個矩陣,用處作者也未知,可以 contours,heriachy cv2.findcontou...