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

Вниз

Что с иконками?, я не понимаю...   Найти похожие ветки 

 
Borealis   (2003-08-18 20:21) [0]

Было у меня с десяток красивых иконок (файлов с расширением .ico). В одном из своих проектов, я "загнал" эти иконки в TImageList. Спустя некоторое время, файлы иконок затерялись где-то в джунглях винчестера, и я решил восстановить их из старого проекта. Делаю примерно так:

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
ico: TIcon;
begin
ImageList1.DrawingStyle := dsNormal;
ico := TIcon.Create;
for i := 0 to ImageList1.Count - 1 do
begin
ImageList1.GetIcon(i, ico);
ico.SaveToFile("C:\Icons\" + IntToStr(i) + ".ico");
end;
ico.Free;
end;


Открываю каталог "C:\Icons"... Ой!.. Что это?.. Что это за жалкое зрелище? Впечатление, что иконки неделю колбасило в стиральной машине и они там бесжалостно полиняли... :(
(Я наверно что то не так сделал?)


 
Fenik ©   (2003-08-19 00:00) [1]

PixelFormat?


 
Borealis   (2003-08-19 00:27) [2]


> Fenik © (19.08.03 00:00) [1]
> PixelFormat?
??? Это в чём? В TIcon или в TImageList? Так ни в том ни в том нет такого свойства.

Я знаю свойство PixelFormat есть у TBitmap, но он к моей проблеме не относится...


 
Некрофил - затейник__ ©   (2003-08-19 07:10) [3]

2 Borealis
Ты разрешение не менял ? like 32 -> 16


 
Borealis   (2003-08-21 22:56) [4]


> Некрофил - затейник__ © (19.08.03 07:10) [3]
> 2 Borealis
> Ты разрешение не менял ? like 32 -> 16
В смысле разрешение экрана? Нет, у меня всегда стоит True Color.

Странная тишина. Либо никто не знает ответа, либо у всех нормально работает, либо никто не сталкивался с этой проблемой.

Я подготовил небольшой тест. Пожалуйста, уделите ему немного своего внимания...

Положите на форму два TImage ( Image1 и Image2) и TButton ( Button1). В обработчик события OnClick у кнопки скопируйте следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
ico: TIcon;
iml: TImageList;

// Здесь просто прорисовка картинки и не заслуживает вашего внимания.
// Смотрите начиная с begin метода OnClick
procedure DrawBitmap();
var
X, Y: Integer;
Xe, Ye, R: Extended;

function SmoothColor(E: Extended; Color0, Color1: TColor): TColor;
begin
Result := RGB(
Trunc(GetRValue(Color1) * E + GetRValue(Color0) * (1 - E)),
Trunc(GetGValue(Color1) * E + GetGValue(Color0) * (1 - E)),
Trunc(GetBValue(Color1) * E + GetBValue(Color0) * (1 - E)));
end;

begin
bmp := TBitmap.Create;
bmp.Width := 32;
bmp.Height := 32;
for X := 0 to 31 do
for Y := 0 to 31 do
begin
Xe := (2 * (X - 3) / 26 - 1);
Ye := (2 * (Y - 3) / 26 - 1);
R := Sqrt(Xe * Xe + Ye * Ye);
if R > 1 then
bmp.Canvas.Pixels[X, Y] := SmoothColor(1 / (R * R * R), clBlack, clMaroon)
else
bmp.Canvas.Pixels[X, Y] := SmoothColor(cos(R * pi / 2), clMaroon, clYellow);
end;
end;

begin
// Сначала нужно создать и разрисовать иконку.
// Так как у TIcon нет канвы, то рисовать приходится весьма загадочным способом:

// (1) Создаю TBitmap и рисую на нём:
DrawBitmap;

// (2) Создаю TImageList и добавляю в него bmp:
iml := TImageList.CreateSize(32, 32);
iml.AddMasked(bmp, clBlack);
bmp.Free;

// (3) Наконец создаю TIcon и загружаю в него первое изображение из TImageList
ico := TIcon.Create;
iml.DrawingStyle := dsNormal;
iml.GetIcon(0, ico);
iml.Free;

// Всё. Иконка создана. Теперь её можно отобразить:
Image1.Picture.Icon := ico;
ico.Free;

// Теперь сохраняю иконку в файл...
Image1.Picture.Icon.SaveToFile("c:\MyIcon.ico");

// ...и загружаю во второй TImage
Image2.Picture.Icon.LoadFromFile("c:\MyIcon.ico");

// Сравните эти два изображения. Посмотрите файл MyIcon.ico.
// Что я делаю не так? А если всё верно, то как обойти эту фичу?
end;


 
Sheng ©   (2003-08-21 23:45) [5]

Это скорее всего глюг толи TImageList, толи Винды. У меня такое было несколько раз. Я просто открываю ImageList, а там - грязь. Только удалить все иконки от туда и загрузить туда заново... :(



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
3-10622
rosl
2003-08-13 12:16
2003.09.04
копирован ие3


3-10598
BigError
2003-08-14 10:13
2003.09.04
Вопрос знатокам QuantumGrid.


14-10917
Pitay
2003-08-17 20:46
2003.09.04
Помогите пожалуйста слово на буквы разобрать(((


3-10593
vchris
2003-08-14 11:22
2003.09.04
ОDBC и типы данных


7-11001
_mandrake_
2003-06-19 15:45
2003.09.04
как отловить собщение завершения работы windows?