AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Get{R,G}Value liefert falsche Werte
Thema durchsuchen
Ansicht
Themen-Optionen

Get{R,G}Value liefert falsche Werte

Ein Thema von xZise · begonnen am 30. Mai 2009 · letzter Beitrag vom 31. Mai 2009
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Get{R,G}Value liefert falsche Werte

  Alt 30. Mai 2009, 14:24
Hallo ihr,

ich dachte ich mache einen Farbverlauf von Weiß nach Schwarz. Also dachte ich hole ich mir den Kanal-Wert multipliziere ihn mit dem Faktor und addiere dann den Kanal Wert der anderen Farbe welcher mit dem (1-Faktor) multipliziert wurde.

Der Faktor ist zwischen 0 und 1 und die Farben sind Schwarz und Weiß. Bei Schwarz funktioniert auch alles und die Werte von GetRValue, GetGValue und GetBValue sind alle 0. Aber bei weiß (egal ob clWhite oder $00FFFFFF) sind die Werte "16.777.215", "65.535" und "255". Bis auf dem letzten Wert, stimmen die anderen beiden nicht. An sich ist das die Farbe komplett bzw. bei Grün die zwei Kanäle.

Wie kriege ich nun die richtigen Werte heraus?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Get{R,G}Value liefert falsche Werte

  Alt 30. Mai 2009, 14:42
Weise den Wert einer "Byte" Variable zu.

Edit: Ein "and $FF" sollte es auch tun.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Get{R,G}Value liefert falsche Werte

  Alt 30. Mai 2009, 14:54
Alternativ könnte man auch einen record verwenden:

Delphi-Quellcode:
TRGBQuad = packed record // ist schon in irgendeiner Unit definiert, mir fällt aber gerade nicht ein, in welcher
  r, g, b, a: byte
end;

procedure Foo(Color: TColor);
var
  RGB: PRGBQuad;
begin
  RGB := PRGBQuad(@Color);
  ...
  RGB^.r := ...
end;
Dabei fällt mir gerade etwas auf: Kann man absolute eigentlich auch mit Parametern benutzen? Dann könnte es so noch einen Tick eleganter gehen:
Delphi-Quellcode:
procedure Foo(Color: TColor);
var
  RGB: TRGBQuad absolute Color;
begin
  ...
end;
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Get{R,G}Value liefert falsche Werte

  Alt 30. Mai 2009, 15:09
Zitat von igel457:
Weise den Wert einer "Byte" Variable zu.
Das wird keine Wirkung erzielen:
Delphi-Quellcode:
function GetRValue(rgb: DWORD): Byte;
begin
  Result := Byte(rgb);
end;
Zitat von igel457:
Edit: Ein "and $FF" sollte es auch tun.
Okay stimmt das dürfte tatsächlich hinhauen! Ich teste das mal! Ich habe es getestet und es geht. Aber warum muss ich das extra machen?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Get{R,G}Value liefert falsche Werte

  Alt 31. Mai 2009, 18:47
Moinsen,

wieso muss ich mit $FF die Daten auf 8 Bit zuschneiden?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:59 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