首页 > 技术知识 > 正文

Qt Pt转Px

界面开发时因为是在自己的电脑上,所以开发出来的效果看上去和自己预期的一样,但是发布出去后就不同了,不同的分辨率导致尺寸比例不同,会出现不协调的现象,想要解决这个问题就需要使用pt,但是设置的尺寸都是px,所以需要将pt转成Px. 在看代码前先了解几个概念:

pt (point,磅):

是一个物理长度单位,指的是72分之一英寸。

px (pixel,像素):

是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,Apple系统默认是72dpi。

DPI(Dots Per Inch,每英寸点数):

是一个量度单位,用于点阵数码影像,指每一英寸长度中,取样、可显示或输出点的数目。 代码:

#ifndef PTFORPX_H #define PTFORPX_H #include <QApplication> #include <QtGlobal> #include <QScreen> class PtForPx { public: PtForPx(QApplication* App); ~PtForPx(); public: static qreal dpiVal; static qreal dpiValX; static qreal dpiValY; static int GetPxVal(int PtVal); static int GetPxValX(int PtVal); static int GetPxValY(int PtVal); }; #endif // PTFORPX_H #include “ptforpx.h” qreal PtForPx::dpiVal; qreal PtForPx::dpiValX; qreal PtForPx::dpiValY; PtForPx::PtForPx(QApplication* App) { QScreen *screen = App->primaryScreen(); dpiVal = screen->logicalDotsPerInch(); dpiValX = screen->logicalDotsPerInchX(); dpiValY = screen->logicalDotsPerInchY(); } PtForPx::~PtForPx() { } int PtForPx::GetPxVal(int PtVal) { int Pixel = dpiVal * PtVal / 72; return Pixel; } int PtForPx::GetPxValX(int PtVal) { int Pixel = dpiValX * PtVal / 72; return Pixel; } int PtForPx::GetPxValY(int PtVal) { int Pixel = dpiValY * PtVal / 72; return Pixel; }
<

猜你喜欢