![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
PNG и DrawGrid
Артем22 © (2006-09-14 15:12:00)Подскажите пожалуйста, как можно загрузить графику формата PNG в DrawGrid?
RASkov (2006-09-20 23:28:00) [1]> [27] Артем22 (20.09.06 21:51)
Не переживай.... никтож незнает как ты там делаешь....
Артем22 (2006-09-20 21:51:00) [2]Блин. Я точно тупейший программист в мире -- у меня не получается ни нормально загрузить PNG-файлы в массив, ни нормально вывести изображения на DrawGrid, несмотря на ваши многочисленные ответы...
При загрузке у меня -- access violation, понятно, что до вывода дело и не доходит...
RASkov (2006-09-19 23:03:00) [3]Типа так:
DrawGrid1.Canvas.StretchDraw(Rect, PNGArray[ACol*DrawGrid1.ColCount+ARow].Graphic);
Virgo_Style (2006-09-19 21:47:00) [4]Артем22 (19.09.06 21:29) [24]
drawgrid1.Canvas.StretchDraw(rect, PNG.Graphic);
drawgrid1.Canvas.StretchDraw(rect, PNGArray[i].Graphic);
Артем22 (2006-09-19 21:29:00) [5]Раньше выводились так:
rect:=drawgrid1.CellRect(j,i);
drawgrid1.Canvas.StretchDraw(rect, PNG.Graphic);
И как здесь вывести изображения из массива? Ох, туп я, туп :)))))
Virgo_Style (2006-09-19 20:50:00) [6]Артем22 (19.09.06 20:47) [22]
А как теперь вывести изображения из этого массива на DrawGrid
Точно так же, как выводились раньше
Артем22 (2006-09-19 20:47:00) [7]Блин. Загружаю я файлы-изображения в массив. А как теперь вывести изображения из этого массива на DrawGrid? :) :)
Что-то ничего у меня не получается... :(
Virgo_Style (2006-09-19 08:41:00) [8]Артем22 (18.09.06 23:08) [17]
Вывод (отрисовка) происходит каждый раз по мере надобности. Загрузить же можно один раз.
P.S. У меня страшное (жуткое, кровь леденящее) чувство, что я вижу кусочек OnDrawCell %-)
Артем22 (2006-09-19 07:23:00) [9]А на что? На какой-то сторонний компонент? Может, посоветуете.
RASkov, попробую сделать так, как вы предлагаете...
Германн (2006-09-19 00:29:00) [10]Ох чую, не тем путем пошел товарисч. Нужно менять TDrawGrid на что-то другое.
RASkov (2006-09-19 00:14:00) [11]Попробуй сделать так: При старте или по клику на кнопку или там еще где
заполнить вот такой массив
ArrPict: array of TBitMap;
ну конвертнул png в Битмап... сделал SetLength(ArrPict, <Кол-во картинок>);... заполнил... а уже на DrawCell выводи их из массива...
Артем22 (2006-09-18 23:08:00) [12]Да вся проблема в том, что файлы лежат в отдельной директории, и их количество заранее неизвестно. Поэтому я использую SearchRec, узнаю кол-во изображений определенного формата (png), создаю столько ячеек, сколько и файлов, а затем - загружаю изображения:
[code]
FindFirst(Dir + '*.png', faAnyFile, sr);
for j:=0 to drawgrid1.ColCount-1 do
for i:=0 to drawgrid1.RowCount-1 do
begin
PNG.LoadFromFile(Dir + sr.Name);
rect:=drawgrid1.CellRect(j,i);
drawgrid1.Canvas.StretchDraw(rect, PNG.Graphic);
if FindNext(sr) <> 0 then break;
end;
[/code]
Так что разделить загрузку файлов и их вывод вроде бы нелзья... Или это я такой тупой?
Virgo_Style (2006-09-18 21:27:00) [13]Выводить - про DrawCell, загружать - когда угодно, хоть в OnCreate, хоть при первом отображении, здесь простор для фантазии
Артем22 (2006-09-18 21:23:00) [14]А если выводить по DrawCell - то все жутко тормозит, даже если загружаешь три файла.
Ketmar (2006-09-18 20:23:00) [15]> [13] Артем22 (18.09.06 19:42)
это не проблема. это нормальное поведение. путь решения её ты только что сам и указал.
Артем22 (2006-09-18 19:42:00) [16]Потому что изображения выводятся в ячейки DrawGrid'a на Button.Click. Если выводить так, а не по DrawCell, то при прокруте Grid'a все изображения исчезают. Вот это и есть моя проблема.
Ketmar (2006-09-18 19:01:00) [17]> [11] Артем22 (18.09.06 18:04)
тогда при чём тут грид?
Артем22 (2006-09-18 18:04:00) [18]Процедура вывода изображений находится на Button.Click
Ketmar (2006-09-18 17:46:00) [19]> [8] Артем22 (15.09.06 10:35)
что-то повешано? куда-куда???
Артем22 (2006-09-18 17:20:00) [20]Неужели никто не может ответить?