Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

PNG и DrawGrid   Найти похожие ветки 

 
Артем22   (2006-09-14 15:12) [0]

Подскажите пожалуйста, как можно загрузить графику формата PNG в DrawGrid?


 
DevilDevil ©   (2006-09-14 15:16) [1]

Как вариант - скачать из интернета PngImage. В процессе переконвертировать в Битмап, а с Битмапом проблем уже не должно быть


 
Артем22   (2006-09-14 18:48) [2]

Скачал PngImage, в хелпе нашел Drawing png over other formats. Только никак не понял, как вывести PNG с помощью этого на DrawGrid. Может поможете? =)


 
Vovan#1   (2006-09-14 19:06) [3]

>Скачал PngImage, в хелпе нашел Drawing png over other formats. Только никак не понял, как вывести PNG с помощью этого на DrawGrid. Может поможете? =)

Укажи PNGImage в uses - можешь грузить .png в TPicture. Загруженную картинку найдёшь в TPicture.Graphic.


 
Артем22   (2006-09-14 19:29) [4]

С загрузкой PNG разобрался сам. Только вот в чем проблема - если загрузить несколько файлов в ячейки DrawGrid (от пяти), то все ужасно тормозит. Процедура загрузки файлов у меня на DrawCell. Если поставить, например, на Button - то все нормально, но при прокрутке, кликах на ячейках и т.д. изображения исчезают.


 
Ketmar ©   (2006-09-14 19:31) [5]

> Процедура загрузки файлов у меня на DrawCell
а не пробовал в DrawCell "пи" вычислять с парой миллиардов знаков? знатоки говорят, что этот секретный код спасёт.


 
Артем22   (2006-09-14 20:03) [6]

Нет, не пробовал =)))

Так куда же эту чудо-процедуру поставит, чтобы не было тормозов и глюков с отрисовкой?..


 
Ketmar ©   (2006-09-14 22:41) [7]

> [6] Артем22   (14.09.06 20:03)
загружать картики ДО вывода grid"а.


 
Артем22   (2006-09-15 10:35) [8]

Ketmar, что-то у меня ничего не получается :(

Может быть, тогда скажете, как избавиться от глюков с отрисовкой, если процедура вывода повешена на Button?


 
Артем22   (2006-09-18 17:20) [9]

Неужели никто не может ответить?


 
Ketmar ©   (2006-09-18 17:46) [10]

> [8] Артем22   (15.09.06 10:35)
что-то повешано? куда-куда???


 
Артем22   (2006-09-18 18:04) [11]

Процедура вывода изображений находится на Button.Click


 
Ketmar ©   (2006-09-18 19:01) [12]

> [11] Артем22   (18.09.06 18:04)
тогда при чём тут грид?


 
Артем22   (2006-09-18 19:42) [13]

Потому что изображения выводятся в ячейки DrawGrid"a на Button.Click. Если выводить так, а не по DrawCell, то при прокруте Grid"a все изображения исчезают. Вот это и есть моя проблема.


 
Ketmar ©   (2006-09-18 20:23) [14]

> [13] Артем22   (18.09.06 19:42)
это не проблема. это нормальное поведение. путь решения её ты только что сам и указал.


 
Артем22   (2006-09-18 21:23) [15]

А если выводить по DrawCell - то все жутко тормозит, даже если загружаешь три файла.


 
Virgo_Style ©   (2006-09-18 21:27) [16]

Выводить - про DrawCell, загружать - когда угодно, хоть в OnCreate, хоть при первом отображении, здесь простор для фантазии


 
Артем22   (2006-09-18 23:08) [17]

Да вся проблема в том, что файлы лежат в отдельной директории, и их количество заранее неизвестно. Поэтому я использую 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]

Так что разделить загрузку файлов и их вывод вроде бы нелзья... Или это я такой тупой?


 
RASkov   (2006-09-19 00:14) [18]

Попробуй сделать так: При старте или по клику на кнопку или там еще где
заполнить вот такой массив
ArrPict: array of TBitMap;
ну конвертнул png в Битмап... сделал SetLength(ArrPict, <Кол-во картинок>);... заполнил... а уже на DrawCell выводи их из массива...


 
Германн ©   (2006-09-19 00:29) [19]

Ох чую, не тем путем пошел товарисч. Нужно менять TDrawGrid на что-то другое.


 
Артем22   (2006-09-19 07:23) [20]

А на что? На какой-то сторонний компонент? Может, посоветуете.

RASkov, попробую сделать так, как вы предлагаете...


 
Virgo_Style ©   (2006-09-19 08:41) [21]

Артем22   (18.09.06 23:08) [17]

Вывод (отрисовка) происходит каждый раз по мере надобности. Загрузить же можно один раз.

P.S. У меня страшное (жуткое, кровь леденящее) чувство, что я вижу кусочек OnDrawCell %-)


 
Артем22   (2006-09-19 20:47) [22]

Блин. Загружаю я файлы-изображения в массив. А как теперь вывести изображения из этого массива на DrawGrid? :) :)

Что-то ничего у меня не получается... :(


 
Virgo_Style ©   (2006-09-19 20:50) [23]

Артем22   (19.09.06 20:47) [22]
А как теперь вывести изображения из этого массива на DrawGrid

Точно так же, как выводились раньше


 
Артем22   (2006-09-19 21:29) [24]

Раньше выводились так:

 
rect:=drawgrid1.CellRect(j,i);
drawgrid1.Canvas.StretchDraw(rect, PNG.Graphic);


И как здесь вывести изображения из массива? Ох, туп я, туп :)))))


 
Virgo_Style ©   (2006-09-19 21:47) [25]

Артем22   (19.09.06 21:29) [24]
drawgrid1.Canvas.StretchDraw(rect, PNG.Graphic);


drawgrid1.Canvas.StretchDraw(rect, PNGArray[i].Graphic);


 
RASkov   (2006-09-19 23:03) [26]

Типа так:
DrawGrid1.Canvas.StretchDraw(Rect, PNGArray[ACol*DrawGrid1.ColCount+ARow].Graphic);


 
Артем22   (2006-09-20 21:51) [27]

Блин. Я точно тупейший программист в мире -- у меня не получается ни нормально загрузить PNG-файлы в массив, ни нормально вывести изображения на DrawGrid, несмотря на ваши многочисленные ответы...

При загрузке у меня -- access violation, понятно, что до вывода дело и не доходит...


 
RASkov   (2006-09-20 23:28) [28]

> [27] Артем22   (20.09.06 21:51)

Не переживай.... никтож незнает как ты там делаешь....



Страницы: 1 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
15-1160576251
Гарри Поттер
2006-10-11 18:17
2006.10.29
Поиск в Опера 9


3-1156870110
Telerion
2006-08-29 20:48
2006.10.29
Проблема с SQL запросом по датам. Сравнение дат. (paradox)


2-1160589005
CAH CAHbI4
2006-10-11 21:50
2006.10.29
Ошибка при выпонении процедуры на событии OnCreate


15-1160078005
Tuks
2006-10-05 23:53
2006.10.29
Не находится файл dclusr50.bpl


2-1161002759
Андрей Иванов
2006-10-16 16:45
2006.10.29
Раскраска столбцов в StringGrid