如何设置缩放中心?

How can I set the center of scaling?

我在 java 从事一些图形编程工作。目前,我可以缩放存储在一维数组中的图片图像。 (它逐行存储)

我的代码新位置在哪里? newpoz = (int)(x * scale) + (int)(y * scale) * width;

这给了我在数组中的位置。但它按左上角的 0,0 坐标缩放。如果屏幕如何将其设置为中心?所以到 screen.getWidth()/2;screen.getHeight()/2.

Demonstration

有人可以帮忙吗?有什么问题我会在评论里回答。

围绕某个中心缩放像素坐标 (a, b):

(x', y') = ([x - a] * scale + a, [y - b] * scale + b)

像以前一样使用 pixelArray[y * width + x] 获取原始像素数据,并使用新坐标类似地设置目标像素。

编辑:您可能还想看看双线性插值,因为如果直接使用当前原始方法可能会在最终图像中产生锯齿状边缘。

如果您先将图像的中心平移到 (0,0),然后缩放图像,然后再平移图像,您将有效地以所需的居中缩放图像。

  • x1 = x - screen_width/2
  • x2 = x1 * 比例
  • x3 = x2 + screen_width/2

y 轴同上。

只需一点数学知识,您就可以一步完成这一切。练习留给学生。

但如果您遇到麻烦,请post您的尝试,然后我们可以帮助您修复代码。