Szkic

0

Mam pytanie o podłożach wydajnościowych. Mam program w którym jest baza punktów ze współrzędnymi terenowymi, i chce zrobić szkic (właściwie już mam) chodzi mi o to żeby było przerysowywanie jak najszybciej. Na szkicu dodatkowo są linie, teksty, i krzywe (np łuki). Obecnie mam rozwiązane tak : rysuje na TPaintBox (rysuje na bitmapie a potem CopyRect). Pytanie mam odnośnie :

  • rysowaniu punktów (kółeczek) - czy nie będzie szybciej zrobić właśnie bitmapki i wklejać zamiast Canvas.Ellipse(....
0
  1. Canvas.Elilipse zupełnie odpada. Najlepiej, tak jak napisałeś stworzyć TBitmap, a następnie wklejać za pomocą Canvas.Draw();
  2. Rysowanie tekstów - nic lepszego od TextOut nie wymyślisz. Chyba że może to być czcionka o stałym rozmiarze/kolorze, wtedy także lepiej na matrycy TBitmap porysować literki i je wklejać. (metoda oczywiście jest niewiele szybsza, a za to pamięciorzerna)
    3.1. Wszelkie większsze obliczenia staraj się pisać w asmie.
    3.2. Staraj się wykorzystywać kruczki i sztuczki takie jak : n shr 1 zamiast n div 8. Efekt ten sam a obliczenie jednego jest wielokrotnie szybsze od drugiego.
  3. Tylko i wyłącznie te które ci się mieszczą! (dla dużej ilości pikseli, jak ich jest kilka, to można to olać)

ps :
<quote>If (p.X

0

Może przypomnę prostą zasadę:

a AND b - staraj się tak ustawić a i b, aby dla a było mniej prawdopodobne
a OR b - staraj się tak ustawić a i b, aby dla a było bardziej prawdopodobne

Wtedy sprawdzenia warunków będą statystycznie szybsze :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1