2017-08-07 144 views
0

我正在從事一些java圖形編程。目前,我可以縮放一張圖片圖片,並存儲在一維數組中。 (它按行存儲)如何設置縮放中心?

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

這給了我一個陣列中的位置。但它通過0,0座標來調整左上角的內容。如何在屏幕上將其設置爲中心?所以到screen.getWidth()/ 2; screen.getHeight()/ 2。

Demonstration

有人能幫助您?如果有任何問題,我會在評論中回答。

回答

1

要縮放像素座標的一些中心(a, b)

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

像以前一樣使用pixelArray[y * width + x]取原始像素數據,並用新的座標,同樣設置目標像素。

編輯:你可能也想看看雙線性插值,因爲如果直接使用,當前的原始方法可能會在最終圖像中產生鋸齒狀的邊緣。

+0

謝謝你的回答! – pocokknight

0

如果您首先將圖像的中心轉換爲(0,0),然後縮放圖像,然後翻轉圖像,您將有效縮放圖像並獲得所需的居中。

  • X1 = X - SCREEN_WIDTH/2
  • X2 = X1 *刻度
  • X3 = X2 + SCREEN_WIDTH/2

同上,用於Y軸。

有了一點數學,你可以一步到位做到這一點。鍛鍊留給學生。

但是,如果您遇到麻煩,請發佈您的嘗試,然後我們可以幫助您修復代碼。