怎么正确使用 TERMINAL_SCREEN_DPI 常量?求懂的大神详细解说下。谢谢!
高清4K屏分辨率的问题,要转换下分辨率,把你的问题写在这里,其他人也能学习到。
Ziheng Zhuang:
高清4K屏分辨率的问题,要转换下分辨率,把你的问题写在这里,其他人也能学习到。
比如创建的标签、EDIT框、按钮和矩形框等,在程序中写入的数字分别为(起点坐标和大小)标签:10,10,50,20 EDIT框:52,10,50,20 按钮:10,30,50,20 矩形框:8,8,120,100 很显然,这个标签和EDIT框是在一行上,且是从标签框结束后的2像素开始绘制。这在我的电脑上显示正常,但放朋友的另一电脑上时,标签的显示就可能不完整了,也就是EIDIT框的起点坐标可能会覆盖标签。想问的是:如何利用这个DPI来实现简单快速换算,不用在程序里一个一个的修改相应的起点坐标?
另外:如果这个标签、EDIT框等的宽度、高度想在#define 中预定义,比如 #define LABEL_WIDTH (48) #define LABEL_HEIGHT (18) 等,那这个48宽和18的高又怎么通过DPI的这个常量来换算呢?——谢谢
举例:假设你要创建一个Edit......
//高清/4K屏,需要计算一个转换比例SCALE double SCALE=TerminalInfoInteger(TERMINAL_SCREEN_DPI)/96.0; int x = 52,y = 10, w= 50,h = 20; x = int(x*SCALE); y = int(y*SCALE); w = int(w*SCALE); h = int(h*SCALE); CreateEdit(x,y,w,h);
为什么你看着这个参考文档,还是不会编写呢?文档写的是云里雾里,看完文档你还是不知道怎么用这个DPI。
计算机编程中,整数相除结果只能是整数,小数部分抛弃了,比如 15/10 = 1 而不是1.5,只有15.0/10 或者15/10.0才是1.5
哈哈,表示看来是i因为我没有高清屏,所以似乎没遇到类似问题
没有高清屏,这个函数估计很长时间用不到