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

Вниз

Не получается загружать картинки формата PNG в ImageList. D 2009   Найти похожие ветки 

 
Kilowatt ©   (2011-12-26 23:15) [0]

Всем привет.
Delphi 2009.
Нужно загружать картинки формата PNG в ImageList в определенные для каждого файла индексы, потом компоненты программы используют эти картинки в соответствии с индексами.
Пытаюсь загрузить в TImageList в рантайме, но почему-то ничего не получается. GetLastError говорит: Параметр задан неверно. Компилятор не ругается. При этом картинка не убивается, та что была загружена в design time. Вот пример кода который я пытаюсь применить для загрузки в imagelist в индекс 8:
var
png: tpngimage;
begin
png := tpngimage.Create;
 png.LoadFromFile("d:\1.png");
 ImageList1.DrawingStyle := dsTransparent;
 ImageList1.Masked := true;
 ImageList1.Draw(Canvas, 0, 0, 8);
png.Free;
end;
Подскажите, что не правильно и куда копать? BMP и другие форматы картинок не предлагать, нужно именно PNG.
Заранее благодарен!


 
Rouse_ ©   (2011-12-26 23:23) [1]


> Пытаюсь загрузить в TImageList в рантайме, но почему-то
> ничего не получается.

Стесняюсь спросить, а в какой строчке приведенного кода ты ее загружаешь?


 
sniknik ©   (2011-12-26 23:29) [2]

> что не правильно
вот это
> BMP и другие форматы картинок не предлагать, нужно именно PNG.
идеологически, ImageList хранит битмапы, отрисовка (Draw) идет тоже на них, и раз ты что-то пытаешься нарисовать... это уже не PNG.

ну и код конечно неправильный, нет добавления/замены битмапа в ImageList, зато есть попытка отрисовать на какой то "левый" (не понятно из куска "кода" к чему относится) канвас.


 
Natalya   (2011-12-26 23:31) [3]

Загрузка png.LoadFromFile("d:\1.png");
Далее отрисовка.
Пересмотрел еще раз код ) Сам код переделал из кода загрузки bmp файлов. Правда выкинул вот эту строку    ImageList1.Add(png,8), т.к. это только с bitmap работает и думаю, что из-за этого как раз и не рисуется. Я так понимаю, что никак не сделать?


 
Kilowatt ©   (2011-12-26 23:33) [4]

Блин. Подставился логин подруги )


 
Kilowatt ©   (2011-12-26 23:35) [5]


> ну и код конечно неправильный, нет добавления/замены битмапа
> в ImageList, зато есть попытка отрисовать на какой то "левый"
> (не понятно из куска "кода" к чему относится) канвас.

Canvas от TForm, на которой размещен ImageList. Я понял, что сделал не верно, но вот как выйти из ситуации понять не могу. Неужели только bmp можно загружать таким образом?


 
KilkennyCat ©   (2011-12-26 23:44) [6]


> Подставился логин подруги )

сказки рассказывай детям.


 
KilkennyCat ©   (2011-12-26 23:44) [7]


> Неужели только bmp можно загружать таким образом?

загружать ты можешь хоть черта в ступе, преобразования никто не отменял


 
Anatoly Podgoretsky ©   (2011-12-26 23:45) [8]

> Kilowatt  (26.12.2011 23:15:00)  [0]

А какое отношение переменная png имеет к ImageList1


 
Kilowatt ©   (2011-12-26 23:45) [9]


> сказки рассказывай детям.

Даже и не собираюсь.
По сути вопроса можете что подсказать?


 
Kilowatt ©   (2011-12-26 23:50) [10]


> А какое отношение переменная png имеет к ImageList1

Запутался я уже с этой загрузкой...
Брал вот этот код и пытался его переделать под загрузку PNG:
procedure TForm1.Button1Click(Sender: TObject);
var
 bm : TBitmap;
 il : TImageList;
begin
 bm := TBitmap.Create;
 bm.LoadFromFile("C:\DownLoad\TEST.BMP");
 il := TImageList.CreateSize(bm.Width,
                             bm.Height);
 il.DrawingStyle := dsTransparent;
 il.Masked := true;
 il.AddMasked(bm, clRed);
 il.Draw(Form1.Canvas, 0, 0, 0);
 bm.Free;
 il.Free;
end;


 
Kilowatt ©   (2011-12-26 23:52) [11]


> загружать ты можешь хоть черта в ступе, преобразования никто
> не отменял

Хорошо, можете подсказать как сделать преобразование подходящее для Bitmap после загрузки в PNGImage и не потерять прозрачность PNG? Если получится, то такой варинт устроит.


 
Anatoly Podgoretsky ©   (2011-12-27 00:00) [12]

function AddMasked(Image: TBitmap; MaskColor: TColor): Integer;


 
Kilowatt ©   (2011-12-27 00:09) [13]

Что бы использовать функцию AddMasked нужно файл в формате bmp ведь загрузить. А у меня файлы в png формате. Вот как тут состыковать?


 
KilkennyCat ©   (2011-12-27 00:43) [14]

что ты хочешь в имаджелист засунуть?


 
Kilowatt ©   (2011-12-27 00:56) [15]

Нужно 20 картинок в формате PNG засунуть в рантайме в TImageList, что бы потом эти картинки использвать в элементах TButton, TTrayIcon и TPopupMenu.


 
sniknik ©   (2011-12-27 01:04) [16]

> в формате PNG засунуть в рантайме в TImageList
обломайся бабка мы на корабле. © анекдот

не получится, ImageList не хранит "в формате PNG", уже говорили. т.что можешь забить, и пойти улицу например от снега почистить.


 
Германн ©   (2011-12-27 01:07) [17]

TsAlphaImageList от AlphaControls http://www.alphaskins.com/index_rus.php
интересно трактует фильтр Bitmap
В его ОпенДиалоге есть следующие фильтры:
All (*.png, *.ico)
Icons (*.ico)
Bitmaps (*.png)

:)


 
Труп робота дохлого   (2011-12-27 01:11) [18]


> что бы потом эти картинки использвать в элементах TButton,
>  TTrayIcon и TPopupMenu.

для этого:
1. необязательно использовать png, насколько я помню, ico с альфаканалом вполне работают, да и в иконках должны быть иконки,
2. фон предполагает постоянные изменения?


 
KilkennyCat ©   (2011-12-27 01:12) [19]

Труп робота дохлого - нечаянно :)


 
Германн ©   (2011-12-27 01:34) [20]


> KilkennyCat ©   (27.12.11 01:12) [19]
>
> Труп робота дохлого - нечаянно :)
> <Цитата>
>
>  

сказки рассказывай детям. (с)
:)



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1324025146
Win7_comp
2011-12-16 12:45
2012.04.22
Windows 7 64x отключается экран


2-1324738361
Евгений07
2011-12-24 18:52
2012.04.22
ADODataSet узнать тип поля


15-1324240202
Юрий
2011-12-19 00:30
2012.04.22
С днем рождения ! 19 декабря 2011 понедельник


15-1324276198
brother(home)
2011-12-19 10:29
2012.04.22
HTML Table + CSS


2-1324826113
Pcrepair
2011-12-25 19:15
2012.04.22
idHTTP1 и закачка стр. из ЯНДЕКС.ру