Autor Beitrag
Christian V.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Do 23.07.09 23:57 
Wer häufig mit CSS Stylesheets arbeitet kennt das sicher. Man will irgendwas ändern doch die alle dazu benötigten Farbcodes sind leider nur als dumme Pixel verschlüsselt auf dem Bildschirm zu finden. Um dem abzuhelfen, ist dieses Tool entstanden. Damit kann man den Farbcode des Pixels, der sich gerade unter dem Mauszeiger befindet, schnell in die Zwischenablage kopieren.

Features:
  • Kopiert Farbcode per Hotkey
  • Zeigt Mauszeigerumgebung vergrösser an(x35)
  • History - letzte 10 Farbcodes abrufbar(mit Vorschau)
  • Drei Formate: #RRGGBB, RRGGBB, $BBGGRR

Hotkeys:
  • [Ctrl]-[Win]-[C] - Kopieren
  • [Ctrl]-[Win]-[X] - Format ändern
  • [Ctrl]-[Win]-[H] - Farbe in der Mitte hervorheben(an/aus)
Einloggen, um Attachments anzusehen!
_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?


Zuletzt bearbeitet von Christian V. am Sa 25.07.09 19:22, insgesamt 2-mal bearbeitet
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.07.09 03:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Fr 24.07.09 09:09 
Das ist ja mal ne richtig coole Idee ;-) Gefällt mir richtig gut und kann ich zudem noch dringend gebrauchen. Beim Webseiten erstellen, weiss ich nämlich nie, welche Farbe das jetzt ist, die ich haben möchte, aber das hat ja jetzt ein Ende. Vielen Dank ;-)


Grüße

Webo

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
Christian V. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Fr 24.07.09 09:33 
Freut micht, dass es euch gefällt.
Falls ihr noch Ideen habt: Nur her damit :D

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 24.07.09 10:25 
Moin!

Ja, nette Idee. :zustimm: Ich fände es interessant, statt einer einheitlich gefärbten Fläche einen stark vergrößerten Ausschnitt (zusätzlich?) einzublenden - erleichtert die "Navigation". ;)

Noch was technisches:
  • Du wirst die Unit "Variants" vermutlich nicht brauchen, also raus aus den Uses. ;)
  • Dein Header stimmt wohl nicht ganz: "// HexToBin - converts hex string to binary - (C) 2009 by Christian Vonrüti"
  • Du erstellst jedes mal im Hotkey-Handler eine eigene Instanz von TClipboard - das ist nicht notwendig, nimm einfach die, die schon in der Unit verwaltet wird (einfach nur Clipboard.AsText := edtHexOut.Text; schreiben, fertig).
  • Du verwendest einen Timer, um die aktuelle Farbe zu lesen. Das ist sicher simpel und tut, was es soll - aber elegant ist was anderes. :| Hier sollte nur dann CPU-Zeit verbraten werden, wenn sich die Maus auch bewegt hat. :idea:
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Sa 25.07.09 11:36 
Sehr nützlich das Tool! Sowas hatte ich mir schon immer mal gewünscht, allerdings hatte ich keinen wirklichen Ansatz. Eine Anregung: das Format $BBGGRR wäre noch ganz nett. :wink:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 25.07.09 12:04 
Ja das funktioniert ja sehr gut. :zustimm:

Eine kleine Änderung fände ich sinnvoll: Wenn das Tool (ggf. per ComboBox einstellbar oder so) StayOnTop bliebe. Denn genau das fehlt mir, wenn ich die Webseiten zusammen baue manchmal. Die reine Farbauswahl ist in den Webdesignern ja vermutlich überall auch drin (zumindest bei dem von MS, den ich nutze). Wenn ich aber zuerst irgendwo hinklicken muss, damit eine Farbe sichtbar ist, dann klappt das da nicht. Bei diesem Tool hier geht es, aber dass das Tool selbst dabei verschwindet, ist nicht so schön.

Die bereits genannte Vergrößerung (die sich idealerweise zusammen mit dem Programmfenster automatisch in die der Maus entgegenliegende Bildschirmseite bewegen könnte bis man die Taste drückt) wäre auch sehr interessant.

Und dann wäre noch eine History oder so gut. Also dass man einfach mehrere Farben hintereinander auswählt und die dann als Liste bekommt.

(Wenn ich Zeit hätte, könnte ich da auch selbst einfach mal etwas ändern und als Vorschlag posten, die habe ich aber im Moment nicht. ;-))
Christian V. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Sa 25.07.09 19:57 
Vielen Dank für's Feedback. Habe die Vorschläge mal so gut es ging implementiert.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Ich fände es interessant, statt einer einheitlich gefärbten Fläche einen stark vergrößerten Ausschnitt (zusätzlich?) einzublenden - erleichtert die "Navigation". ;)

Jetzt sieht man 5*5 Pixel, 35 fach vergrössert. Habe dafür die Vorschau quadratisch gemacht.
Der Pixel in der Mitte dient als Quelle für den Farbwert.


user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Noch was technisches:[list]Du wirst die Unit "Variants" vermutlich nicht brauchen, also raus aus den Uses. ;)

Danke, dass du dir den Source so genau angeschaut hast. Auch über weitere Begutachtungen würde ich mich freuen :D

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Dein Header stimmt wohl nicht ganz: "// HexToBin - converts hex string to binary - (C) 2009 by Christian Vonrüti"

:tongue:
Naja, jetzt steht da wenigstens FastColors, die Beschreibung ist aber noch gleich :autsch:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Du erstellst jedes mal im Hotkey-Handler eine eigene Instanz von TClipboard - das ist nicht notwendig, nimm einfach die, die schon in der Unit verwaltet wird (einfach nur Clipboard.AsText := edtHexOut.Text; schreiben, fertig).

Done

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Du verwendest einen Timer, um die aktuelle Farbe zu lesen. Das ist sicher simpel und tut, was es soll - aber elegant ist was anderes. :| Hier sollte nur dann CPU-Zeit verbraten werden, wenn sich die Maus auch bewegt hat. :idea:

Wie könnte ich es denn sonst machen? onMouseMove bezieht sich ja nur auf das Form.
Und laut msdn muss ich für SetWindowsHookEx den zuständigen Code extra in ne DLL packen, damit das Systemweit funktioniert. Gibt's da noch alternativen?


user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Eine Anregung: das Format $BBGGRR wäre noch ganz nett. :wink:

Gibt's jetzt auch.


user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ja das funktioniert ja sehr gut. :zustimm:

Eine kleine Änderung fände ich sinnvoll: Wenn das Tool (ggf. per ComboBox einstellbar oder so) StayOnTop bliebe. Denn genau das fehlt mir, wenn ich die Webseiten zusammen baue manchmal. Die reine Farbauswahl ist in den Webdesignern ja vermutlich überall auch drin (zumindest bei dem von MS, den ich nutze). Wenn ich aber zuerst irgendwo hinklicken muss, damit eine Farbe sichtbar ist, dann klappt das da nicht. Bei diesem Tool hier geht es, aber dass das Tool selbst dabei verschwindet, ist nicht so schön.

CheckBox vielleicht? Ich habe jedenfalls ganz frech ohne zu fragen so eine genommen :D


user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die bereits genannte Vergrößerung (die sich idealerweise zusammen mit dem Programmfenster automatisch in die der Maus entgegenliegende Bildschirmseite bewegen könnte bis man die Taste drückt) wäre auch sehr interessant.

Wie stellst du dir das genau vor? Wenn sich das Fenster automatisch umpositionieren würde, könnte man ja nicht mehr die Buttons anklicken (mal davon abgesehen, dass man die wichtigen auch per HotKeys bedienen kann(History mit <, nicht > (bin doch zu faul für Shift xD))

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und dann wäre noch eine History oder so gut. Also dass man einfach mehrere Farben hintereinander auswählt und die dann als Liste bekommt.

Ich habe das als Popupmenü mit 10 Einträgen implementiert inklusive Icon als Farbvorschau.
Die Farbwerte werden unabhängig vom Format, welches zur Zeit der Ablage in der History eingestellt ist, gespeichert. Deshalb werden alle Historyeinträge im momentan eingestellten Format angezeigt. (ja, das wollte ich so, auch wenn die Formulierung Anderes vermuten liesse :D)

Dann hab ich noch eine Highlight-Funktion hinzugefügt. Die kann man über [Ctrl]+[Win]+[H] ein- und ausschalten. Sie zeichnet einen Rahmen um den mittleren Farbblock. Der Rahmen ist weiss, wenn die darin eingeschlossene Farbe dunkel ist(Helligkeit <= 128), und sonst weiss.

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 25.07.09 21:36 
user profile iconChristian V. hat folgendes geschrieben Zum zitierten Posting springen:
CheckBox vielleicht? Ich habe jedenfalls ganz frech ohne zu fragen so eine genommen :D
Oops, ja, da hatte ich mich vertippt. :D

user profile iconChristian V. hat folgendes geschrieben Zum zitierten Posting springen:
Wie stellst du dir das genau vor? Wenn sich das Fenster automatisch umpositionieren würde, könnte man ja nicht mehr die Buttons anklicken (mal davon abgesehen, dass man die wichtigen auch per HotKeys bedienen kann(History mit <, nicht > (bin doch zu faul für Shift xD))
Dann könnte die Vorschau separat angezeigt werden, denn die sollte ja außerhalb der Mausposition liegen. Das ginge auch.

Ja, ich hatte jetzt so an die übliche Umsetzung in Webdesigntools gedacht. Also erst aktivieren und dann bis zur Farbauswahl für einige Sekunden oder so auch dem Mauszeiger ausweichen. Aber das ist schon nicht so einfach, ja. :gruebel:
Es ist wohl wirklich am besten entweder einfach die Vorschau separat anzuzeigen oder alles stationär zu lassen, man kann das Fenster ja manuell sinnvoll positionieren. :D
Christian V. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Mo 27.07.09 15:08 
Ich denke, dass ich die Positionierung manuell lasse.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ja, ich hatte jetzt so an die übliche Umsetzung in Webdesigntools gedacht. Also erst aktivieren und dann bis zur Farbauswahl für einige Sekunden oder so auch dem Mauszeiger ausweichen. Aber das ist schon nicht so einfach, ja. :gruebel:
Es ist wohl wirklich am besten entweder einfach die Vorschau separat anzuzeigen oder alles stationär zu lassen, man kann das Fenster ja manuell sinnvoll positionieren. :D


Ah, ich verstehe was du meinst. Ich denke allerdings nicht, dass ich das implementieren werde. Ich hatte mir eher gedacht, dass das Tool immer im Hintergrund bzw Vordergrund läuft und so schnell die Farbcodes in die zwischenablage bringt.

Sonst noch Ideen?

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 27.07.09 16:00 
Moin!

user profile iconChristian V. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Du verwendest einen Timer, um die aktuelle Farbe zu lesen. Das ist sicher simpel und tut, was es soll - aber elegant ist was anderes. :| Hier sollte nur dann CPU-Zeit verbraten werden, wenn sich die Maus auch bewegt hat. :idea:

Wie könnte ich es denn sonst machen? onMouseMove bezieht sich ja nur auf das Form.
Also wenn schon der Timer-Ansatz, dann mit einer deutlich geringeren Frequenz (deine aktuellen 100ms halte ich für zu schnell, ich denke >=250ms wäre angemessen; mach´s halt notfalls einstellbar) und mit einer Prüfung auf veränderte Maus-Koordinaten, nicht jedes mal den kompletten Code redundant ausführen (gab ja ggfs. gar keine Änderung). :idea:

user profile iconChristian V. hat folgendes geschrieben Zum zitierten Posting springen:
Und laut msdn muss ich für SetWindowsHookEx den zuständigen Code extra in ne DLL packen, damit das Systemweit funktioniert. Gibt's da noch alternativen?
Nein, hier gibt es AFAIK keine Alternative zum "vernünftigen" Ansatz. Es gibt allerdings Tricks, um eine DLL aus dem RAM zu laden (user profile iconLuckie hatte da glaub ich mal einen Code-Schnipsel zu), diese DLL dann mit in die Ressource, fertig. 8) Hört sich zugegeben heftig an, wäre aber die optimale Lösung. :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 28.07.09 02:36 
Moin!

Schau dir doch mal den Source-Code hier an, insbesondere
ausblenden Delphi-Quelltext
1:
function Luminance(const AColor: TColor): Byte;					
(berechnet den Grauwert = Helligkeit einer Farbe, du hast den Durchschnitt der RGB-Werte genommen, das ist für eine Hell/Dunkel-Unterscheidung nicht korrekt (in diesem Fall aber wahrscheinlich egal)) und
ausblenden Delphi-Quelltext
1:
function FormatColor(const AColor: TColor; const FormatString: String): String;					
(damit kann man eine Farbe über einen Formatierungs-String umwandeln, so hat man deutlich mehr Freiheiten beim Ausgabeformat; dabei steht %R / %G / %B für den Farbwert als 2-stellige Hex-Zahl und %r / %g / %b für den Farbwert als 1..3-stellige Dez-Zahl). :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.