Einzelnen Beitrag anzeigen

Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#7

Re: wie funktioniert das mit der RGB funtion???

  Alt 24. Feb 2004, 22:19
Zitat von himitsu:
Etwas optimaler könnte der Code schon sein

Delphi-Quellcode:
Var Color: TColor;
  R, G, B: Byte;

{um sicher zu gehn, das auch wirklich ein RGB-Farbwert drin ist}
Color := ColorToRGB(Color);

{TColor aufteilen}        {oder so}   
R := GetRValue(Color); R := Color and $FF;
G := GetGValue(Color); G := (Color shr 8) and $FF;
B := GetBValue(Color); B := (Color shr 16) and $FF;

{und zurück}              {oder so}   
Color := RGB(R, G, B); Color := R or (G shl 8) or (B shl 16);


Int64 auf 'nem 32-Bit-System
Und dann noch solch langsame Funktionen/Befehle ("trunc", "sqr" und "/")


ach ja ... siehe Code-Lib
RGB -> TColor -> RGB
-Code kann eigentlich immer optimaler sein
-man kann nicht wirklich testen ob die Zahl wirklich ein RGB-Wert sein soll, ist auch gar nicht interessant
-der Code von mir ist lesbarer, bzw man sieht das mathematische dahinter, aber klar sind deine Bit-Operatoren bissel schneller
-int64 wird von Borland empfohlen, außerdem könnte es ja ein 64Bit-System sein dank Athlon64 und WinXP 64Bit-Edition (theoretisch)
-statt trunc kannst auch int nehmen, is vielleicht bissel schneller weil ja nur abgeschnitten wird
-schneller teilen geht nicht, nur mit den Bit-Operatoren mit denen ich grade eben erst angefangen habe

Fazit: Wenn man wissen will was wirklich passiert, finde ich meinen Code schöner. Ist aber Geschmackssache... Und für mein Prog reicht es allemal. Außerdem brauche ich den vordefinierten Typ dort, sonst wäre es viel zu unübersichtlich.

MfG
  Mit Zitat antworten Zitat