Некорректное отображение иконок
От: sunrizer  
Дата: 25.07.07 15:55
Оценка:
Доброго времени суток
Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета).
Может кто подскажет как от неё изабвиться ?
Re: Некорректное отображение иконок
От: altarvic  
Дата: 26.07.07 03:36
Оценка:
Здравствуйте, 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;
Re[2]: Некорректное отображение иконок
От: sunrizer  
Дата: 26.07.07 10: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;
А>

Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?
Re[3]: Некорректное отображение иконок
От: altarvic  
Дата: 26.07.07 10:41
Оценка:
А>>Здравствуйте, sunrizer, Вы писали:


S>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?


Сделай в OnShow — к этому моменту форма уже загрузит все ресурсы
Re[4]: Некорректное отображение иконок
От: sunrizer  
Дата: 26.07.07 11:11
Оценка:
Здравствуйте, altarvic, Вы писали:

А>>>Здравствуйте, sunrizer, Вы писали:



S>>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?


A>Сделай в OnShow — к этому моменту форма уже загрузит все ресурсы

Сделал в OnShow — всё-равно обводка осталась. Причём на некоторых иконках она больше, на некоторых меньше, на некоторых вообще нет.
Re[3]: Некорректное отображение иконок
От: Аноним  
Дата: 26.07.07 11:16
Оценка:
Здравствуйте, sunrizer, Вы писали:

<skip>
S>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?

У меня ImageList лежит в датамодуле и вызываю я эту процедуру при его создании.
Кстати какая версия делфи? Спрашиваю потому как проблема эта по моим наблюдения проявляется только на 7-й и ниже.
Re[4]: Некорректное отображение иконок
От: sunrizer  
Дата: 26.07.07 11:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, sunrizer, Вы писали:


А><skip>

S>>Сделал так как написано выше — но не помогло — обводка вокруг иконки все-равно остается. Данную процедуру вызваю в FormCreate. М ожет чё-то не так делаю ?

А>У меня ImageList лежит в датамодуле и вызываю я эту процедуру при его создании.

А>Кстати какая версия делфи? Спрашиваю потому как проблема эта по моим наблюдения проявляется только на 7-й и ниже.
Версия Delphi — 2007 Update1.
Re: Некорректное отображение иконок
От: urix5  
Дата: 08.08.07 09:41
Оценка:
Здравствуйте, sunrizer, Вы писали:

S>Доброго времени суток

S>Есть странная проблема — при добавлении иконок в ImageList — в нём они отображаются нормально, но при использовании их в тулбаре — вокруг иконки появляется обводка (обычно белого цвета).
S>Может кто подскажет как от неё изабвиться ?

эта коёмка от некорректного ресайза либо от пережатия. Открой картинку в фотошопе, и посмотри, какого цвета эта каёмка — он будет на белый, а смесь фона с картинкой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.