procedure RenderScale(WinHandle: HWND);
var
bDone: BOOL;
K, ID: Integer;
CountMax: Integer;
x, x1, y, y1, w, h: Integer;
nScale: Integer;
begin
bDone := false;
CountMax := FaceList.Count - 1;
ID := ID_FACE;
for K := 0
to CountMax - 1
do
begin
if (ID <> gnFocusID)
then
begin
rScale := gSprFace.GD_GetObjectScale(ID);
if (ID = nHoverID)
then
begin
if (rScale < 1.0)
then
begin
bDone := true;
// Wird hier true geschaltet und bleibt True wenn Single wert nicht stimmt.
rScale := rScale + SCALE_STEP;
if (rScale > 1.0)
then
begin
rScale := 1.0;
bDone := false;
end;
// Flare Animation
gSprFace.GD_GetObjectBound(ID, w, h);
nScale := (w - round(w * rScale))
div 2;
gSprFace.GD_SetObjectVisibility(gnFocusFlare, true);
gSprFace.GD_GetObjectXY(ID, x, y);
x1 := x + 63 - nScale;
y1 := nScale + 10;
gSprFace.GD_SetObjectXY(gnFocusFlare, x1, y1);
// Weiter mit ID
gSprFace.GD_SetObjectScale(ID, rScale);
end;
end
else
begin
if (rScale > SCALE_DEFAULT)
then // stimmt dieser wert nicht dann ist bDone immer true und löst ein Repaint des gesamten Container aus.
begin
bDone := true;
rScale := rScale - SCALE_STEP;
if (rScale < SCALE_DEFAULT)
then
begin
rScale := SCALE_DEFAULT;
gSprFace.GD_SetObjectVisibility(gnFocusFlare, false);
bDone := false;
end;
gSprFace.GD_SetObjectScale(ID, rScale);
end;
end;
end;
dec(ID);
end;
if (bDone)
then
gSprFace.GI_UpdateWindow(WinHandle, false);
// Hier Problem wenn Single wert nicht stimmt = 35% CPU Auslastung.
end;