MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Для картинки недостаточно памяти при использовании Graphics"
Answer 919326
Ваш код некорректен: согласно документации, поток, скормленный Image.FromStream, должен оставаться открытым на протяжении всего времени существования изображения. Кроме того, Bitmap.Clone на самом деле не делает то, что вы ожидаете (создание копии Bitmap, полностью независимой от исходного файла изображения).
Возможно, ваш код заточен под .NET 2.0, так как он в нем работает хотя бы частично (не бросает исключение, но все равно оставляет Bitmap зависимым от исходного файла, так что попытка сохранить его в другой файл после удаления исходного файла выдает "В GDI+ произошла ошибка общего вида"). Подробнее о различиях PictureBox в разных версиях .NET можете посмотреть здесь.
Правильный код для создания Bitmap, независимого от исходного файла изображения:
MemoryStream ms; private void button1_Click(object sender, EventArgs e) { string FullName = "..."; ms = new MemoryStream(); using (FileStream stream = File.OpenRead(FullName)) { stream.CopyTo(ms); pictureBox1.Image = Bitmap.FromStream(ms); } } private void button2_Click(object sender, EventArgs e) { using (Graphics g = Graphics.FromImage(pictureBox1.Image)) { g.Clear(Color.FromArgb(0, 255, 255, 255)); pictureBox1.Invalidate(); } }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.