2011-09-16 3 views
2

私はサブピクセル精度については読んできましたが、これを行う方法が見つかりませんでした。サブピクセルのグラフィカルムーブメント

Q:はどのように私は吃音せずに非整数スピードでCanvas全体BufferedImageを移動することができますか?

私はプロセスがどのように起こるかを論理的に理解することができます。アンチエイリアスでわずかなサイズ変更が可能ですが、Javaでは再作成できません。 (私はそのような効果が最もビジュアルオブジェクトにデフォルトで作成されたFlashでの経験を持っていた。)

注:私は前に主題についてquestionを提出しましたが、私はまだ、さらに情報を検索した後私が学んだことを実装できませんでした。

もしそれほど問題がなければ、簡単な例が非常に分かります。

ありがとうございます。

編集:それは私のために動作しませんが、これは、私が効果を達成することができる理解する方法です:

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
g2.draw(new Rectangle2D.Double(x, y, width, height)); 

X &でダブルと同様のint型の値の間には目に見える変化はありませんyフィールドを使用し、非常に遅い動き(システム時間ベースなど)を作成しようとすると、矩形は何もしませんが、今は1ピクセルずつ移動しています。

+0

なぜ 'Canvas'? 'javax.swing'のものは何もありません。それが理由かもしれません。 [this](http://today.java.net/today/2006/02/23/SmoothAnimationDemo/com/sun/animation/SmoothAnimation.java)の例を見ましたか? –

答えて

2

ButtonUITestは、効果を並べて比較しています。多くのプラットフォームで

image

、それはより多くを見るために、ディスプレイをズームすることが可能です。 Mac OS Xでは、 - - のように、/Developer/Applications/Graphics Tools/Pixie.appのように動作します。 Javaをサポートする他のプラットフォームでは、Zoomはアンチエイリアス処理されたピクセルを調べるのに便利なツールです。

+0

あなたの答えをありがとうが、残念ながら私はこれが私の質問にどのように関連しているか分かりません。私は形状にAA効果を作り出すことができますが、オブジェクトがフレームごとにピクセルの全量で動かされても滑らかな動きを作り出すことはできません。 – Acidic

+0

ああ、あなたはアニメーションデモを探していた。あなたは、効果を見るために、各フレームのピクセルの分数で、 'Rectangle2D'座標を移動させる必要があります。 – trashgod

+0

これはまさに私がやったことですが、目に見える効果はありません! – Acidic

1

また、次のレンダリングのヒント(だけでなく、アンチエイリアシング)を設定してみてください:

g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); 
+0

これはかなりの影響を与えるようですが、それが良いのか悪いのかを判断することはできません。私は間違いなく吃音を検出することができます。 – Acidic

関連する問題