Como uso bitmaps grandes no .NET?
Estou tentando escrever um aplicativo de visualização de imagem leve. No entanto, existem limitações de memória do sistema com o .NET.
Ao tentar carregar bitmaps grandes 9000 x 9000 px ou maior, 24 bits), recebo uma System.OutOfMemoryException. Este é um PC com Windows 2000 com 2 GB de RAM (dos quais 1,3 GB são usados). Também leva muito tempo para tentar carregar os arquivos.
O código a seguir gera esse erro:
Image image = new Bitmap(filename);
using (Graphics gfx = this.CreateGraphics())
{
gfx.DrawImage(image, new Point(0, 0));
}
Como este código:
Stream stream = (Stream)File.OpenRead(filename);
Image image = Image.FromStream(stream, false, false);
using (Graphics gfx = this.CreateGraphics())
{
gfx.DrawImage(image, new Rectangle(0, 0, 100, 100), 4000, 4000, 100, 100, GraphicsUnit.Pixel);
}
Além disso, basta fazer exatamente isso:
Bitmap bitmap = new Bitmap(filename);
IntPtr handle = bitmap.GetHbitmap();
Este último código foi projetado para uso com o GDI. Ao pesquisar isso, descobri que esse é realmente um problema de memória em que o .NET tenta alocar o dobro do necessário em um único bloco contíguo de memóri
http: //bytes.com/groups/net-c/279493-drawing-large-bitmap
Sei de outros aplicativos (Internet Explorer, MS Paint etc.) que é possível abrir imagens grandes e rapidamente. Minha pergunta é,como uso bitmaps grandes com o .NET?
Existe alguma maneira de transmiti-los ou carregá-los sem memóri