PDA

Просмотр полной версии : Как добавить png с альфа каналом на кнопку toolbar'а?


Ti
04.03.2005, 18:58
Как добавить png с альфа каналом на кнопку toolbar'а?
нашел одно решение но это не совсем то что надо
использовал модуль pngimage (http://pngdelphi.sourceforge.net)
procedure LoadIcons;
var
PNG: TPNGObject;
BMP: TBitmap;
I: integer;
dHandle: THandle;
begin
BMP := TBitmap.Create;
BMP.Width:=48;
BMP.Height:=48;
Bmp.Canvas.Brush.Color:=clBtnFace;
bmp.Canvas.FillRect(bmp.Canvas.ClipRect);

png:= TPNGObject.Create;

for i:=1 to 2 do
begin
Bmp.Canvas.Brush.Color:=clBtnFace;
bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
png.LoadFromResourceID(hinstance,2000+I);
BMP.Canvas.Draw(0, 0, PNG);
Form1.imlToolbar.Add(bmp,nil);
end;
BMP.Canvas.Draw(0, 0, PNG);
Form1.imlToolbar.Add(bmp,nil);
png.free;
bmp.free;
все бы ничего, но при нестандартных темах оформления (XP там где допустим на toolbare градиент есть) под иконкой на кнопке виден квадрат. Чувствую что можно это сделать с pngimage. Подскажите если кто уже пробовал? Может есть другой способ. (иконки с альфа каналом не пойдет, не работает под 98 и ранних win).
Как вариант можно перехватить ToolBar1AdvancedCustomDrawButton кнопки toolbar и рисовать состояние hot как-нибудь по своему, как это сделать?