Форум: "Media";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизДобраться к пикселю иконки Найти похожие ветки
← →
Tahion2 (2004-07-10 09:09) [0]Дано: файл ICL с несколькимим форматами иконок в нутри (64*64, 48*48, 32*32б все по 32bpp и 24bpp).
Над этими иконками нужно выполнить определенные действия. Для этого нужно считать цвет каждого пикселя, изменить его и записать назад.
Как это сделать?
← →
Tahion2 (2004-07-10 10:23) [1]Ошибка: Дан не ICL, а ICO файл.
← →
Алхимик © (2004-07-10 11:16) [2]А не проще Имадж Эдитором из поставки Delphi нашлёпать все варианты нужных иконок и не усложнять себе жизнь?
← →
Tahion2 (2004-07-10 13:24) [3]Не подходит.
В редакторе иконок нужных вариантов нет.
← →
Огромное Кулясищще © (2004-07-10 15:51) [4]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_icons.asp
http://kainsk.tomsk.ru/g2003/sys26/oswin.htm
← →
Tahion2 (2004-07-10 18:28) [5]Кулясище, а у тебя нету примера из этих статей, переведенного на делфи?
Или какой другой готовый код, позволяющий добраться к пикселю?
← →
Огромное Кулясищще © (2004-07-10 19:23) [6]Прежде всего, нет специального кода, который добрался бы до пикселя. Суть - загрузить иконку (иконки в растр). Именно это и щем.
Первые ласточки:
http://community.borland.com/article/0,1410,16778,00.html
и пример, если надо:
http://www.developers.demon.co.uk/iconex.html
Проблемы могут быть с 48x48, но ещё раз отправляю на:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Icons/AboutI cons.asp
← →
Tahion2 (2004-07-10 22:49) [7]И еще вопрос: а откуда ты все знаешь про иконки?
← →
Огромное Кулясищще © (2004-07-10 23:03) [8]> И еще вопрос: а откуда ты все знаешь про иконки?
Книги, логика и поиск :)
← →
Tahion2 (2004-07-11 17:18) [9]я имею ввиду, что ты такого для иконок писал? Какую программу?
← →
Огромное Кулясищще © (2004-07-11 19:17) [10]Для иконок не писал. Но 32-битные изображения люблю.
← →
Tahion2 (2004-07-12 13:52) [11]
> Прежде всего, нет специального кода, который добрался бы
> до пикселя. Суть - загрузить иконку (иконки в растр). Именно
> это и щем.
>
> Первые ласточки:
> http://community.borland.com/article/0,1410,16778,00.html
> и пример, если надо:
> http://www.developers.demon.co.uk/iconex.html
Это я уже делал. Получить 32-битную иконку в BMP - не проблема. Проблема перевести ее назад из BMP в 32-битную иконку. Более того, при этом нужно заменить все ее пикселы на свои.
← →
Огромное Кулясищще © (2004-07-12 17:56) [12]Те ссылки для того, чтобы разобраться в том, как загрузить из одного файла несколько иконок.
Если можешь загрузить, то значит и можешь сохранить.
http://www.awitness.org/delphi_pascal_tutorial/source2/icon_file_format.html
http://www.awitness.org/delphi_pascal_tutorial/source2/save_icon.html
← →
Tahion2 (2004-07-12 18:48) [13]http://www.awitness.org/delphi_pascal_tutorial/source2/icon_file_format.html
Ты не пробовал заставить в этом коде правильно работать альфаканал для 32bpp иконок?
← →
Огромное Кулясищще © (2004-07-12 19:27) [14]>Ты не пробовал заставить в этом коде правильно работать альфаканал для 32bpp иконок?
Нет, но почти всё готово:
см. procedure TForm1.ShowIconUserRoutine(w : Word);
и про то, как идёт работа с XOR (палитру сразу пропускаешь), а что делать с AND маской написано по прекрансому адресу, который жу звучал:
http://kainsk.tomsk.ru/g2003/sys26/oswin.htm
"Таким образом, мы полностью игнорировали растр маски при считывании данных из файла и при организации вывода изображения на экран монитора!"
← →
Tahion2 (2004-07-13 14:49) [15]Сделал так. Перед
.....
Image1.Picture.Icon.Handle:=CreateIconIndirect(IconInfo);
WriteCalcToMemo(w);
CloseFile(IconFile);
Вставил:blend.BlendOp:=AC_SRC_OVER;
blend.BlendFlags:=0;
blend.SourceConstantAlpha:=255;
blend.AlphaFormat:=0; //$1;
Bitmap:=TBitmap.Create;
Bitmap.Height:=IconDirEntry[w].bHeight;
Bitmap.Width:=IconDirEntry[w].bWidth;
AlphaBlend(Bitmap.Canvas.Handle, 0, 0, IconDirEntry[w].bWidth, IconDirEntry[w].bHeight, Image2.Picture.Bitmap.Handle,
0, 0, IconDirEntry[w].bWidth, IconDirEntry[w].bHeight, blend);
Bitmap.SaveToFile("d:\2.bmp");
Bitmap.Free;
Bitmap: TBitmap;
blend: _BLENDFUNCTION;
При открытии программы получаю:
Точка входа в процедуру AlphaBlend не найдена в дидлиотеке DLL gdi32.dll
Как это понимать?
****************************************************************
а что делать с AND маской написано по прекрансому адресу, который жу звучал:
http://kainsk.tomsk.ru/g2003/sys26/oswin.htm
1) Я почти не знаю Си, поэтому мне тяжело читать приведенный там код.
2) Я, даже, не все понимаю из того, что написано тут:
http://www.awitness.org/delphi_pascal_tutorial/source2/icon_file_format.html
Вывод: У меня тяжелый случай, доктор. :)
P.S. Напиши мне на tahion@ukrpost.net
← →
Огромное Кулясищще © (2004-07-13 15:43) [16]Да, случай тяжёлый. Ну ладно, попробуем разобраться, но мне нужно время. Вечером напишу.
← →
Огромное Кулясищще © (2004-07-13 21:39) [17]Занимаюсь этим делом.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c