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

image.cloneとrotateflip

環境/言語:[2000SP4 XPSP2 VB.NET2003]
分類:[.NET]

rotateflipしたイメージのcloneを作ろうとしたり、イメージのcloneを
rotateflipしようとすると「GDI+での一般的なエラーです」と出るのですが
回避方法はありますでしょうか
具体的にはどのようなコードでしょうか?
■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すると動きます
ただ、オリジナルを回転すると戻すのが大変だし…
まあ読み直せばいいんだけど
過去ログに似たような投稿がありましたので、とりあえずご覧になってみてください。

http://dobon.net/vb/bbs/log3-24/15246.html
  • 題名: Re[4]: image.cloneとrotateflip
  • 著者: /400
  • 日時: 2008/08/18 13:53:18
  • ID: 22733
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■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)
解決済み!

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