当前位置: 首页 > news >正文

校园招聘网站开发研究背景中铁建设集团有限公司华北分公司

校园招聘网站开发研究背景,中铁建设集团有限公司华北分公司,广州推广排名,海盐市网站建设前言 最近在开发有关高分辨率屏幕的软件#xff0c;还是做了不少尝试的#xff0c;当然我们也去网上查了不少资料#xff0c;但是网上的资料也很零碎#xff0c;说不明白#xff0c;这样的话我就做个简单的总结#xff0c;希望看到这的你可以一次解决你有关不同分辨率下…前言 最近在开发有关高分辨率屏幕的软件还是做了不少尝试的当然我们也去网上查了不少资料但是网上的资料也很零碎说不明白这样的话我就做个简单的总结希望看到这的你可以一次解决你有关不同分辨率下的所有问题。 分辨率DPI 首先我们搞清楚我们现在到底面对的是什么场景。在开发高分屏的时候实际上不仅仅是分辨率高其附带 的推荐缩放比例往往也会相应的变化 这个两个数值会直接影响你程序的显示效果例子我就不举了关于什么是DPI什么是分辨率我这里简单说说 我们假设现在我们开发的软件界面大小是 1000 x 1000现在测试用的的屏幕都是27寸的屏幕但是A屏幕是1080p的即1920x1080而B屏幕是4K的即4096×3112 看同样是1000x1000的界面在1920 x 1080的屏幕上几乎要铺满一大半还要多了但是在4096x3122的屏幕上它的宽甚至只占屏幕的1/4。 这就会导致同样的画面在1080p的屏幕下显示正常但是在4k的屏幕上显示就会非常小小到看不见。 那你可能就要问了那有没有更好的办法来决定我们的显示呢 有 随着屏幕技术的发展现在高分辨率的屏幕越来越常见了所以为了解决这个同样大小的程序在不同分辨率下差距过大的问题Windows引入了一个叫做DPI的概念Dot per Inch)这个之前打csgo的朋友可能一下就反应过了是的鼠标同样有DPI这个概念而且屏幕DPI和鼠标DPI概念差不多。 DPI指的是图像每英寸1 英寸 25.4 毫米长度内的像素点数。我们还是应该把像素理解为小方块dpi就可以理解为是一英寸长度内排列的像素数。通过图像的dpi我们就可以计算出在这个图像中像素的边长如果也知道图像的分辨率宽高像素数就可以知道该图像的真实尺寸了。 当你在Windows的显示设置中调整缩放比例例如125%、150%、175%等实际上是在调整系统级别的DPI设置。这个缩放比例直接影响到系统如何渲染所有的图形用户界面元素包括字体、图标和整个应用程序窗口。 计算公式如下 实际 D P I 基础 D P I ∗ 缩放百分比 100 实际DPI基础DPI * \frac{缩放百分比}{100} 实际DPI基础DPI∗100缩放百分比​ 96 D P I ∗ 1.5 144 D P I 96DPI * 1.5 144DPI 96DPI∗1.5144DPI 还有一个概念点距dot pitch就是把像素理解为点的时候点距就是两个像素点的距离 我们把像素理解为小方块那点距其实就是像素的边长 点距与DPI之间转换点距一般用毫米表示DPI表示1英寸也就是25.4mm长度内的像素数所以点距像素的边长就等于 25.4 / DPI总长度/个数每个长度 怎么做 当然了你肯定对公式不感兴趣那么我们自然是要说一下怎么解决的。 先说Qt有几个常用的属性。 启用高DPI缩放QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);// 使用高分辨率的位图可选QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 这个函数是用来启用高DPI缩放的。当应用程序在高分辨率的显示设备上运行时Qt会自动根据系统的DPI设置来缩放界面元素使得界面在不同分辨率的显示器上具有合适的大小和清晰度。此属性应在创建QApplication对象之前设置。 QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 这个函数是用来启用高分辨率位图的支持的。当设置为true时Qt会尝试使用高分辨率版本的位图如果有的话以保证在高DPI显示设备上图标和其他图形元素的清晰度。这对于那些使用像素图如PNG或JPEG图像作为界面元素的应用程序尤其有用。 难道这样就可以了 显然只这样做是不够的如果这样的话实际上只是启动了Qt程序的DPI支持。你可能会想那敢情好啊直接开了DPI支持是不是就万事大吉了 答案是错误的实际上你会遇到三个问题 缩放比例错误 当你尝试缩放的时候你会发现有时候缩放比例过大有时候缩放比例又过小这是为什么呢 为了解决这个问题我们需要翻到Qt的文档里面有关这个AA_EnableHighDpiScaling的文章 对于此你会惊喜的发现这个自带的DPI设置似乎会自动指向整数也就是说你的缩放比例为1.25时它的缩放比例就会四舍五入变成1缩放比例到1.5的时候缩放比例也就会到2很可能你用的时候就会直接把屏幕给撑爆了。 用户的屏幕默认缩放比例本身就是错的 有时候特别是有些小的抽象的笔记本什么动不动十七寸的显示器分辨率又畸形的高可能动不动缩放比例就给到2到三要是程序本身界面就够大可能直接就给屏幕撑爆了这是不好的。 字体显示异常 正常屏幕上显示 更换了屏幕之后 解决方法 为了解决前面两个问题我们参考Qt.io上的文档 High-DPI Support in Qt 5.6 哇没想到这个缩放比例可以直接由环境变量设置那我们就可以将这个缩放比例的环境变量设置为 N/1080这样我们的程序就会在运行的过程中始终保持其在画面中的比例而不需要关心比例和分辨率了。 注你可能想用Qt自带的QScreen去检查屏幕分辨率但是QScreen不能在QApplication初始化之前使用但是设置缩放比例又必须在QApplication初始化之前进行所以 具体操作代码如下 #include QApplication #include QDebug #include QStringRECT RetrieveMonitorBounds(int idx) {DISPLAY_DEVICEW dd;dd.cb sizeof(dd);BOOL flag EnumDisplayDevicesW(nullptr, idx, dd, 0);DEVMODEW dm;dm.dmSize sizeof(dm);dm.dmDriverExtra 0;flag EnumDisplaySettingsExW(dd.DeviceName, ENUM_CURRENT_SETTINGS, dm, 0);RECT rect { dm.dmPosition.x, dm.dmPosition.y, dm.dmPosition.x dm.dmPelsWidth, dm.dmPosition.y dm.dmPelsHeight };return rect; }int main(int argc, char* argv[]) {int monitorCount ::GetSystemMetrics(SM_CMONITORS);qDebug() Detected monitors: monitorCount;QString scalingFactors;for (int j 0; j monitorCount; j) {RECT dimensions RetrieveMonitorBounds(j);int h dimensions.bottom - dimensions.top;double scale (h 1080) ? (double)h / 1080.0 : 1.0;scalingFactors (j 0 ? : ;) QString::number(scale, f, 1);}QByteArray envVar scalingFactors.toUtf8();qputenv(QT_SCREEN_SCALE_FACTORS, envVar);// Enable high DPI scalingQApplication::setAttribute(Qt::AA_EnableHighDpiScaling);// Optionally use high resolution pixmapsQApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);QApplication app(argc, argv);QMainWindow mainWindow;mainWindow.show();return app.exec(); } 关于字体缩放不当 首先我们要搞清楚有关字体大小的一些设置 我们知道对于Qt来说他们是很喜欢用Pt这个单位的几乎所有默认的单位都是Pt但是实际上又有另外一个单位px我们需要先搞清楚这两个单位是做什么的 点pt点是传统的印刷行业使用的度量单位1点等于1/72英寸。在显示设备上使用点作为字体大小的单位时Qt会根据系统的DPI每英寸点数设置来调整字体的实际像素大小。例如在96 DPI的显示器上1点大约等于1.333像素。使用点作为单位设置字体大小时字体的大小会根据不同的显示器分辨率自动调整以保持视觉上的一致性。 像素px像素是计算机显示领域的一个基本单位直接对应屏幕上的一个显示点。在Qt中以像素为单位设置字体大小意味着无论DPI设置如何字体的大小始终以固定的像素数显示。这会导致在不同DPI设置的显示器上相同像素值的字体大小视觉上可能会有很大差异。 这种自动缩放的目的是确保在高分辨率显示器上元素保持适当的物理大小从而提升用户体验。然而这种自动缩放可能导致在不同分辨率和 DPI 设置下使用点单位设置的字体大小出现视觉上的不一致因为点单位本身是与物理尺寸1/72 英寸相关的而屏幕 DPI 会影响这一转换关系。 使用 点pt 设置字体或大小时这些设置会根据系统的 DPI 自动缩放以尝试保持物理上的一致性从而在高 DPI 显示器上可能看起来过大或过小。 使用 像素px 设置时元素的大小直接映射到屏幕的像素不会根据 DPI 进行自动调整因此在高 DPI 设置下可能看起来偏小因为更多的像素被压缩在了物理尺寸相同的空间内。
http://www.w-s-a.com/news/10006/

相关文章:

  • 潍坊网站建设怎样商品网站建设设计思路
  • 建网站公司是如何赚钱南昌营销网站公司哪家好
  • 淘宝客网站管理质量好网站建设费用
  • 网站建设教程搭建青岛中企动力做网站怎么样
  • wordpress最底部网站优化怎么弄
  • 二手市场网站建设的目的长沙ui设计公司
  • 微信公众号做留言网站wordpress详情页选择模板
  • php网站开发面向对象教程如何做分享赚钱的网站
  • 山东网站建设最便宜常州网站建站公司
  • 网站地图 seo中国建设招标网是私人网站吗
  • 高中作文网站全网营销有哪些平台
  • 网站构建建设制作平台上海搬家公司收费价目表
  • 成功案例展示网站做网站赚多少钱
  • 建设银行网站用什么字体网站建站后维护需要做哪些
  • 有哪些做平面设计好素材网站有哪些开网站建设
  • 国际交流网站平台有哪些筑建网
  • 网站程序是如何开发的江门市住房建设管理局网站
  • 网站建设一般需要几个步骤昵图网免费素材
  • 个人网站建设需求说明书微信域名防封在线生成
  • 专业网站建设的公司wordpress后台没有模板
  • 哈尔滨网站运营服务商制作外贸网站公司
  • 个人网站需要备案宁波网站推广工具
  • 苏州建设银行网站首页wordpress修改密码
  • 网站建设员工技能要求网站制作简单协议
  • 没有ipc备案的网站wordpress isux主题
  • 清远做网站电子商务网站建设需要的语言及特点6
  • 万州那家做网站c语言基础知识入门
  • 齐河网站建设公司价格网站建设包括什么
  • 论坛网站开发费用怎么把文件放到网站的根目录
  • 海南省零售户电商网站官渡区住房和城乡建设局网站