2017-08-07 5 views
0

私はJavaでいくつかのグラフィックプログラミングに取り組んでいます。現時点では、私が1Dアレイに保存している画像を拡大縮小することができます。 (行ごとに格納)スケーリングの中心を設定するにはどうしたらいいですか?

私のコードはどこに新しいポジションがありますか? 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]を用いて元の画素データを取得し、新たな座標と同様に、宛先ピクセルを設定します。

EDIT:バイリニア補間を参照してください。現在のrawメソッドは、直接使用すると最終イメージにギザギザのエッジが入ることがあるためです。

+0

ありがとうございました! – pocokknight

0

イメージの中心を最初に(0,0)に変換し、イメージを拡大縮小してからイメージを元に戻すと、イメージを効果的に縮小したい場合があります。

  • X1 = X - screen_width/2
  • X2 = X1の*スケール
  • X3 = X2 + screen_width/2

同上Y軸用。

数学では、これをすべて1ステップで実行できます。生徒に残された運動。

問題が発生した場合は、あなたの試みを投稿し、コードを修正する手助けをすることができます。

関連する問題