首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确地设计一个高DPI感知(4k就绪)的Delphi应用程序UI?

如何正确地设计一个高DPI感知(4k就绪)的Delphi应用程序UI?
EN

Stack Overflow用户
提问于 2019-11-09 04:53:42
回答 1查看 421关注 0票数 2

第一次,我在用delphi创建一个“复杂”的UI时遇到了一些问题。我使用4K显示器进行开发和测试,并且我有一些扩展问题。

我的应用程序使用两列设计,想像一下源代码控件下的不同视图,其中有一个左窗格和一个右窗格,它们以组件的方式镜像自己,但这些组件的内容(文本)是不同的。

为了给你一个概念,我在调整窗体大小时这样做:

代码语言:javascript
运行
复制
edtFixExifLeftFile.Width := Floor((pnlFixExifTop.ClientWidth - (bbpFixExifBrowseLeft.Width * 2 + 42)) / 2);
bbpFixExifBrowseLeft.Left := edtFixExifLeftFile.Left + edtFixExifLeftFile.Width + 5;

edtFixExifRightFile.Left := bbpFixExifBrowseLeft.Left + bbpFixExifBrowseLeft.Width + 16;
edtFixExifRightFile.Width := edtFixExifLeftFile.Width;
bbpFixExifBrowseRight.Left := edtFixExifRightFile.Left + edtFixExifRightFile.Width + 5;

这样,两列都占用了50%的空间。在高清环境下(1080p),这是完美的像素,但在4K环境中,缩放(我的TForm.Scaled = True)完全“吃掉”其中一个边距(我使用8px的边距,缩放比预期多9px )。这使得在4K下看起来是错误的(正确的TEdit会使TForm有点溢出)。

如何在高清和4K环境中创建像素完美的UI?对我的组件调整大小进行编码的正确方法是什么?

我使用的是最新版本的Delphi (10.3),并且不使用花哨的组件(只使用“普通”VCL)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-13 02:14:36

在读了一篇很好的tutorial by Žarko Gajić之后,我做了这样的事情:

代码语言:javascript
运行
复制
Pad := MulDiv(8, Monitor.PixelsPerInch, 96);
grdpnlCover.Left := pnlCoverImage.Left + pnlCoverImage.Width + Pad;

其中8是未缩放值,96是设计表单时使用的DPI。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58773669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档