変化(回転)の画像をマトリクス-クリエイティブ-シティズ-時間前実行時間レンダリング結果

StackOverflow https://stackoverflow.com/questions/1124105

質問

い48x48るイメージを回転変換を行います。

何らかの理由に回転後の画像の設計-時間は異なり、回転後の画像では実行時にこれを見ていただきますと このスクリーンショット(リンクは死) (設計-時間の実行時に右)

ですが、少し難しいスポットだよーく見ると"うんてい"とい右端の青いボールではピクセルの画像です。この画像は、層状の白光る前景の一部と回転させながら青いボールを背景にします。

いの画像がオフセット1ピクセルの実行時、回転するように,ちょうど90度回転している画像),180度も同270℃。画像、その他の回転角度調査を実施しているのは、同じ参加者をリーフへお連れします。

このスニペット:

protected static Image RotateImage(Image pImage, Single pAngle)
    {
      Matrix lMatrix = new Matrix();
      lMatrix.RotateAt(pAngle, new PointF(pImage.Width / 2, pImage.Height / 2));
      Bitmap lNewBitmap = new Bitmap(pImage.Width, pImage.Height);
      lNewBitmap.SetResolution(pImage.HorizontalResolution, pImage.VerticalResolution);
      Graphics lGraphics = Graphics.FromImage(lNewBitmap);
      lGraphics.Transform = lMatrix;
      lGraphics.DrawImage(pImage, 0, 0);
      lGraphics.Dispose();
      lMatrix.Dispose();
      return lNewBitmap;
    }

    void SomeMethod()
    {
      // Same results in design-time and run-time:
      PictureBox1.Image = RotateImage(PictureBox2.Image, 18)
      // Different results in design-time and run-time.
      PictureBox1.Image = RotateImage(PictureBox2.Image, 90)
    }

誰でもできるのでその理由を説明すためにこの行為は?によるソリューションを実行時結果のようなデザインになって時間が多かった。

このことは重要なことでこのイメージの一部であるアニメーションから生じるコードに基づいた単一画像を回転させ。デザイン、アニメーションに見えの円滑な物件です。に実行時になっているように見えますがジャンプの約/

を使用していVisual Studio2005Windows Vista Business SP2.

役に立ちましたか?

解決

これはPixelOffsetModeのような実行時間に対する設計時に使用されるGraphicsオブジェクトの違いとは何かを持っているかもしれません。

他のヒント

どのようにして回転のあなたの角度を指定していますか?度またはラジアンで?

時々私はそれがラジアンしてきたはずです(結果としてオブジェクトが数百度の代わりに、いくつかを回転させた)とき、私は偶然度に私の角度を指定したときに説明したような結果が得られます。

私はあなたの具体的な例として与えられたことを確認するために知っているが、その価値は示唆していない。

Hm、私の考察を試してみ:

lMatrix.RotateAt(pAngle, new PointF((pImage.Width + 1)/2.0f, (pImage.Height + 1)/ 2.0f));

私はそれが浮動小数点で実行される数学に関する問題であるべきだと思います。バック整数座標に丸めたとき。

関連あるかもしれない一つの質問は...あなたのイメージは完全に正方形であり、幅と高さは偶数?たぶん、問題がある。

編集:最初のリードで、私は、画像の大きさを通過した...それは問題ではなかった場合は多分あなたは自分で単純な回転を行うことができます:

angle = 90 : img[i][j] = img[j][w-i]
angle = 180: img[i][j] = img[w-i][w-j]
angle = 270: img[i][j] = img[w-j][i]

(私はインデックスswappingsはOKだと思いますが、二重のチェックは悪いことではありません)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top