将草图缩放为不同的分辨率
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将草图缩放为不同的分辨率相关的知识,希望对你有一定的参考价值。
现在这似乎是一个愚蠢的问题,但是请听我说。
直到这一点,每当我想创建可以在多种分辨率下运行的草图时,我都会在ellipse()
上放置某些对象,例如width/2, height/2, width/16, width/16
来画一个圆(是的,我知道有一个圆函数,但是那不是重点)。
但是,当创建包含某些细节的更精确的对象时,必须要做width/2.489
或使用width/2 - someNumber
可以达到相同的效果时,它会变得非常烦人。>
说我正在绘制要显示在Duck
和x
的y
对象,我希望能够拥有Duck
的draw()
方法列表,例如circle(x,y, 100); circle(x + someNum, y, 25);
我可以选择具有标准尺寸,例如int STD = width / 100
,然后通过执行类似circle(x + STD * 3, y, 25);
的方法来添加这些小细节,但是这也感觉很简单。
[我知道处理具有scale()
选项,但不幸的是,无法缩放仅绘制对象的heights
和widths
。它也缩放东西被绘制的位置。
因此,如果我先在size(1920/2 * 1080/2)
上绘制一个草图,然后在width / 2, height / 2
上画一个圆,然后在size(1920,1080)
和scale(2)
上运行该草图,它将在width / 2 * 2
上绘制一个圆,并将该圆几乎屏幕外
所以...绘制各种分辨率不同的对象的最优雅的方法是什么? (但长宽比相同)
现在这似乎是一个愚蠢的问题,但请听我说。在此之前,每当我想创建可以在多种分辨率下运行的草图时,我都会放置某些对象,例如...
几年前,我做了类似的事情。我的方法太复杂了,无法共享代码,但是我很乐意分享原理。
您的目标是获取任意坐标(我将其称为“世界空间”)并将其映射到“屏幕空间”(显示器上的像素)。最好的方法确实是使用scale()
。但是,在您的代码中,您使用了scale(2)
(从世界空间映射到更大的世界空间
以上是关于将草图缩放为不同的分辨率的主要内容,如果未能解决你的问题,请参考以下文章
Surface Pro的最大X和Y触摸坐标为什么与原始显示分辨率不同?