BITMAP.Clone()について
- 題名: BITMAP.Clone()について
- 著者: きょう
- 日時: 2005/01/14 0:51:01
- ID: 8405
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: BITMAP.Clone()について
- 著者: bell
- 日時: 2005/01/14 9:08:23
- ID: 8407
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: BITMAP.Clone()について
- 著者: きょう
- 日時: 2005/01/15 22:13:23
- ID: 8434
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: BITMAP.Clone()について
- 著者: 中 博俊
- 日時: 2005/01/15 22:46:50
- ID: 8435
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: BITMAP.Clone()について
- 著者: きょう
- 日時: 2005/01/16 13:59:53
- ID: 8446
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: BITMAP.Clone()について
- 著者: 中 博俊
- 日時: 2005/01/16 14:33:57
- ID: 8447
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
みなさん、こんばんは。
BITMAP.Clone() について教えてください。
現在VB.NET2003で、PictureBoxをベースにしたカスタムコントロール(以下Aと呼ぶ)を作成していて、ファイルから読み込んだBitmapの管理と、そのClone作成で悩んでいます。
やりたいことは、複数のAのコントロール間でRectangeを指定した画像のコピーを実現したいのです。ここで読み込んだファイルをロックせず、また極力シンプルな構造にしたいこともあります。以下試したことです。
(文字数の関係があるのでサンプルプロジェクトを添付しています)
【Test #1】(http://dobon.net/vb/dotnet/graphics/drawpicture2.html)
TipsにあるようにFileStreamからBitmapクラスを生成した。しかしStreamをCloseするとBitmap.Clone()でOutOfMemory例外が発生する。
StreamをCloseしないとファイルがロックされ削除できず。
Dim fs As FileStream = New System.IO.FileStream(FName, IO.FileMode.Open, IO.FileAccess.Read)
BM = New Bitmap(fs)
' fs.Close() ←これをやると Clone時に例外発生、コメントのままだとファイルを削除できず
PictureBox1.Image = BM
Dim CloneBM As Bitmap = BM.Clone(rc, BM.PixelFormat)
【Test #2】
読み込んだStreamからByte配列へ格納し、MemoryStreamに格納しBitmapを生成した。これでは無駄(時間)が多すぎ。(サンプル参照ください)
【Test #3】
Bitmapをファイルから生成しこれをCloneした。でもファイルは削除できず
Dim TMPBM As Bitmap = New Bitmap(FName)
BM = TMPBM.Clone()
TMPBM.Dispose()
PictureBox1.Image = BM
Dim CloneBM As Bitmap = BM.Clone(rc, BM.PixelFormat)
どうしたら解決できるでしょうか?
あと腐れなくメモリ上のBitmapをコピーできる方法を探しています。