- 題名: image.cloneとrotateflip
- 日時: 2008/08/16 15:12:39
- ID: 22720
- この記事の返信元:
- (なし)
- この記事への返信:
- [22722] Re[1]: image.cloneとrotateflip2008/08/17 0:42:48
- ツリーを表示
■No22722に返信(管理人さんの記事) > 具体的にはどのようなコードでしょうか? If 最初 Then Img = Image.FromFile(File) If FileNo = 1 Then Img1 = Img.Clone If Rot1 Then Img.RotateFlip(RotateFlipType.Rotate90FlipNone) EndIf If FileNo = 2 Then Img2 = Img.Clone : Call XXX(Img) Else If FileNo = 1 Then ImgX = Img1.Clone If Rot1 Then ImgX.RotateFlip(RotateFlipType.Rotate90FlipNone) ←ここでエラー EndIf If FileNo = 2 Then ImgX = Img2.Clone : Call XXX(ImgX) Endif System.Runtime.InteropServices.ExternalException: GDI+ で一般的なエラーが発生しました。 at System.Drawing.Image.RotateFlip(RotateFlipType rotateFlipType) at xxx.Module1.xxx() in xxx\Module1.vb:line 2277 複数の画像をまとめて1つのPictureBoxに表示してるのですが、その都度 ファイルを読み込みたくないのと、リセット時に簡単に元に戻せるように 元のイメージを直接いじるのは避けたいので、イメージを保管して以降の 処理(回転とかズームとか)はクローンで処理しようとしたのです …と思ったのですが、念のためにそこだけのテスト版作って試したら 動きますねえ… それとImg1をRotateFlipしてからCloneすると動きます ただ、オリジナルを回転すると戻すのが大変だし… まあ読み直せばいいんだけど
■No22724に返信(管理人さんの記事) > 過去ログに似たような投稿がありましたので、とりあえずご覧になってみてください。 > > http://dobon.net/vb/bbs/log3-24/15246.html どうやってビットマップをイメージにしようか悩みましたが結局以下のような コードで何とかなりました ありがとうございました Select Case _Rot1 Case "R" _Img1.RotateFlip(RotateFlipType.Rotate90FlipNone) Case "L" _Img1.RotateFlip(RotateFlipType.Rotate270FlipNone) Case "H" _Img1.RotateFlip(RotateFlipType.RotateNoneFlipX) Case "V" _Img1.RotateFlip(RotateFlipType.RotateNoneFlipY) End Select _TmpBMP = New Bitmap(_Img1.Width, _Img1.Height) _TmpG = Graphics.FromImage(_TmpBMP) _TmpG.DrawImage(_Img1, 0, 0, _Img1.Width, _Img1.Height) _hBMP = _TmpBMP.GetHbitmap _ImgX = Image.FromHbitmap(_hBMP)
分類:[.NET]
rotateflipしたイメージのcloneを作ろうとしたり、イメージのcloneを
rotateflipしようとすると「GDI+での一般的なエラーです」と出るのですが
回避方法はありますでしょうか