CodeName33 писал(а):Ну можно их в папку TEMP на винте закешировать
CodeName33 писал(а):Andrey Fedorov, Так тоже можно, но если картинок будет больше, или они каждая будет больше занимать, но пямяти может не хватить, начнёт свапить...
CodeName33 писал(а):Можно кэшировать в пямяти картинок 500 остальные по мере необходимости выгружать збрасывая на винт, чтобы потом быстро загрузить.
Не свопить, а закричит об нехватке физической памяти... IMHO.
Ну образ уже загруженной картинки можно сохранять в кэше (саму-то картинку не надо - они по 5 Mb могут быть)...
Alfa писал(а):А как лучше загружать картинки в память, с помощью чего?
Alfa писал(а):Поэтому и нашел CreateGraphicsFromImage, но оно почему-то не работает. Может быть кто-нибудь знает, почему?
Alfa писал(а):В GDI+ нашел функцию, CreateGraphicsFromImage, которой требуется для создания графики объект формата Image, при этом эта функция может возратить hdc, который мне так нужен для моей функции StretchBlt. Но мне еще нужно загрузить в Image картинку из файла, для этого использую CreateImage.
Получаем:
StretchBlt ..., CreateGraphicsFromImage(CreateImage("C:\abc.bmp")).hdc, ...
Проблема в том, что возращенный hdc содержит полностью черное изображение, проверял при помощи GetPixel. В чем проблема?
Alfa писал(а):Вообще, что мне нужно, это загрузить в PictureBox уменьшенную большую картинку. Для этого я сделал другой PictureBox, грузил туда картинку при помощи CreateImage, и уже делал StretchBlt между двумя PictureBox. Но это все было долго, я решил работать с памятью. Поэтому и нашел CreateGraphicsFromImage, но оно почему-то не работает. Может быть кто-нибудь знает, почему?
Set PictureBox.Picture = CreateImage("картинка.bmp").GetThumbnailImage(100, 100).Picture
hMemoryDC2 = CreateCompatibleDC(p(i).hdc)
hOldBitMap = SelectObject(hMemoryDC2, p(i).Picture)
BitBlt hMemoryDC2, 0, 0, 192, 144, p(i).hdc, 0, 0, vbSrcCopy
dhdc(some-thing-value) = hMemoryDC2
Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 60