タイトル : Re^3: 画像の回転について 投稿日 : 2008/01/14(Mon) 22:19 投稿者 : Hongliang
ソースを見た限り問題なさそうです。 その上で、ちょっといじっていて気づいたことを書いておきます。画像処理については私も詳しくないので参考程度に。 RotateTrnasform や TranslateTransform は Transform プロパティに適用され、実際に描画されるときにはこの Matrix で各種変換が行われます。 で、180度回転を RotateTransform で与えた場合は Matrix の m12/m21 が「絶対値が極めて小さい値」に設定されますが、gif ファイルによってはこれらの値がある程度(ファイルによるみたい)より小さい絶対値をもつときにフレーム 0 の画像を描画しているようです。 ので、回避策の一つとしてこの値をある程度以上に設定する、というのが考えられます。がこの値を入れれば大丈夫ってのがあるのかないのかよく分からないので確実性に欠けますし、大きくしすぎると 180 度の回転に過不足が出てしまいます。 もう一つ、回避策として Bitmap.SetResolution の適用があります(原理はわかってません)。Bitmap インスタンスの生成後一度これを呼び出すと、上記 m12/m21 が最小値である 0 でも問題なく描画してくれるようになるみたいです。設定する値は、たぶん 96/96 固定でいいはずですが、ひょっとしたら画面解像度(画素数じゃなくて dpi 値。dpi スケールとか言うらしい)に合わせる必要があるかも知れません(96 dpi 環境以外は未確認)。 これ以外にも原因/回避法はあるかも知れませんが、一つの原因と回避法として。 |