Hallo,
Ich habe ein Programm mit realiv vielen Images
,sobald ich ein onclick Ereignis auslöse, benötigt dies bei mir ca.15%-18% meiner CpuLeistung bei einer anderen Auflösung, und ca 5-8% bei gleicher Auflöung;
(Bei einem Normalen Buttonclick ohne alles 0-2%)
Ich hab rund 40 Images(BildGrösse ca. 3kb) die ich als Buttons nutze +120 Images(ohne Bild im folgenden Programm) die über den Buttons liegen mit je einem Label und ein Hintergrundimage(1MB).
So und Hier ein paar Zeilen aus meinem Programm,Oben ist der Code,der die Performance am meisten beeinflusst...usw.,zumindest nach meiner Meinung.
Welche möglichkeiten gibt es die CPU Auslastung zu senken?Für ein Onclick Ereignis?
Dies wird im FormCreate ausgelöst:
Delphi-Quellcode:
Procedure TForm1.Aufloesung;
var Breite,Hoehe,x,y: integer;
begin
begin
// hoehe:=864;
// breite:=1152;
hoehe:=800;
breite:=1280;
scaled := true;
x:= Screen.width;
y:= Screen.Height;
if(y <> Hoehe) or (x <> Breite) then
begin
Form1.Height := (Form1.ClientHeight* y div Hoehe) + Form1.Height- Form1.ClientHeight;
Form1.Width := (Form1.ClientWidth * x div Breite)+ Form1.Height - Form1.ClientHeight;
scaleBy(x,Breite);
end;
end;
end;
So werden die Bilder für die Buttons geladen, Ein Bild für Down und eins für Up(BildGrösse ca. 3kb)
Delphi-Quellcode:
procedure TForm1.AllMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
itag:String;
begin
iTag := IntToStr((Sender as TControl).Tag);
(FindComponent('Image'+(iTag)) as TImage).Picture.Assign(Buttonx[(Sender as TImage).Tag]);
end;
Damit die Imagebuttons regieren, wenn die Labels mit Buttons drüber liegen:
Delphi-Quellcode:
procedure TForm1.LabelsOnMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i: Integer;
iString:String;
S:Timage;
begin
for i := 1 to 39 do
begin
S:= (FindComponent('Image'+(iString)) as Timage) ;
iString:=IntToStr(i);
if S is TImage then
begin
with S do
if PtInRect(Rect(0, 0, Width, Height), ScreenToClient(Mouse.CursorPos)) then
begin
OnMouseUp(S, Button, Shift, X, Y);
end;
end;
end;
end;