pbromiks
Цитата:
Что значит мерцание?
Цитата:
Только вот мерцание во время смены иконки.
Что значит мерцание?
Только вот мерцание во время смены иконки.
А может есть возможность использовать в качестве картинки GIF ?
raven
А подробнее можно?
Вот Бил Гейтс с гифами пролетел
ну помогите =)
procedure TForm1.Button1Click(Sender: TObject);
var
IconSizeX : integer;
IconSizeY : integer;
AndMask : TBitmap;
XOrMask : TBitmap;
IconInfo : TIconInfo;
Icon : TIcon;
OldBkMode : integer;
OverRect : TBitmap;
begin
{Get the icon size}
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);
{Create the "And" mask}
AndMask := TBitmap.Create;
AndMask.Monochrome := true;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;
{Draw on the "And" mask}
AndMask.Canvas.Brush.Color:=clBlack;
AndMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
{ OverRect.Canvas.Brush.Color:=clBlack;
OverRect.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
OverRect.Canvas.Brush.Color :=clBlack;
OverRect.Canvas.FillRect(Rect(3, 3, 3+((IconSizeX-6)*Percent div 100), IconSizeY-4));
// AndMask.Canvas.Brush.Color := clBlack;
AndMask.Canvas.Font.Size:=13;
AndMask.Canvas.Font.Style:=[fsBold];
AndMask.Canvas.Font.Color:=clWhite;
OldBkMode := SetBkMode(AndMask.Canvas.Handle,TRANSPARENT);
AndMask.Canvas.TextOut(3, 8, Format('%3d',[Percent]));
SetBkMode(AndMask.Canvas.Handle, OldBkMode);
AndMask.Canvas.CopyMode:=cmSrcInvert;
AndMask.Canvas.Draw(0,0,OverRect);}
{Draw as a test}
Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);
// Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, OverRect);
{Create the "XOr" mask}
OverRect:=TBitmap.Create;
XOrMask := TBitmap.Create;
XOrMask.Width := IconSizeX;
XOrMask.Height := IconSizeY;
OverRect.Monochrome :=False;
OverRect.Width := IconSizeX;
OverRect.Height := IconSizeY;
{Draw on the "XOr" mask}
XorMask.Canvas.Brush.Color := clBlack;
XorMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
OverRect.Canvas.Brush.Color:=clWhite;
OverRect.Canvas.FillRect(Rect(2, 2, IconSizeX, IconSizeY));
OverRect.Canvas.Brush.Color :=clNavy;
OverRect.Canvas.FillRect(Rect(2, 2, 2+((IconSizeX)*Percent div 100), IconSizeY));
XorMask.Canvas.Font.Size:=20;
XorMask.Canvas.Font.Style:=XorMask.Canvas.Font.Style+[fsBold,fsItalic];
OldBkMode := SetBkMode(XorMask.Canvas.Handle,TRANSPARENT);
XorMask.Canvas.Font.Color:=clNavy xor clWhite;
XOrMask.Canvas.TextRect(Rect(0, 0, IconSizeX, IconSizeY),1,0, Format('%2d',[Percent]));
SetBkMode(XorMask.Canvas.Handle, OldBkMode);
XorMask.Canvas.CopyMode:=cmSrcInvert;
XorMask.Canvas.Draw(0,0,OverRect);
XorMask.Canvas.MoveTo(0,IconSizeY);
XorMask.Canvas.Pen.Color:= clBlack;
XorMask.Canvas.Pen.Width:=4;
XorMask.Canvas.LineTo(0,0);
XorMask.Canvas.LineTo(IconSizeX,0);
OverRect.Free;
{Draw as a test}
Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);
{Create a icon}
Icon := TIcon.Create;
IconInfo.fIcon := true;
IconInfo.xHotspot := 0;
IconInfo.yHotspot := 0;
IconInfo.hbmMask := AndMask.Handle;
IconInfo.hbmColor := XOrMask.Handle;
Icon.Handle := CreateIconIndirect(IconInfo);
{Destroy the temporary bitmaps}
AndMask.Free;
XOrMask.Free;
{Draw as a test}
DrawIcon(Form1.Canvas.Handle,300,300,Icon.Handle);
{Assign the application icon}
Tray.Icon := Icon;
// Tray.Enabled:=True;
{Force a repaint}
InvalidateRect(Application.Handle, nil, true);
if Percent=100 then Timer1.Enabled:=False;
{Free the icon}
Icon.Free;
Inc(Percent);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Percent:=1;
end;
Нужно в трей поместить текст ( иконку динамически создавать из текста ). Пишу на VC++ MFC
Если не принимать во внимание, что в MFC нет таких маленьких радостей как TIcon и компонентов для создания tray icon , то cool
а почему из 2-х ? чем отличаютсья XOR от AND ? или они абсолютно одинаковые ?
hbmMask
Specifies the icon bitmask bitmap. If this structure defines a black and white icon, this bitmask is formatted so that the upper half is the icon AND bitmask and the lower half is the icon XOR bitmask. Under this condition, the height should be an even multiple of two. If this structure defines a color icon, this mask only defines the AND bitmask of the icon.
hbmColor
Identifies the icon color bitmap. This member can be optional if this structure defines a black and white icon. The AND bitmask of hbmMask is applied with the SRCAND flag to the destination; subsequently, the color bitmap is applied (using XOR) to the destination by using the SRCINVERT flag.
Предыдущая тема: нуна помощь по Си:)