Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Alternative für InvalidateRect

  Alt 10. Feb 2017, 15:17
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

Geändert von EWeiss (11. Feb 2017 um 06:12 Uhr)
  Mit Zitat antworten Zitat