Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Alternative für InvalidateRect (https://www.delphipraxis.net/191692-alternative-fuer-invalidaterect.html)

EWeiss 10. Feb 2017 15:17


Alternative für InvalidateRect
 
Beim Mousemove führe ich ein InvalidateRect aus.
Das Problem dabei ist das mir dann die FPS in den Keller geht.

Delphi-Quellcode:
        if GdipCreateFromHDC(Dc, Graphics) = OK then
        begin
          if nItem <> OldItem then
          begin
            Height := rc.bottom + CurPos.y;
            Count := ListView_GetItemCount(WinHandle);
            if (((nItem - TopItem) * ItemHeight) div ItemHeight) <= Count then
            begin
              if nItem <= ((Height - CurPos.y) div ItemHeight) + TopItem then
              begin
                SkinEngine.FInvalidateRect(WinHandle, True); // Hier das Invalidate
                SkinEngine.PaintButton(Graphics, 5, ImgBack, rc.Left,
                  ((nItem - TopItem) * ItemHeight) + 7, rc.Right, ItemHeight, BS_PUSHBUTTON);
              end;
            end;
          end;
          OldItem := nItem;
          GdipDeleteGraphics(Graphics);
        end;
Gibt es eine andere Möglichkeit den Button des zuletzt ausgewählten Item ohne Invalidate zu löschen?
TrackMouse, SetCapture oder ähnliches?

TrackMouse funktioniert ja nur für das gesamte Control oder auch für Items? (ListView)

Hoffe das es verständlich genug ist was ich erreichen möchte.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz