Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >理解Cocoa绘图中的点和用户空间,因为它们与屏幕分辨率交互

理解Cocoa绘图中的点和用户空间,因为它们与屏幕分辨率交互
EN

Stack Overflow用户
提问于 2015-01-18 03:24:34
回答 1查看 443关注 0票数 1

可可绘图尺寸(宽度和高度)在OS绘图指南文档中定义如下的点中指定:

一个点相当于1/72英寸

我从这里了解到,一个点就是物理距离。因此,如果我的屏幕是20英寸宽(例如),我将有20x72= 1440点的水平宽度在工作。换句话说,一个点与设备的分辨率无关。

这似乎不是那么..。

一个使用窗口宽度作为测试的简单可可应用程序显示: 1)当我的分辨率设置为1680x1050时,它的宽度将为1680 以跨越屏幕的宽度2)类似地,如果我将分辨率更改为2560x1440,则窗口宽度将为2560 points以跨越屏幕的宽度。

同样令人困惑(以一种自相矛盾的方式)的是苹果公司在高分辨率准则文件中所作的声明:

用户空间中的每一点都由四个像素支持。

上述测试似乎表明,当显示分辨率设置为1680x1050时,我的用户空间为1680x1050。如果每个用户点有4个像素,那么这将指向一个有效的“真实”分辨率2倍(1680x1050) = 3360x2100,这比我的13英寸视网膜macbook 2560x1600的本地分辨率还要高。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 14:03:02

点是一个抽象的虚拟坐标系。其目的是,您通常设计和编写绘图代码的工作点,这将大致符合人类的视觉,补偿不同的物理显示像素密度和显示器与用户的眼睛之间的通常距离。

点与物理距离单位(英寸、厘米等)都没有可靠的关系。或者物理显示像素。

对于屏幕显示,至少有三种不同的测量方法。例如,Retina MacBook Pro的屏幕有2880x1800物理像素。在默认模式下,它被映射到1440x900点,因此每个点都是一个2x2像素的平方。这就是为什么这样一个系统上的窗口具有与非Retina MacBook Pro相同的视觉大小,屏幕上有1440x900物理像素映射到1440x900点。窗口是以点为单位测量的,因此占据了屏幕房地产的相同部分。然而,在Retina显示器上,有更多的像素允许更精细的细节。

然而,还可能存在另一层复杂性。您可以将Retina系统配置为在屏幕上显示更多的内容,而代价是一些细节。您可以选择1920x1200点的显示模式。在这种模式下,呈现是对3840x2400像素的后台缓冲区执行的。这允许渲染在一个更高的细节,但保持简单的数学;点仍然映射到2x2像素的平方。(这种简单的计算方法也避免了在绘制邻接位图图像时出现接缝问题。)但3840x2400大于显示硬件中的物理像素数。因此,当在屏幕上实际绘制到物理的2880x1800像素时,该后台缓冲区就会缩小。这将从后台缓冲区中丢失一些更高的细节,但结果仍然更精细--比物理1920x1200屏幕或将1920x1200呈现到物理2880x1800屏幕上都要详细。

因此,对于这种配置:

屏幕大小(点):1920x1200

内存像素中的回退缓冲区: 3840x2400

显示硬件中的物理像素: 2880x1800

当然,其他配置也是可能的:

屏幕大小点: 2880x1800

以像素为单位的Backbuffer : 2880x1800

物理像素: 2880x1800

所有的东西都很小--很小,但是你可以在屏幕上放很多东西(例如,很多行文字)。

屏幕大小点: 1280x800

以像素为单位的回退缓冲区: 2560x1600

物理像素: 2880x1800

这实际上将使一切(文本,按钮等)由于映射到相同物理像素的点较少,因此显示更大。每一个点都会更大。不过,请注意,每个点仍然映射到后台缓冲区中的2x2像素正方形。和以前一样,备份缓冲区由硬件缩放到物理显示。这一次,它是稍微上升,而不是下降。(这种缩放与在非Retina液晶显示器上发生的情况相同,当您选择一个像素比物理显示少的模式时。显然,LCD不能改变它所拥有的物理像素数,所以不同的分辨率是通过缩放一个后台缓冲区来实现的。)

等。

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

https://stackoverflow.com/questions/28009136

复制
相关文章
现代脚本的加载
原文地址: Modern Script Loading, 文章作者是Preact作者Jason Miller
_sx_
2019/08/07
8700
Js脚本的异步加载
在浏览器中网页加载中 javascript 的 加载 和 执行会默认阻塞 DOM 的加载和页面的渲染。 因此,在编写代码的时候我们往往将 script 标签放到 body 的最后面。 当然,也可以通过异步创建 script 标签的方式来实现 js的异步加载。
epoos
2022/06/06
9.1K0
Js脚本的异步加载
无阻塞加载脚本
通常加载页面的时候,对于组件是并行下载的,现代大部分浏览器对于Js同样也是支持并行下载,但是在脚本下载、解析并执行完毕之前,不会开始下载任何其他内容。
菜的黑人牙膏
2019/01/21
4360
gdb加载python脚本的方法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/details/76733977
血狼debugeeker
2018/09/20
2K0
智能图像签名生成脚本
https://cloud.tencent.com/document/product/867/17719
杜志强
2019/03/21
9300
Cycript 小知识:加载自己的脚本
Cycript是一个理解Objective-C语法的javascript解释器,这意味着我们能够在一个命令中用Objective-C或者javascript,甚至2者兼用。它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西。
公众号iOS逆向
2022/08/22
6000
安装java脚本
卸载掉现有的JAVA版本的话,可以使用 rpm -qa | grep java 和 rpm -e xxx --nodeps进行卸载
summerking
2022/10/27
5040
java 脚本引擎
本文节选自《Netkiller Java 手札》 第 18 章 java 脚本引擎 目录 18.1. Maven 18.2. Helloworld 18.3. 运行脚本文件 18.4. 变量传递 18.5. 全局变量与局部变量定义 18.6. 调用脚本中的函数或方法 18.7. 脚本编译 什么是脚本引擎,脚本引擎是指在程序运行期间嵌入另一种脚本语言,并与其交互,产生最终运行结果 脚本引擎存在的意义是什么?脚本引擎可以改变编译语言的内部运行逻辑,弥补编译语言的不足,使编译语言具备动态语言的一部分特性。 是否有
netkiller old
2018/03/05
1.8K0
JavaScript 动态加载脚本和样式
3大点: 1.元素位置 2.动态脚本 3.动态样式 一.元素位置 getBoundingClientRect()。这个方法返回一个矩形对象,包含四个属性:left、top、right和bottom。分别表示元素各边与页面上边和左边的距离。 var box = document.getElementById('box');//获取元素 alert(box.getBoundingClientRect().top);//元素上边距离页面上边的距离 alert(box.getBoundingClientRect()
汤高
2018/01/11
1.4K0
Java动态脚本
诸如此类的需求若采用硬编码实现,则迭代成本相当高,每次改动都需要进行开发、测试、部署。同时业务规则的频繁变更会导致代码的开发和维护成本大大提高。
ruochen
2021/11/22
1K0
Java中ImageIcon的路径问题
这行代码执行时在project目录下查找名为logo.gif的文件,结果当然是找不到。
緣來
2020/01/02
2.9K0
异步加载脚本保持执行顺序
首先是外部脚本和行内脚本,对于异步加载的脚本,会导致竞争状态,使得出现未定义的错。
菜的黑人牙膏
2019/01/21
1.8K0
Quick-Task 动态脚本支持框架之Groovy脚本加载执行
上一篇简答说了如何判断有任务动态添加、删除或更新,归于一点就是监听文件的变化,判断目录下的Groovy文件是否有新增删除和改变,从而判定是否有任务的变更;
一灰灰blog
2018/08/07
1.2K0
Quick-Task 动态脚本支持框架之Groovy脚本加载执行
用shell脚本猜大小
创建shell脚本环境 vim guess 极简猜大小 echo $1 if [ $1 -gt 12 ]; then echo "猜大了" elif [ $1 -lt 12 ]; then echo "猜小了" else echo "猜对了" break fi 用while语句 猜大小 while true; do echo "请输入一个数字" read aa; if [ $aa -gt 12 ]; then echo "
Maynor
2021/04/09
2740
用Python写Shell脚本
os.system函数与系统编程中的exec族函数调用一致,创建出子进程后代码段由外部程序替换,不会返回外部程序运行结果。
菜菜cc
2022/11/15
1.5K0
Java动态脚本运用
一般的需求可使用上述动态脚本实现,如果遇到业务规则更为复杂、规模更大、对功能和性能有更高要求的需求时,可考虑更为专业的规则引擎和计算/表达式引擎。
花落花相惜
2021/12/15
1.3K0
JAVA调用Shell脚本
在实际项目中,JAVA有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本。 JAVA调用很简单,例子如下: 首先是shell脚本 /users/bmcmsend_linux/server/bin/msend -n @10.26.202.27:1828#mc -a TRKUTIL_EV -v -j /users/bmcmsend_linux/server
Java学习123
2018/05/16
3.1K0
java: ant 脚本示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!--basedir是从build.xml所在的目录为基础算起的--> 4 <project nam
菩提树下的杨过
2018/01/24
8660
180807-Quick-Task 动态脚本支持框架之Groovy脚本加载执行
上一篇简答说了如何判断有任务动态添加、删除或更新,归于一点就是监听文件的变化,判断目录下的Groovy文件是否有新增删除和改变,从而判定是否有任务的变更;
一灰灰blog
2019/05/26
5250
Java基础-脚本引擎
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/11/12
9850

相似问题

SQL server“心跳”检查的最低权限?

33

弹性心跳响应检查TCP错误

12

REST心跳检查服务可用性

11

Api对Api Root执行心跳检查

22

弹性搜索+心跳-是否可以检查java应用程序是否正在运行?

116
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文