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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同

發布時間:2024/9/18 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我想對某些自定義小部件渲染進行可重復的測試.為了做到這一點,我將它們繪制成一個Q

Image,并將結果保存為PNG.與MacOSX相比,Windows的輸出真的不同.

我照顧:

>在所有平臺上選擇相同的字體(我提供“TTF”字體文件并將代碼指向它)

>繪制QImage而不是QPixmap,正如文檔所述,QImage畫家應該是平臺獨立的

>我還選擇了Antialisating和TextAntialiasing提示

>通過QFontDatabase :: font()請求字體,以便指定pointSize而不是pixelSize

我如何確保渲染在所有平臺上完全一樣,以便我的測試運行是可重復的?換句話說,是否可能強制QT5在所有平臺上使用相同的字體引擎(例如freetype)?

**

我把這個問題解決了一個簡單的渲染測試程序.

所以代碼看起來像:

QFontDatabase fontDb;

fontDb.addApplicationFont(".../fonts/Vera.ttf");

QImage result(width,height,QImage::Format_RGB32);

QPainter painter(&result);

painter.setRenderHint(QPainter::Antialiasing);

painter.setRenderHint(QPainter::TextAntialiasing);

QBrush background(QColor(205,205,205));

painter.fillRect(0,800,600,background);

QFont font = fontDb.font("Bitstream Vera Sans","Normal",10);

painter.setFont(font);

painter.setPen(QColor(0,0));

painter.drawText(10,10,"ABCD abcd 01234567");

Bitstream Vera字體可以在fontsquirel.com上下載.

看到MacOSX(左)和Win32(右)的結果,這是非常不同的:

在下面的N1ghtLight的回答和評論之后,在閱讀他建議的鏈接之后,我更改了代碼以獲得字體:

QFont font = fontDb_->font(("Bitstream Vera Sans",-1);

qreal screenDPI = QApplication::primaryScreen()->physicalDotsPerInch();

qreal RENDER_DPI = 72;

int pixelSize = (int)((qreal)10 * screenDPI / RENDER_DPI);

font.setPixelSize(pixelSize);

這似乎主要是解決了大小不一的字體的問題.至少在MacOSX上,現在的字體正好是10像素高.在Windows上,雖然字體更薄,更小一些.我還是迷路和困惑…

這是新的結果(左邊的MacOSX,右邊的Windows).白色刻度表示真正的10像素大小.

以下G_G下面的回答我調整了代碼(Linux?移動平臺呢?這很復雜…).現在,Windows和MacOSX的輸出中的字體都是10個像素,仍然很不一樣(左邊是MacOSX,右邊是Windows).

謝謝.

總結

以上是生活随笔為你收集整理的qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。