AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein RGB -- TColor allgemeine Verständnisfrage

RGB -- TColor allgemeine Verständnisfrage

Ein Thema von p3ter · begonnen am 28. Dez 2010 · letzter Beitrag vom 28. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2   
p3ter

Registriert seit: 28. Dez 2010
3 Beiträge
 
#1

RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 10:59
Hey Leute,
ich habe zwar alle Funktionen zum Umwandeln von RGB zu Tcolor und umgekehrt gefunden, jedoch interessiert es mich, was da genau passiert ?!

Quelle: Beitrag von Sakura
procedure TColor2RGB(const Color: TColor; var R, G, B: Byte);
begin
// convert hexa-decimal values to RGB
R := Color and $FF;
G := (Color shr 8) and $FF;
B := (Color shr 16) and $FF;
end;

Ich verstehe nicht ganz, was dieses $FF aussagt. Ich weiß zwar, dass es für 255 steht, aber warum wird dies für alle Farben zusätzlich gemacht ? Handelt es sich um eine Umwandlungsform in Byte oder was genau passiert wenn ich "and $FF" durchführe.

Stehe grad wirklich etwas auf dem Schlauch, würde mich freuen wenn es einer einfach erklären könnte.


danke
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:02
Hallo,

and $FF maskiert den TColor Wert auf ein Byte.
TColor ist ein 4 Byte Type.

z.B.
Color xxBBGGRR
color shr 8 -> yyxxBBGG and $FF = GG

Grüße
Klaus
Klaus

Geändert von Klaus01 (28. Dez 2010 um 11:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:17
was genau passiert wenn ich "and $FF" durchführe?
Die beiden Werte werden mittels Konjunktion (siehe auch Boolesche Algebra) verknüpft.
  Mit Zitat antworten Zitat
p3ter

Registriert seit: 28. Dez 2010
3 Beiträge
 
#4

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:27
okay danke für die schnellen Antworten.
Eines Verstehe ich jedoch nicht ganz, warum gehe ich shr 8 und nicht shl8, denn die byte Palette wird ja von rechts nach links gezählt.

Sorry für die blöden Fragen^^
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:30
TColor ist im Format BGR, deshalb wird nach rechts geshiftet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
p3ter

Registriert seit: 28. Dez 2010
3 Beiträge
 
#6

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:35
danke danke danke alles gecheckt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#7

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 11:51
Da R, G und B in TColor2RGB als Byte deklariert sind,
könnte man das and $FF auch weglassen, da auch ohne dieses durch das Byte der Wertebereich begrenzt wird,
aber schalte man nun mal die Bereichsprüfung in den Projektoptionen an, dann würde es knallen, da Delphi dann bei Zuweisung an das Byte den Wertebereich prüfen würde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 14:06
Hier hatte ich auch einmal ein paar Infos zusammengetragen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 16:51
Recht angenehm geht der Zugriff so
Delphi-Quellcode:
Type
  TColorAcc = packed record
    Red: Byte;
    Green: Byte;
    Blue: Byte;
    Alpha: Byte;
  end;

procedure Beispiel;
var
  C:TColor;
begin
  TColorAcc(c).Blue := $ff;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: RGB -- TColor allgemeine Verständnisfrage

  Alt 28. Dez 2010, 18:48
Dann doch gleich so:
Delphi-Quellcode:
Type
  TColorAcc = packed record
  case Boolean of
    true: Color: TColor;
    false:
    begin
      Alpha: Byte;
      Blue: Byte;
      Green: Byte;
      Red: Byte;
    end;
  end;

procedure Beispiel;
var
  C:TColorAcc;
begin
  c.Color := clBlue;
  c.Red := 255;
  // c.Color=clFuchsia
end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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