AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte .: Dezimalfarbwerte :.
Thema durchsuchen
Ansicht
Themen-Optionen

.: Dezimalfarbwerte :.

Ein Thema von Chrissi91 · begonnen am 20. Dez 2005 · letzter Beitrag vom 20. Dez 2005
Antwort Antwort
Chrissi91
Registriert seit: 28. Jul 2005
.: Dezimalfarbwerte :.

Hallo,

ich freue mich, euch mein kleinstes und sinnvollstes Projekt Dezimalfarbwerte vorstellen zu können. Man kann damit einen Farbverlauf erzeugen, dessen 2 Hauptfarben man vorher wählen kann. Diese werden in Dezimalzahlenumgewandelt werden und müssen nur noch hier eingetragen werden:

Delphi-Quellcode:
procedure Hintergrund(Canvas: TCanvas; Color1, Color2: TColor; Rect: TRect);
var
 X, R, G, B: Integer;
begin
 for X := Rect.Top to Rect.Bottom do
  begin
   R:=Round(GetRValue(Color1)+((GetRValue(Color2)-GetRValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   G:=Round(GetGValue(Color1)+((GetGValue(Color2)-GetGValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   B:=Round(GetBValue(Color1)+((GetBValue(Color2)-GetBValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   Canvas.Pen.Color:=RGB(R,G,B);
   Canvas.Pen.Width:=1;
   Canvas.Pen.Style:=psInsideFrame;
   Canvas.MoveTo(Rect.Left,X);
   Canvas.LineTo(Rect.Right,X);
  end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 Hintergrund(Canvas,Farbwert1,Farbwert2,Rect(0,0,width,height));
end;
Angehängte Dateien
Dateityp: rar dezimalfarbwerte_317.rar (182,3 KB, 14x aufgerufen)
Dateityp: rar dezimalfarbwerte_471.rar (182,4 KB, 15x aufgerufen)
 
Benutzerbild von dahead
dahead
 
#2
  Alt 20. Dez 2005, 17:24
d. h. du hast einfach das hier kompiliert, oder wie?

hast du davon einen screenshot, würde mich interessieren. danke!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#3
  Alt 20. Dez 2005, 17:28
Zitat von dahead:
d. h. du hast einfach das hier kompiliert, oder wie?

hast du davon einen screenshot, würde mich interessieren. danke!
Im Prinzip hat er das... und wenn das das sinnvollste Programm ist das er je (nicht selbst) programmiert hat... na dann^^

Fazit: Sieht zwar ganz gut aus, aber Benutzerunfreundlich und der Code ist nur abgeschrieben und was daran nütlich ist weiß ich nicht...^^
Miniaturansicht angehängter Grafiken
screenshot_921.jpg  
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh
 
#4
  Alt 20. Dez 2005, 17:33
Warum als Dezimalzahl? Hexadezimal finde ich viel übersichtlicher. Außerdem sollte man noch das Format bestimmen können, also $00BGR für TColor usw. und $FFRGB für z.B. GR32.
Sebastian
  Mit Zitat antworten Zitat
Chrissi91
 
#5
  Alt 20. Dez 2005, 17:39
Das mit dem sinnvoll war eher nicht so ganz ernst gemeint . Aber ich finde es (für mich) sehr nützlich, um die Farben in Dezimalwerte umzurechnen. Wenn ihr es wissen wollt: Der Code ist von dem angegebenen Link. Aber ich habe es mit meinem Computerlehrer umgeschrieben, um es ein wenig verständlicher für mich zu machen. Ich zumindest habe die Dezimalzahlen nicht im Kopf Sollte eher ein kleines Tool für mich sein.

P.S.: Den obigen Code zum Einsetzen habe ich nur aus dem Link kopiert, da der Quelltext bei mienem Computerlehrer ist.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#6
  Alt 20. Dez 2005, 17:52
Ich glaube wenn du einfach den Farbverlauf weggelassen hättest und gesagt hättest das dein Programm Farben in Dezimalwerte umrechnet dann wäre das sogar noch besser angekommen
Michael
  Mit Zitat antworten Zitat
ichbins

 
Delphi 2005 Personal
 
#7
  Alt 20. Dez 2005, 18:18
wie wärs mit:

- automatisch anpassen (ja, mein PC hat genügend Rechneleistung, um das zu schaffen)
- xpstyle
- wieso müssen die edits readonly sein?
Michael Enßlin
  Mit Zitat antworten Zitat
Chrissi91
 
#8
  Alt 20. Dez 2005, 18:27
Damit keiner Buchstaben eintippt und dann eine Fehlermeldung kommt

P.S.: Alles bis auf das automatische Ändern wurde hinzugefügt im ersten Beitrag als Dezimalfarbwerte 1.1
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

 
Delphi 2007 Professional
 
#9
  Alt 20. Dez 2005, 18:41
Ich muss jetzt mal ein bischen zitieren:
Zitat von Chrissi91:
Der Code ist von dem angegebenen Link. Aber ich habe es mit meinem Computerlehrer umgeschrieben, um es ein wenig verständlicher für mich zu machen.
OK, dann zeig mir jetzt mal eine Zeile Code, die bei folgend beiden Quellcodes anders ist. (ausser vom Namen der Prozedur), und was bitte soll dann verständlicher geworden sein

Und wenn DU dann schreibst, dass Du Dein sinnvollstes Programm vorstellst, hab ich damit echt ein Problem, denn:
  • Es ist in keinster Weise von Dir, ist einfach nur kopiert ohne Quellenangabe.
  • Für mich persönlich ist die Definition von sinnvoll etwas erweiterbar

Hier nochmal zum Vergleich die beiden Quellcodes:
Zitat von Delphi Library Topic 21528:
Delphi-Quellcode:
procedure DrawGradientH(Canvas: TCanvas; Color1, Color2: TColor; Rect: TRect);
var
  X, R, G, B: Integer;
begin
  for X := Rect.Top to Rect.Bottom do begin
    R := Round(GetRValue(Color1) + ((GetRValue(Color2) - GetRValue(Color1)) *
      X / (Rect.Bottom - Rect.Top)));
    G := Round(GetGValue(Color1) + ((GetGValue(Color2) - GetGValue(Color1)) *
      X / (Rect.Bottom - Rect.Top)));
    B := Round(GetBValue(Color1) + ((GetBValue(Color2) - GetBValue(Color1)) *
      X / (Rect.Bottom - Rect.Top)));

 
    Canvas.Pen.Color := RGB(R, G, B);
    Canvas.Pen.Width := 1;
    Canvas.Pen.Style := psInsideFrame;

 
    Canvas.MoveTo(Rect.Left, X);
    Canvas.LineTo(Rect.Right, X);
  end;
end;
Zitat von chrissi91:
Delphi-Quellcode:
procedure Hintergrund(Canvas: TCanvas; Color1, Color2: TColor; Rect: TRect);
var
X, R, G, B: Integer;
begin
for X := Rect.Top to Rect.Bottom do
  begin
   R:=Round(GetRValue(Color1)+((GetRValue(Color2)-GetRValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   G:=Round(GetGValue(Color1)+((GetGValue(Color2)-GetGValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   B:=Round(GetBValue(Color1)+((GetBValue(Color2)-GetBValue(Color1))*X/(Rect.Bottom-Rect.Top)));
   Canvas.Pen.Color:=RGB(R,G,B);
   Canvas.Pen.Width:=1;
   Canvas.Pen.Style:=psInsideFrame;
   Canvas.MoveTo(Rect.Left,X);
   Canvas.LineTo(Rect.Right,X);
  end;
end;
Tom Peiffer
  Mit Zitat antworten Zitat
Chrissi91
 
#10
  Alt 20. Dez 2005, 18:58
Schon klar, dass das die selben sind, aber jetzt zitiere ich mal:


Zitat von Chrissi91:
...
P.S.: Den obigen Code zum Einsetzen habe ich nur aus dem Link kopiert, da der Quelltext bei mienem Computerlehrer ist.
Das bezog sich auf den umgeschriebenen Code. Zufrieden?
  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 18:08 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