2017-02-14 2 views
-1

大きなサイズのピクチャボックスを作成しようとしています。私は作成し、8500x8500までのサイズのビットマップを描くことができます。しかし、私はそれをクリアし、同じサイズの別のビットマップをロードすると、それはOutofMemoryExceptionを示しています。続きC#で大きなサイズ(20000,20000)のピクチャボックスを作成する方法は?

は、コードスニペットです:

pictureBox_MouseMove() 
{ 
    //Draw some lines... 
} 

buttonClear_Click() 
{ 
    Bitmap new_image = new Bitmap(8500,8500); // OutofMemoryException 
} 

私はまた、これらのオブジェクトにメモリを割り当てる方法を知っていただきたいと思います。

ありがとうございます。

+0

GDI +の制限のために(ほぼ)不可能です。http://stackoverflow.com/questions/29175585/what-is-the-maximum-resolution-of-c-sharp-net-bitmap – Pedro

+1

非常に良いdup。プロジェクト>プロパティ>ビルドタブを選択し、「32ビット優先」チェックボックスをオフにします。ビッグビットマップを操作するときには、32ビットプロセスで276メガバイトの連続した領域が見つかることがあります。プログラムの開始直後にしか動作しません。 64ビットプロセスでは問題ではなく、たくさんのスペースがあります。最大2ギガバイト、およそ23000 x 23000のビットマップにすることができます。 –

+0

ありがとうHans Passant ...それは本当に働いた.. –

答えて

0

新しいビットマップが作成されたときに古いビットマップが破棄されていないようです。 新しいビットマップを作成する前にoldimage.Dispose()を呼び出してください。

+0

私はこれを試みたが、まだ動作しません。 –

+0

Hm、もしあなたがそれをもう一度作ることができれば、古いものが実際にそして本当に本当に本当にクリアされ、削除され、処分されるならば、たぶん、いくつかの参照はまだそこにハングアップ..? – TaW

関連する問題