Entwickler-Ecke

Multimedia / Grafik - Colorgrid / Farbfeld, Wie TColorDialog.


Ebil - Sa 09.04.11 22:12
Titel: Colorgrid / Farbfeld, Wie TColorDialog.
Abend,

Ich suche etwas wie TColorDialog, aber es soll dauerhaft die farbe an das programm weitergeben können / es nicht komplett aufhalten.
Will also einfach ein farbfeld mit allen farben, das mir die farbwerte als RGB wiedergeben kann, und indem man die maus frei bewegen kann, wärend es die werte weitergibt.
Anwendung: Die Daten werden über eine serielle schnittstelle an meine RGB-LED lampe gesendet, und das soll möglichst in echtzeit geschehn, ohne , das man wie bei dem Dialog, erst auf "ok" klickt nachdem man eine Farbe gewählt hat.

LG Ebil


bummi - Sa 09.04.11 22:22

Im OnMousemove die Farbe eines Pixels eine speziell aufbereiteten Bitmap abfragen.
Um alle Farbe darzustellen bräuchtest Du aber 255*255*255 Pixel, Du wirst Dir also eine sinnvolle Reduktion ausdenken müssen.


beastofchaos - Sa 09.04.11 22:56

Ich würde auch erst mal mit MouseMove anfangen, am besten über einer Paintbox ( ist sauberer, find ich :D ).
Hier mal ein Bild, wie ein Programm von den Machern eines Delphibuchs aussieht.
http://s1.directupload.net/images/110409/8bykgw74.png

Das enthält leider nicht eine ganz Palette gleichzeitig ( kann man selber einstellen )
Meine Idee für eineganze Palette der Farben: Du zeichnest ein Dreieck, das in jeder Ecke rot/grün/blau hat. Und dann gehste für jeden Punkt in dem Dreieck die Entfernung zu den Ecken durch. Abhängig von der Entfernung skalierst du die Farbe - hätte da auch schon eine entsprechende Funktion zum Farbskalieren an der Hand :p
Wie man die einzelnen Pixel des Dreiecks durchgeht wäre sehr umständlich, aber ginge ;)

Dann lieste einfach die Farbe der Stelle aus, wo gerade die Mouse ist ("MyColor := Canvas.Pixels[X,Y]") und drehst noch Rot und Blau aus ( in Delphi ist es das "BGR-Modell" statt RGB )


Hoffe ich konnte helfen, Grüße Thomas


Ebil - So 10.04.11 00:04

Mh die idee von bummi klingt recht simpel und reicht mir glaube ich zur genüge.
Dennoch wenn jemand zufällig so eine komponente kennt, mit mehr einstellungen, wäre auch ganz nett :)
Werd wohl noch einen Extra regler für helligkeit reinmachen, dann sind direkt wieder mehr möglichkeiten da.

Danke euch.


jaenicke - So 10.04.11 06:40

Hier bei Microsoft findest du eine Anleitung (+ Beispiel) wie du ein solches Control selbst bastelst. ;-)
http://msdn.microsoft.com/en-us/magazine/cc164113.aspx
Und zwar ohne Bitmap oder so, sondern ganz normal selbst gezeichnet. ;-)


beastofchaos - So 10.04.11 14:32

Kennste die Komponente "ColorDialog" ?

Damit könnste auch ganz leicht so ne Darbauswahl steuern ohne das selbst zu zeichnen.


jaenicke - So 10.04.11 15:03

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Kennste die Komponente "ColorDialog" ?
Die Frage hast du aber gelesen? :gruebel:
user profile iconEbil hat folgendes geschrieben Zum zitierten Posting springen:
Ich suche etwas wie TColorDialog, aber es soll dauerhaft die farbe an das programm weitergeben können / es nicht komplett aufhalten.
[...]
und das soll möglichst in echtzeit geschehn, ohne , das man wie bei dem Dialog, erst auf "ok" klickt nachdem man eine Farbe gewählt hat.


// EDIT:
Ach ja, hier auch ein wenig was in Delphi, leicht zu finden:
http://www.torry.net/quicksearchd.php?String=color+picker&Title=Yes ("TColorPicker v.3.0" und "ThkColorPicker v.1.0")
http://delphi.about.com/od/fullcodeprojects/l/aa012704a.htm
http://home.hccnet.nl/david.dirkse/math/colorsel/getcolor.html


beastofchaos - So 10.04.11 16:25

ICH <-- doof :P Sorry