В приведенном выше случае, когда объект «bmp» или «g» выходит из области видимости и сбора мусора, изображение с изображениями изменяется. Я думаю, что изображение всегда ссылается на копию. Я попробовал bmp.clone, чтобы скопировать изображение на изображение, но все же, когда bmp собирает мусор, изображение с изображениями исчезает. В моем случае у меня есть ряд (определенных во время выполнения) таких изображений, которые должны быть назначены для созданных графических ячеек времени исполнения.
Dim bm As New Bitmap("C:\picture.bmp")
Dim thumb As New Bitmap(42, 30)
Dim g As Graphics = Graphics.FromImage(thumb)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(bm, New Rectangle(0, 0, 42, 30), New Rectangle(0, 0, bm.Width, _bm.Height), GraphicsUnit.Pixel)
pbxHead.Image = thumb.Clone()
g.Dispose()
bm.Dispose()
thumb.Dispose()
Поставлено! Бит медленнее, но если я минимизирую окно, он быстрее будет работать. Учитывая, что он должен отображать 30 000 пикселей INDIVIDUALLY, 3 секунды - это плохо. – Cyclone
Если вы рисуете пиксель за пикселем, более быстрый, но немного более сложный метод заключается в вызове метода LockBits в Bitmap. См. Http://www.vb-helper.com/howto_net_lockbits_image_class.html или http://www.bobpowell.net/lockingbits.htm – MusiGenesis
Я использовал SetPixel, который был довольно медленным, как вы можете себе представить, особенно потому, что я добавил некоторые application.doevents() to lol – Cyclone