Autor |
Beitrag |
Christian V.
      
Beiträge: 311
Win Xp Prof
Turbo Delphi 2005
|
Verfasst: 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
|
Verfasst: Fr 24.07.09 03:59
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: 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. 
      
Beiträge: 311
Win Xp Prof
Turbo Delphi 2005
|
Verfasst: Fr 24.07.09 09:33
Freut micht, dass es euch gefällt.
Falls ihr noch Ideen habt: Nur her damit 
_________________ Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.07.09 10:25
Moin!
Ja, nette Idee.  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. 
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: 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. 
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.07.09 12:04
Ja das funktioniert ja sehr gut.
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. 
      
Beiträge: 311
Win Xp Prof
Turbo Delphi 2005
|
Verfasst: Sa 25.07.09 19:57
Vielen Dank für's Feedback. Habe die Vorschläge mal so gut es ging implementiert.
Narses hat folgendes geschrieben : | 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.
Narses hat folgendes geschrieben : | 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
Narses hat folgendes geschrieben : | Dein Header stimmt wohl nicht ganz: "// HexToBin - converts hex string to binary - (C) 2009 by Christian Vonrüti" |
Naja, jetzt steht da wenigstens FastColors, die Beschreibung ist aber noch gleich
Narses hat folgendes geschrieben : | 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
Narses hat folgendes geschrieben : | 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.  |
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?
Jakob_Ullmann hat folgendes geschrieben : | Eine Anregung: das Format $BBGGRR wäre noch ganz nett.  |
Gibt's jetzt auch.
jaenicke hat folgendes geschrieben : | Ja das funktioniert ja sehr gut.
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
jaenicke hat folgendes geschrieben : | 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))
jaenicke hat folgendes geschrieben : | 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 )
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.07.09 21:36
|
|
Christian V. 
      
Beiträge: 311
Win Xp Prof
Turbo Delphi 2005
|
Verfasst: Mo 27.07.09 15:08
Ich denke, dass ich die Positionierung manuell lasse.
jaenicke hat folgendes geschrieben : | 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.
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.  |
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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 27.07.09 16:00
Moin!
Christian V. hat folgendes geschrieben : | Narses hat folgendes geschrieben : | 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.  |
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).
Christian V. hat folgendes geschrieben : | 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 ( Luckie hatte da glaub ich mal einen Code-Schnipsel zu), diese DLL dann mit in die Ressource, fertig.  Hört sich zugegeben heftig an, wäre aber die optimale Lösung.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 28.07.09 02:36
Moin!
Schau dir doch mal den Source-Code hier an, insbesondere 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 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).
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
|