Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
ВнизНе получается загружать картинки формата 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.002 c