Как я могу увеличить холст прозрачной иконы? - PullRequest
0 голосов
/ 27 января 2020

У меня есть несколько прозрачных значков, которые меньше по размеру, чем список изображений, куда я хочу их добавить. Я пытаюсь добавить их как обычно с ImageList.AddIcon(IcoHandle);, но кажется, что они масштабируются до размера ImageList. Я хочу найти способ увеличить холст моего Icon прозрачным цветом, чтобы он был добавлен в ImageList без масштабирования. Возможно ли это?

Обновление 1:

Я сделал, как сказал Дэвид, но значок потерял прозрачность ...

 LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
 Ico.Handle:= hI;

 Bmp:= TBitmap.Create;
 Bmp.Transparent:= True;
 Bmp.PixelFormat:= pf32bit;
 Bmp.SetSize(ISize, ISize);
 Bmp.Canvas.Draw(0, 0, Ico);
 Pics.Add(Bmp, nil);
 Bmp.Free;

1 Ответ

0 голосов
/ 27 января 2020

Я наконец понял это ... благодаря Дэвиду, Кену и Торбинсу ответ от здесь .

Мне пришлось установить стиль bru sh на bsClear, прежде чем установить размер растрового изображения. :)

LoadIconWithScaleDown(HInstance, PChar('NUT_VITAL'), ISmall, ISmall, hI);
Ico.Handle := hI;

Bmp := TBitmap.Create;
try
  Bmp.Canvas.Brush.Style := bsClear;
  Bmp.SetSize(ISize, ISize);
  N := (ISize - ISmall) div 2;
  Bmp.Canvas.Draw(N, N, Ico);
  Pics.Add(Bmp, nil);
finally
  Bmp.Free; 
end;
...