![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается загружать картинки формата PNG в ImageList. D 2009
Kilowatt © (2011-12-26 23:15:00)Всем привет.
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.
Заранее благодарен!
Германн (2011-12-27 01:34:00) [1]
> KilkennyCat © (27.12.11 01:12) [19]
>
> Труп робота дохлого - нечаянно :)
> <Цитата>
>
>
сказки рассказывай детям. (с)
:)
KilkennyCat (2011-12-27 01:12:00) [2]Труп робота дохлого - нечаянно :)
Труп робота дохлого (2011-12-27 01:11:00) [3]
> что бы потом эти картинки использвать в элементах TButton,
> TTrayIcon и TPopupMenu.
для этого:
1. необязательно использовать png, насколько я помню, ico с альфаканалом вполне работают, да и в иконках должны быть иконки,
2. фон предполагает постоянные изменения?
Германн (2011-12-27 01:07:00) [4]TsAlphaImageList от AlphaControls http://www.alphaskins.com/index_rus.php
интересно трактует фильтр Bitmap
В его ОпенДиалоге есть следующие фильтры:
All (*.png, *.ico)
Icons (*.ico)
Bitmaps (*.png)
:)
sniknik (2011-12-27 01:04:00) [5]> в формате PNG засунуть в рантайме в TImageList
обломайся бабка мы на корабле. © анекдот
не получится, ImageList не хранит "в формате PNG", уже говорили. т.что можешь забить, и пойти улицу например от снега почистить.
Kilowatt (2011-12-27 00:56:00) [6]Нужно 20 картинок в формате PNG засунуть в рантайме в TImageList, что бы потом эти картинки использвать в элементах TButton, TTrayIcon и TPopupMenu.
KilkennyCat (2011-12-27 00:43:00) [7]что ты хочешь в имаджелист засунуть?
Kilowatt (2011-12-27 00:09:00) [8]Что бы использовать функцию AddMasked нужно файл в формате bmp ведь загрузить. А у меня файлы в png формате. Вот как тут состыковать?
Anatoly Podgoretsky (2011-12-27 00:00:00) [9]function AddMasked(Image: TBitmap; MaskColor: TColor): Integer;
Kilowatt (2011-12-26 23:52:00) [10]
> загружать ты можешь хоть черта в ступе, преобразования никто
> не отменял
Хорошо, можете подсказать как сделать преобразование подходящее для Bitmap после загрузки в PNGImage и не потерять прозрачность PNG? Если получится, то такой варинт устроит.
Kilowatt (2011-12-26 23:50:00) [11]
> А какое отношение переменная 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:45:00) [12]
> сказки рассказывай детям.
Даже и не собираюсь.
По сути вопроса можете что подсказать?
Anatoly Podgoretsky (2011-12-26 23:45:00) [13]> Kilowatt (26.12.2011 23:15:00) [0]
А какое отношение переменная png имеет к ImageList1
KilkennyCat (2011-12-26 23:44:00) [14]
> Неужели только bmp можно загружать таким образом?
загружать ты можешь хоть черта в ступе, преобразования никто не отменял
KilkennyCat (2011-12-26 23:44:00) [15]
> Подставился логин подруги )
сказки рассказывай детям.
Kilowatt (2011-12-26 23:35:00) [16]
> ну и код конечно неправильный, нет добавления/замены битмапа
> в ImageList, зато есть попытка отрисовать на какой то "левый"
> (не понятно из куска "кода" к чему относится) канвас.
Canvas от TForm, на которой размещен ImageList. Я понял, что сделал не верно, но вот как выйти из ситуации понять не могу. Неужели только bmp можно загружать таким образом?
Kilowatt (2011-12-26 23:33:00) [17]Блин. Подставился логин подруги )
Natalya (2011-12-26 23:31:00) [18]Загрузка png.LoadFromFile('d:\1.png');
Далее отрисовка.
Пересмотрел еще раз код ) Сам код переделал из кода загрузки bmp файлов. Правда выкинул вот эту строку ImageList1.Add(png,8), т.к. это только с bitmap работает и думаю, что из-за этого как раз и не рисуется. Я так понимаю, что никак не сделать?
sniknik (2011-12-26 23:29:00) [19]> что не правильно
вот это
> BMP и другие форматы картинок не предлагать, нужно именно PNG.
идеологически, ImageList хранит битмапы, отрисовка (Draw) идет тоже на них, и раз ты что-то пытаешься нарисовать... это уже не PNG.
ну и код конечно неправильный, нет добавления/замены битмапа в ImageList, зато есть попытка отрисовать на какой то "левый" (не понятно из куска "кода" к чему относится) канвас.
Rouse_ (2011-12-26 23:23:00) [20]
> Пытаюсь загрузить в TImageList в рантайме, но почему-то
> ничего не получается.
Стесняюсь спросить, а в какой строчке приведенного кода ты ее загружаешь?