AGB  ·  Datenschutz  ·  Impressum  







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

Textfarbe faden

Ein Thema von Thorben86 · begonnen am 15. Apr 2004 · letzter Beitrag vom 15. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

Textfarbe faden

  Alt 15. Apr 2004, 15:25
Hi, ich will bei die Textfarbe von zb nem Label , welche bei mir am anfang die standartfarbe hat(die graue Form-Farbe), auf schwarz faden, also dass se durch nen timer langsam verändert wird. Mein Problem ist nun, dass ich nicht weis, wie ich das näher ans schwarze rankrieg, da ja auch buchstaben drin sind (zB. $00E7B6C6). Oder kann man den Farbwert noch anders mitteilen, was einfacher wäre, zu faden?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Textfarbe faden

  Alt 15. Apr 2004, 15:37
Mach's so:

Label1.Color := rgb(rotWert, gruenWert, blauWert); rotWert bis blauWert sind vom Typ Byte, und 0 ist ganz Dunkel, 255 ganz Hell. Wenn alle 3 Werte gleich sind, hast du Graustufen.

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von nTE
nTE

Registriert seit: 8. Sep 2003
60 Beiträge
 
#3

Re: Textfarbe faden

  Alt 15. Apr 2004, 15:39
Das $ vorne steht dafür, dass der Wert Hexadezimal notiert ist, daher die Buchstaben. :P

Im Endeffekt kannst du ganz leicht schwarz faden, indem du die Werte für RGB (Delphi notiert sie BGR soweit ich weiß) gleichmäßig an Null annäherst.

Der Wert schlüsselt sich so auf:
$00BBGGRR, d.h. ein Byte (0-255) für jeden Farbanteil.

Um diesen zu verringern könntest du einfach einfach
LabelFade.Font.Color := LabelFade.Font.Color - (1 shl 16) - (1 shl 8) - 1; In den Timer einbinden.
(Eine Überprüfung ob der Wert nicht schon kleiner als 0 (also $00000000 für Schwarz) ist, müsste sicherheitshalber natürlich auch dazu.)

Falls du dich jetzt fragst was shl macht:

SHL = shift left (Schiebe links)
Das ist eine binäre Operation, d.h. 1 shl 1 wäre 2 weil 0001b eins nach links geschoben 0010b also 2 dezimal wäre.

1 SHL 8 schiebt die eins also an die Stelle wo das neue Byte anfängt (in diesem Falle das für Grün) und 1 SHL 16 logischerweise an die Stelle wo Blau anfängt.
Damit kannst du dir schwieriges (Kopf-)Rechnen sparen und hältst den Code leichter verständlich. :P


Ich hoffe natürlich, dass du dich mit den Zahlensystemen Hexadezimal und Binär schon ein wenig auskennst. ^^
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Textfarbe faden

  Alt 15. Apr 2004, 16:08
Also theoretisch klappt der code, nur hab ich das problem, dass wenn das Label am anfang eine Farbe wie z.b. clBtnFace oder andere Formen davon, ausgenommen den werten wie clBlue usw. hat, dass das direkt schwarz wird. Sonst fadet der.

Delphi-Quellcode:
procedure Tf_strasse.Timer1Timer(Sender: TObject);
begin
if(label3.color<>$00000000) then
Label3.Color := Label3.Color - (1 shl 16) - (1 shl 8) - 1
else
timer1.enabled:=false;
end;


procedure Tf_strasse.FormCreate(Sender: TObject);
begin
//label3.color:= rgb(212,208,200);
 end;
Wenn ich den Teil aktiviere, der beim starten der Form ausgeführt wird, klappt es, obwohl das genau der Farbwert ist, den clBtnFace hat. Kann mir jemand sagen warum der dass macht?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Textfarbe faden

  Alt 15. Apr 2004, 17:03
Bei:
Label3.Color := Label3.Color - (1 shl 16) - (1 shl 8) - 1 würd ich eher:
Label3.Color := ColorToRGB(Label3.Color) - (1 shl 16) - (1 shl 8) - 1 TColor speichert bekannte Farben "cl*" soweit ich weiss nicht als Farbwert, sondern als den Namen "cl*". Daher musst du erst Umwandeln!

und:
1 shl 16 = 65536
1 shl 8 = 256
sparst dir damit 2 Berechungen.

\edit: Noch besser:
(1 shl 16) - (1 shl 8) - 1 = 65536 - 256 - 1 = 65279
Dann erkennt zwar kein Mensch merh, was su da machst, aber nu ;)
Aber besser meinen Beitrag hier drunter anschauen *g*.



gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Textfarbe faden

  Alt 15. Apr 2004, 17:09
Nochwas!!!

Wenn du mit "nicht-grauen" Farben arbeitest, kann das recht unschön werden! Mein Tipp:

Delphi-Quellcode:
var
  r,g,b : Integer;
  c : LongInt; // Color ist ein LongInt !
.
.
.
c := ColorToRGB(Label1.Color);

r := GetRValue(c)-1;
if r < 0 then r := 0; // Bereichsprüfung, sonst wird's unschön!
if r > 255 then r := 255; // Bereichsprüfung, sonst wird's unschön!

g := GetGValue(c)-1;
if g < 0 then g := 0; // Bereichsprüfung, sonst wird's unschön!
if g > 255 then g := 255; // Bereichsprüfung, sonst wird's unschön!

b := GetBValue(c)-1;
if b < 0 then b := 0; // Bereichsprüfung, sonst wird's unschön!
if b > 255 then b := 255; // Bereichsprüfung, sonst wird's unschön! ;)

Label1.Color := rgb(r, g, b);
Da du aber nur subtrahierst, und auch immer nur 1, reicht folgendes:
Delphi-Quellcode:
var
  r,g,b : Byte;
  c : LongInt; // Color ist ein LongInt !
.
.
.
c := ColorToRGB(Label1.Color);

if GetRValue(c) > 0 then r := GetRValue(c)-1;
if GetGValue(c) > 0 then g := GetGValue(c)-1;
if GetBValue(c) > 0 then b := GetBValue(c)-1;

Label1.Color := rgb(r, g, b);
gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Textfarbe faden

  Alt 15. Apr 2004, 19:41
warum stellst du nicht als anfangsfarbe 'black' ein???
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Textfarbe faden

  Alt 15. Apr 2004, 20:56
@ glkbkk: Willste von schwarz auf schwarz faden, oder weist du nicht, was faden heißt?
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Textfarbe faden

  Alt 15. Apr 2004, 21:04
achso, ich hab mir noch mal wort für wort alles durchgelesen, jetzt hab ichs verstanden...

also, ich würds so machen:

Delphi-Quellcode:
{also, ich gehe von dieser farbe aus 212,208,200,
und davon, das dass ein rgb, und kein grb ist, sonst muss man es halt umstellen...}


repeat
blau:=blau+1;//symbolisch
until blau=rot;

repeat
gruen:=gruen+1;
until gruen=rot;

//bis hier wird sichergestellt, das es ein echtes grau ist, dann dies:

for rot:=rot downto 0 do
     begin
     gruen:=rot;
     blau:=rot;
     sleep(100);//oder halt mehr, oder weniger....
     end;

//so, das wärs
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Textfarbe faden

  Alt 15. Apr 2004, 22:10
Warum sollte man Blau und Grün erst mit Rot gleichziehen, um ne Graustufe draus zu machen? Und warum in einer Schleife Wenn dann soch grün := rot bzw. blau := rot...

Aber es ist trotzdem Unsinn! Man kann doch, wie ich's oben schrieb, von JEDER Farbe aus faden!? Man könnte sogar noch pingeliger werden, und es so biegen, dass dass alle 3 Werte im gleichen Zyklus die 0 erreichen! DANN wäre es perfekt


gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  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 23:56 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