AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Farbverlauf" von clBtnFace zu clBlack

Ein Thema von xZise · begonnen am 10. Mär 2008 · letzter Beitrag vom 11. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

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

"Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:25
Hallo DP,
ich habe zwei Farben. Zum einem clBtnFace und dann clBlack.
Nun will ich ein Farbverlauf zwischen den Punkten machen.
Also dachte ich mir: clBtnFace / 8 (8 Abstufungen) fertig. Denkste.
Selbst mit RGB(GetRValue(clBtnFace) div 8 ...) wird das nichts.

Nun was macht man da ?

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

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:30
du musst die Farbe in ihre Bestandteile zerlegen (rot, grün, blau). Anschließend kannst du den Mittelwert der Farben gewichtet berechnen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:31
Ich hab in der CL das da gefunden, vll. hilft dir das weiter:
http://www.delphipraxis.net/internal...ighlight=color

Bin jetzt aber auch müde , also Gute Nacht
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:33
Also ich würds so machen:

Delphi-Quellcode:
function GetGradientColor(const Color1, Color2: TColor; const Step, Steps: Cardinal): TColor;
begin
  Result:=(Color1 and $FF)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF)*Step div (Steps-1);
  Result:=Result or
    ((Color1 and $FF00)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF00)*Step div (Steps-1));
  Result:=Result or
    ((Color1 and $FF0000)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF0000)*Step div (Steps-1));
end;
Ungetestet, sollte aber funktionieren. Anmerkung: Das ganze fängt bei Step=0 an.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:47
Zitat von SirThornberry:
du musst die Farbe in ihre Bestandteile zerlegen (rot, grün, blau). Anschließend kannst du den Mittelwert der Farben gewichtet berechnen.
So:
Delphi-Quellcode:
FColorStep := clBtnFace;
RGB(GetRValue(FColorStep) div 8, GetGValue(FColorStep) div 8, GetBValue(FColorStep) div 8);
Da wir ja zum Schwarz gehen, müssen wir jede Farbe mit 0 subtrahieren
Deshalb habe ich es gelassen.
Ergebnis: "1"

@ Borg: Ich habe mal ein Beispiel angehangen
Schau mir den Code aber mal an!
Und muss das nicht shl 1 sein? Einfach ein Byte weiter schieben. Aber das nützt auch nichts.

CL: Noch nicht getestet.

Zur Farbe: Die ist negativ! (Das ist wahrscheinlich auch das Problem)

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

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 21:59
Ach was hab ich denn da gemacht? Also, wenn dann wäre es shl 8 bzw. 16. Aber eigentlich kann man das ganze geshifte auch gleich weglassen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 22:06
Eine Frage: Was machst du da? ^^

Wenn du "AB CD EF" als Farbe hast, und du dann dass Binär verknüpfst:
Delphi-Quellcode:
    AB CD EF
and 00 00 FF
    == == ==
    54 32 EF
Oder habe ich da Fehler gemacht?
Zum Test Binär:
Delphi-Quellcode:
    1010 1011 1100 1101 1110 1111
and 0000 0000 0000 0000 1111 1111
    ==== ==== ==== ==== ==== ====
    0101 0100 0011 0010 1110 1111
MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 22:15
Verwechselst du da etwa ein and mit einem xor?

Irgendetwas and 0 ist immer 0. Mit dem and $FF hau ich z.B. alles außer rot aus dem Farbwert raus, sodass ich nur das rot multipliziere.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 22:20
Okay da habe ich mist gebaut.
Aber irgendwas stimmt da nicht:
GetGradientColor(clBtnFace, clBlack, i, 8) => clBlack
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: "Farbverlauf" von clBtnFace zu clBlack

  Alt 10. Mär 2008, 23:16
Bevor ihr hier noch stundenlang rätselt: Alle clMenuColor, etc sind keine RGB Werte sondern sind Konstanten mit einem Index drin, welcher dann über die Systemfarben ermittelt wird durch die VCL von Windows. Um die RGB Werte für diese Konstanten zu bekommen, vorher Delphi-Referenz durchsuchenColorToRGB() aufrufen (wenn die TColor schon RGB Werte sind, dann macht er nichts).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:43 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