效果如圖所示:
繪製的過程如下:
1**中strokepath函式式繪製字型的輪廓, fillpath函式用於填充字型。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
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...