Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.042 c
2-1160741232
AlexanderMS
2006-10-13 16:07
2006.10.29
Обнаружение русской версии Windows.


3-1157366093
tytus
2006-09-04 14:34
2006.10.29
помогите с подключением


1-1158591285
rub67
2006-09-18 18:54
2006.10.29
TRemotable и управление памятью


15-1159992827
dreamse
2006-10-05 00:13
2006.10.29
Есть ли на свете кнопка ?


6-1149132298
BanderLog
2006-06-01 07:24
2006.10.29
Indy10 WriteFile и синхронизация





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский