【问题标题】:How can I set the center of scaling?如何设置缩放中心?
【发布时间】:2018-01-14 23:36:38
【问题描述】:
我正在使用 java 进行一些图形编程。目前,我可以缩放存储在一维数组中的图片图像。 (它逐行存储)
我的代码比如新位置在哪里?
newpoz = (int)(x * scale) + (int)(y * scale) * width;
这给了我在数组中的位置。但它按左上角的 0,0 坐标缩放。如果是屏幕,如何将其设置为中心?所以到screen.getWidth()/2;screen.getHeight()/2。
Demonstration
有人可以帮忙吗?有什么问题我会在cmets中回答。
【问题讨论】:
标签:
java
graphics
2d
scale
centering
【解决方案1】:
围绕某个中心缩放像素坐标(a, b):
(x', y') = ([x - a] * scale + a, [y - b] * scale + b)
像以前一样使用pixelArray[y * width + x]获取原始像素数据,并使用新坐标类似地设置目标像素。
编辑:您可能还想查看双线性插值,因为如果直接使用当前的原始方法,最终图像可能会出现锯齿状边缘。
【解决方案2】:
如果您首先将图像的中心转换为 (0,0),然后缩放图像,然后将图像转换回来,您将有效地以所需的居中缩放图像。
- x1 = x - screen_width/2
- x2 = x1 * 比例
- x3 = x2 + screen_width/2
y 轴同上。
只需一点数学知识,您就可以一步完成这一切。练习留给学生。
但是,如果您遇到问题,请发布您的尝试,然后我们可以帮助您修复代码。