Как показывать на форме около 1000 картинок?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Сообщение Alfa » 29.08.2005 (Пн) 6:59

Вопрос в том, как потом удалять из памяти созданные холсты, и можно примерчик, как создать в памяти холст и перебросить сначала в него картинку из PictureBox, а потом в другой PictureBox из него.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.08.2005 (Пн) 15:20

Удаляются они сами, когда на них пропадают ссылки.
Примерчик:
Код: Выделить всё
Private Sub Form_DblClick()
Dim i As prjGDIplus.Image
Set i = CreateBitmap(100, 100, PixelFormat24bppRGB)
With CreateGraphicsFromImage(i)
    .Clear ARGB(vbRed) 'фон
'   перенос картинки на холст
    .DrawImageEx CreateBitmapFromPicture(Picture1), 10, 10, 20, 20, 0, 0, 20, 20
'   тоже работает, но не подходит идеологически
'    BitBlt .hDC, 10, 10, 20, 20, Picture1.hDC, 0, 0, vbSrcCopy
End With
'   перенос картинки с холста
CreateGraphics(Picture2.hDC).DrawImage i, 5, 5
'   а тут холст сам уничтожится
End Sub
Изображение

Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Сообщение Alfa » 29.08.2005 (Пн) 16:17

А вот мне как раз нужно, чтобы он после завершения процедуры не уничтожался, чтобы я его потом в другой процедуре сам уничтожал.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.08.2005 (Пн) 18:44

Alfa, ты издеваешься что ли?
Код: Выделить всё
Dim i As prjGDIplus.Image
'внешняя ссылка - живёт столько же, сколько весь класс/форма/модуль

Sub s1()
    Set i = CreateBitmap(...) 'создание
End Sub

Sub s2()
    Set i = Nothing 'уничтожение
End Sub

Все без исключения объекты в COM/VB6 ведут себя точно так же: уничтожаются, когда пропадает последняя ссылка.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2005 (Вс) 21:25

Alfa, так что - подошла моя обёртка?

На всякий случай: новая версия выложена на http://users.isnet.ru/tyomitch/FloodFill.zip
Кроме исправленных багов, теперь поддерживаются DC с доступом для чтения и записи (этой функциональности нет в GDI+, поэтому моя обёртка создаёт временный GDI-битмап и копирует содержимое картинки туда и обратно).

В архиве по приведённой ссылке - пример использования новой фичи: применение FloodFill к GDI+-картике.
Изображение

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList