Доброго времени суток
Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета).
Может кто подскажет как от неё изабвиться ?
Здравствуйте, sunrizer, Вы писали:
S>Доброго времени суток S>Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета). S>Может кто подскажет как от неё изабвиться ?
Иконки наверняка с альфа-каналом (32-х битные) В свое время тоже столкнулся с такой фигней в Дельфи 6, решения не нашел — это глюк тулбара, скорее не глюк, а просто он не может отображать такие иконки корректно. Советую использовать 24-битные иконки или использовать другой компонент
Re: Некорректное отображение иконок
От:
Аноним
Дата:
26.07.07 06:11
Оценка:
Здравствуйте, sunrizer, Вы писали:
S>Доброго времени суток S>Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета). S>Может кто подскажет как от неё изабвиться ?
Есть такая проблема. Исправляется следующим образом:
procedure ConvertTo32BitImageList(const ImageList: TImageList);
const
Mask : array[Boolean] of Longint = (0, ILC_MASK);
var
TemporyImageList : TImageList;
begin
if(not Assigned(ImageList)) then Exit;
TemporyImageList := TImageList.Create(nil);
try
TemporyImageList.Assign(ImageList);
with ImageList do begin
ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);
if not ImageList.HandleAllocated then
raise EInvalidOperation.Create(SInvalidImageList);
end;
ImageList.AddImages(TemporyImageList);
finally
TemporyImageList.Free;
end;
end;
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, sunrizer, Вы писали:
S>>Доброго времени суток S>>Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета). S>>Может кто подскажет как от неё изабвиться ?
А>Есть такая проблема. Исправляется следующим образом:
А>
А>procedure ConvertTo32BitImageList(const ImageList: TImageList);
А>const
А> Mask : array[Boolean] of Longint = (0, ILC_MASK);
А>var
А> TemporyImageList : TImageList;
А>begin
А> if(not Assigned(ImageList)) then Exit;
А> TemporyImageList := TImageList.Create(nil);
А> try
А> TemporyImageList.Assign(ImageList);
А> with ImageList do begin
А> ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);
А> if not ImageList.HandleAllocated then
А> raise EInvalidOperation.Create(SInvalidImageList);
А> end;
А> ImageList.AddImages(TemporyImageList);
А> finally
А> TemporyImageList.Free;
А> end;
А>end;
А>
Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
S>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
Сделай в OnShow — к этому моменту форма уже загрузит все ресурсы
Здравствуйте, altarvic, Вы писали:
А>>>Здравствуйте, sunrizer, Вы писали:
S>>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
A>Сделай в OnShow — к этому моменту форма уже загрузит все ресурсы
Сделал в OnShow — всё-равно обводка осталась. Причём на некоторых иконках она больше, на некоторых меньше, на некоторых вообще нет.
Re[3]: Некорректное отображение иконок
От:
Аноним
Дата:
26.07.07 11:16
Оценка:
Здравствуйте, sunrizer, Вы писали:
<skip> S>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
У меня ImageList лежит в датамодуле и вызываю я эту процедуру при его создании.
Кстати какая версия делфи? Спрашиваю потому как проблема эта по моим наблюдения проявляется только на 7-й и ниже.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, sunrizer, Вы писали:
А><skip> S>>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
А>У меня ImageList лежит в датамодуле и вызываю я эту процедуру при его создании. А>Кстати какая версия делфи? Спрашиваю потому как проблема эта по моим наблюдения проявляется только на 7-й и ниже.
Версия Delphi — 2007 Update1.
Здравствуйте, sunrizer, Вы писали:
S>Доброго времени суток S>Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета). S>Может кто подскажет как от неё изабвиться ?
эта коёмка от некорректного ресайза либо от пережатия. Открой картинку в фотошопе, и посмотри, какого цвета эта каёмка — он будет на белый, а смесь фона с картинкой.