DOBON.NETプログラミング道掲示板

■35222 / 親記事)  画像の中心を基点に回転
  
□投稿者/ ま〜 一般人(16回)-(2022/11/11(Fri) 15:16:16)
  • アイコン環境/言語:[Vs2022 basic] 
    分類:[.NET] 

    こんにちは
    画像の回転に付いてですが中央を基点に5度単位で回転させたいのですが良い方法はないでしょうか?
    宜しくお願いします

マルチポストを報告
違反を報告
引用返信 削除キー/
■35223 / ResNo.1)  Re[1]: 画像の中心を基点に回転
□投稿者/ 魔界の仮面弁士 大御所(1477回)-(2022/11/11(Fri) 16:27:00)
  • アイコンNo35222に返信(ま〜さんの記事)
    > 中央を基点に5度単位で回転させたいのですが

    WPF の話なら、RenderTransformOrigin が (0.5, 0.5) の
    RenderTransform を使用して、Angle に 5 の倍数をセットすれば良いかと。

    <Image Source="/exmaple.jpg" RenderTransformOrigin=".5,.5">
    <Image.RenderTransform>
    <RotateTransform Angle="5" />
    </Image.RenderTransform>
    </Image>


    WinForm なら、Graphics クラスで DrawImage する前に、
    TranslateTransform と RotateTransform を指定する形です。
    https://dobon.net/vb/dotnet/graphics/transform.html#section1
    http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleRotateBitmap.html
違反を報告
引用返信 削除キー/
■35228 / ResNo.2)  Re[2]: 画像の中心を基点に回転
□投稿者/ ま〜 一般人(17回)-(2022/11/14(Mon) 13:38:53)
  • アイコン魔界さんいつもありがとうございます

    数日前に参考にさせて頂きコピペして試行錯誤でやってみたのですがどうしても
    画像の中心が基点とならないので困ってます。と言うか分からないが。。。

    > TranslateTransform と RotateTransform を指定する形です。
    TranslateTransformは画像の左上の0,0を移動するみたいでここを基点に回転して5度づつ回転させると左上を基点に扇みたいになります(理解してないのかも?)

    希望は元の画像の中心を基点に回転させたい。

    > http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleRotateBitmap.html
    を試しましたが
    Private Function RotateBitmap( _
    ByVal bmp As Bitmap, ByVal angle As Single, ByVal x As Integer, ByVal y As Integer) As Bitmap

    ByValの所で構文エラーとなってしまいます。
    解決策が分からないです。



違反を報告
引用返信 削除キー/
■35230 / ResNo.3)  Re[3]: 画像の中心を基点に回転
□投稿者/ 魔界の仮面弁士 大御所(1479回)-(2022/11/14(Mon) 18:58:36)
  • アイコンhttp://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleRotateBitmap.html
    ではなく
    http://nonsoft.la.coocan.jp/SoftSample/VB.NET/SampleRotateBitmap.html
    を紹介するべきでしたね。


    No35228に返信(ま〜さんの記事)
    > 魔界さんいつもありがとうございます
    https://twitter.com/Benshi_Orator/status/1580431600499961858


    >> TranslateTransform と RotateTransform を指定する形です。
    > TranslateTransformは画像の左上の0,0を移動するみたいでここを基点に回転して5度づつ回転させると左上を基点に扇みたいになります(理解してないのかも?)

    先に提示した URL で解説されているように
    まず、原点を (0,0) よりさらに左上(マイナス座標)にずらしてから、
    その後、RotateTransform で回転させてから、
    今度は右下方向(プラス座標)に復帰させたのち、
    DrawImage または DrawImageUnscaled で描画します。

    描画した後は座標系が回転したままなので、連続して描画する場合は
    GraphicsState を併用します(Save / Restore メソッド)。
    ※あるいは ResetTransform メソッド。


    なお、元のサンプルでは、「PictureBox の中心」で回転させていますので、
    「画像の中心」で回転させたい場合は
     RotateBitmap(org, ang, PictureBox1.Width \ 2, PictureBox1.Height \ 2)
    ではなく
     RotateBitmap(org, ang, org.Width \ 2, org.Height \ 2)
    とします。

    また、元画像の描画位置を左上以外(x2, y2)にしたい場合は、回転後の
     g.TranslateTransform(x, y, MatrixOrder.Append)
    の後に、さらに
     g.TranslateTransform(x2, y2, MatrixOrder.Append)
    を加えてから描画するようにします。



    > Private Function RotateBitmap( _
    > ByVal bmp As Bitmap, ByVal angle As Single, ByVal x As Integer, ByVal y As Integer) As Bitmap
    > ByValの所で構文エラーとなってしまいます。

    いやいや。
    せめて、どの ByVal が何という構文エラーになっているのかまで
    きちんと内容を示しましょうよ。

    Function を置く場所を、文法的に間違えているということはないですよね…?
    (Class や Module の外側に書こうとしているなど)
違反を報告
引用返信 削除キー/
■35231 / ResNo.4)  Re[4]: 画像の中心を基点に回転
□投稿者/ ま〜 一般人(19回)-(2022/11/15(Tue) 17:03:14)
  • アイコン感謝です。

    出来ました。

    亀速度で勉強中です。少しずつですが理解出来る様になってきました。道のりは長いですが。。。

    魔界さんのおかげです。
    ありがとうございます。
解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -