hi
ich habe ein kleines Problem mit meiner Komponente...
und zwar habe ich folgenden bug entdeckt, und weiss nicht an was es liegt, vielleicht könnt ihr mir weiterhelfen.
Die ganze Komponente findet ihr in unserer
Open Source Library.
Das Problem:
Wenn ich ein Icon in mein Button zeichne soll er in die mitte kommen. In den meisten Konstellationen funktioniert das auch einwandfrei, habe ich aber ein icon 16*16 auf einer Canvas 22*22, ist das Bild, gerade nachdem ich mein Programm starte nicht in der mitte. Sobald ich dann mit der Maus darüberfahre, geht es in die mitte und wird von diesem Moment an immer korrekt angezeigt. Bis ich das Programm wieder neu starte... mit Bildern und Icons ab 32*32 habe ich dieses Problem nie!
hier die Routinen die das Bild zeichnen, vielleicht fällt euch ja etwas auf, PS: ich verwende nur ein Bild, also
PictureUseOnlyOne := true!
Delphi-Quellcode:
procedure TEButton.DrawPicture;
begin
if (FPicture <> nil) then
Canvas.Draw((Width - FPicture.Graphic.Width) div 2,(Height - FPicture.Graphic.Height) div 2 ,FPicture.Graphic);
end;
procedure TEButton.DrawPictureOver;
begin
if (FPictureUseOnlyOne) then
begin
if (FPicture <> nil) then
Canvas.Draw((Width - FPicture.Graphic.Width) div 2,(Height - FPicture.Graphic.Height) div 2 ,FPicture.Graphic);
end
else
begin
if (FPictureOver <> nil) then
Canvas.Draw((Width - FPictureOver.Graphic.Width) div 2,(Height - FPictureOver.Graphic.Height) div 2 ,FPictureOver.Graphic);
end;
end;
procedure TEButton.DrawPictureDown;
begin
if (FPictureUseOnlyOne) then
begin
if (FPicture <> nil) then
Canvas.Draw((Width - FPicture.Graphic.Width) div 2,(Height - FPicture.Graphic.Height) div 2 ,FPicture.Graphic);
end
else
begin
if (FPictureDown <> nil) then
Canvas.Draw((Width - FPictureDown.Graphic.Width) div 2,(Height - FPictureDown.Graphic.Height) div 2 ,FPictureDown.Graphic);
end;
end;