AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte rzMagnifier - Bildschirmlupe+Colorpicker, Version 1.3
Thema durchsuchen
Ansicht
Themen-Optionen

rzMagnifier - Bildschirmlupe+Colorpicker, Version 1.3

Ein Thema von taaktaak · begonnen am 23. Jun 2008 · letzter Beitrag vom 9. Nov 2008
Antwort Antwort
Seite 3 von 5     123 45      
taaktaak
Registriert seit: 25. Okt 2007
Moin, Moin.

Nachdem mein erstes hier veröffentlichtes Programm "rzNotes" leider überhaupt kein Interesse gefunden hat, möchte ich nun ein weiteres Programm vorstellen, welches vielleicht etwas mehr Beachtung finden wird: Es handelt sich um die Kombination von Bildschirmlupe und ColorPicker angereichert um einige zusätzliche Funktionalitäten. Da das Programm seine "ersten Gehversuche" als Bildschirmlupe gemacht hat, habe ich es rzMagnifier genannt.

Entstehungsgeschichte und Kurzüberblick
Seit einiger Zeit benutze ich den ColorManager von Christian Lukas; dieses Programm ist als Freeware veröffentlicht. Der ColorManager ist ein Tool zur Bestimmung der Farbwerte einzelner auf dem Bildschirm angezeigter Pixel. Damit dies ausreichend genau erfolgen kann, wird der zu untersuchende Bildausschnitt im Programmfenster vergrößert dargestellt. Nutzt man das Programm zu eben diesem Zweck, dann erfüllt es nach meiner Einschätzung seine Aufgabe auch einwandfrei.

Nun musste ich aber beobachten, dass ich den ColorManager seltener startete um einen Farbwert zu bestimmen, als vielmehr um einen Bildschirmausschnitt vergrößert betrachten zu können. Delphi bietet zwar mit der Ausrichtungspalette bereits recht gute Möglichkeiten einzelne Objekte auf dem Form auszurichten, trotzdem habe ich häufiger den Bedarf Ausrichtungen und Abstände zu kontrollieren und ggf. anzupassen. Für diese Anforderung ist der ColorManager nicht entwickelt und weniger gut geeignet: Das Zoomfenster ist zu klein und es gibt z.B. keine Hilfslinien, die als frei bewegliche Lineale verwendet werden können. Nun gut, dachte ich, dann schau doch mal, was an Bildschirmlupen als Freeware angeboten wird. Ich gebe es zu, lange habe ich nicht gesucht, aber so recht überzeugt haben mich die gefundenen Programme alle nicht.

Inzwischen war dann auch der Gedanke entstanden, es selbst einmal zu versuchen und beides, also Farbwertbestimmung und Lupenfunktion, in einem Programm zu vereinen und alles an meinen persönlichen Bedürfnissen auszurichten. Bereits in der Anfangsphase der Programmierung drängte sich dann eine dritte Funktionalität geradezu auf: Extrahieren, Bearbeiten und Archivieren von Bitmaps.

Zunächst war geplant, als Ersatz für den nicht komfortablen Bildeditor von Delphi eine Eigenlösung zu schreiben und diese um eine zusätzliche Icon-Datenbank zu erweitern. Nachdem ich aber ein recht passables Programm im Internet gefunden habe, das beide Funktionalitäten bereits bietet und zudem recht kostengünstig ist, wurde dieser Gedanke (vorerst) aufgegeben. Stattdessen wurde die Möglichkeit geschaffen, direkt aus rzMagnifier derartige Programme aufzurufen und einen markierten Bitmap-Ausschnitt direkt an ein externes Programm zu übergeben.

Das für ein derartiges Tool relativ große Programmfenster führt allerdings zu einer gewissen Einschränkung: Für Computer mit kleinem Monitor (z.B. Notebooks) ist rzMagnifier weniger gut geeignet; die Vorteile des Programms nutzt man vor allem auf großen Monitoren bzw. Systemen mit mehreren Monitoren!

Systemanforderungen
Das Programm ist auf einem Windows XP System programmiert und seit einiger Zeit auf einem Notebook Athlon XP, 1 GB RAM (Windows XP Home, SP2) und einer Bildschirmauflösung von 1024x768 sowie einem PC mit Athlon 64x2, 2 GB RAM (Windows XP Media Center Edition, SP2) und 2 Monitoren mit Auflösungen von 1400x1050 problemlos in Betrieb. Minimalanforderungen sind nicht bekannt; das Programm sollte aber auch auf älteren Systemen grundsätzlich lauffähig sein. Da Alphablending in früheren Windowsversionen nicht zur Verfügung steht, kann die sichtbare Bildschirmlupe nur in Windows 2000 und neueren Versionen des Betriebssystems verwendet werden. Ein kurzer Test unter Windows 2000 verlief ohne Probleme. Unter Vista konnte das Programm von mir nicht getestet werden, laut Angabe eines Anwenders ist rzMagnifier auch unter VISTA einsetzbar.

Installation
Eine Installation des Programms ist nicht erforderlich. Um rzMagnifier benutzen zu können, muss vom Anwender im Normalfall lediglich ein Programmverzeichnis an beliebigem Ort angelegt und die gelieferten Dateien in dieses Verzeichnis kopiert werden. Bei Bedarf ist eine Programmverknüpfung anzulegen - weitere Schritte sind nicht erforderlich. Im Programmverzeichnis benötigt das Programm volle Schreibrechte, da hier auch Initialisierungsdaten gespeichert werden. Hat das Programm auf dieses Verzeichnis keinen Schreibzugriff, wird vom Programm alternativ unterhalb des Verzeichnis "APPDATA" ein Datenverzeichnis angelegt und alle Daten dort gespeichert. Weitergehende Informationen finden sich in der Hilfedatei.

Quelltext
Der Quelltext wird an dieser Stelle vorerst nicht zum anonymen Zugriff veröffentlicht. Das hat mehrere Gründe. Hauptgrund ist, dass ich damit leider schlechte Erfahrungen gemacht habe. Ein weiterer Grund ist, dass, obwohl alle Funktionalitäten nach meinen Tests bereits sichergestellt sind, an zentraler Stelle noch "nachgearbeitet" werden muss. Wer Interesse hat, möge mich bitte persönlich ansprechen.

Hilfetext
Obwohl dieses Tool in erster Linie für den Eigengebrauch programmiert ist, habe ich einen aus meiner Sicht recht umfangreichen Hilfetext erstellt. In erster Linie wollte ich einmal testen, welchen Arbeitsumfang die Erstellung einer Hilfe macht. Außerdem war es interessant festzustellen, dass Programmieren und Hilfetexterstellung eine Reihe von Interaktionen auslösten, d.h. während der Formulierung der Hilfe wurden Widersprüche und Mängel der Programmlogik offenbar, die mir vermutlich sonst nicht aufgefallen wären.

Tja, das sollte an dieser Stelle erst einmal genug sein! Zum Download werden ein Screenshot sowie die Programm- und Hilfedatei bereitgestellt.

// edit 24.06.2008
Reaktion auf Hinweis von "extrem": Programm reagiert nun auf Windows-Versionen < Win2000. Alle Alphablend-Funktionalitäten werden ggf. automatisch deaktiviert. Neue Version des Programms und der Hilfedatei bereitgestellt.

// edit 24.06.2008 - 2
Sorry! Das war heute morgen ein wenig zu schnell. Durch die Anpassung hatte sich ein kleiner Fehler eingeschlichen (sichtbare Bildschirmlupe on/off). Hier jetzt die korrigierte Version.

// edit 30.07.2008
Version 1.1 - Zusätzliche optionale Abfrage vor Beenden des Programms, Anpassung der Konfiguration und Hilfedatei, Korrektur von Textfehlern in INFO und HILFE

// edit 09.08.2008
Version 1.2 - Fehlerkorrekturen und Erweiterungen, Details siehe hier

// edit 09.11.2008
Version 1.3 - Fehlerkorrekturen und Erweiterungen, Details siehe hier
Miniaturansicht angehängter Grafiken
screenshot_2008.11.09_173.jpg  
Angehängte Dateien
Dateityp: zip pgm_help_2008.11.09_987.zip (561,9 KB, 98x aufgerufen)
 
Benutzerbild von juergen
juergen

 
Delphi 11 Alexandria
 
#21
  Alt 1. Aug 2008, 21:10
Es wäre halt zu klären wie es funktionieren soll.
Wozu wird das Quadrat angezeigt?
Ich habe nun angenommen, dass man durch dieses Quadrat den Lupenausschnitt direkt an der Maus sieht und nicht im Programmfenster schauen muss.
Klar, deaktivieren kann man es jeder Zeit, aber man sieht dann nicht den Ausschnitt an der Maus.
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#22
  Alt 1. Aug 2008, 22:51
Zitat von juergen:
Zitat von taaktaak:
- Wie ist das gemeint?
Wenn man die Linse aktiviert hat, wird bei mir an der Maus ein rosa Quadrat angezeigt.
Somit sieht man wo man sich mit der Maus befindet...
Es wird dann aber dieser rosa Farbton gespeichert, anstelle der tatsächlichen Farbe unter der Linse (in meinem Beispiel ein grauer Hintergrund).
Habe mal ein laienhaftes Bild angefügt.

Ps.: ausgeführt unter VISTA 64 Bit, SP1.
Identisches System (bis auf das ich es über eine VM laufen habe) aber hier funktioniert alles wie gewünscht.

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#23
  Alt 2. Aug 2008, 20:24
Moin, Moin Jürgen.

Den von dir beschriebenen Fehler, dass die Linsenfarbe unter VISTA in das Anzeigefenster übernommen wird konnte ich auf dem Notebook meiner Frau nachvollziehen.

So soll es natürlich nicht sein: Die (per Popup konfigurierbare) Farbe der Linse) dient lediglich der Markierung, welcher Bereich gerade eingescannt wird. Normalerweise (unter XP und Win2000) wird auch nur der tatsächliche Hintergrund übernommen. Irritiert bin ich allerdings, dass andere Forenmitglieder aussagen, dass es bei ihnen unter VISTA funktioniert. Ich habe einen Verdacht: Meine Frau hat so leicht durchscheinende Fenster (???-Effekt) liegt es vielleicht daran? Kenne mich aber mit VISTA überhaupt nicht aus, konnte diesen Effekt also nicht einmal deaktivieren

Würdest du das bitte mal prüfen, indem du diesen Effekt vorübergehend deaktivierst.

Wenn dieser Effekt die Ursache sein sollte, habe ich aber immer noch das Problem z.Zt. nicht unter VISTA entwickeln zu können - für diesen Fehler kann ich wohl keine kurzfristige Abhilfe in Aussicht stellen.

Aber vielleicht findet sich ein anderes Forenmitglied, dass hier eine konkrete Hilfestellung geben kann. Ggf. könnte mein Program während des Scanvorgangs diesen Effekt vorübergehend deaktivieren und bei Beendigung des Scans wieder anschalten?!

Alle anderen Punkte sind in Arbeit!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

 
Delphi 11 Alexandria
 
#24
  Alt 2. Aug 2008, 20:38
Hallo taaktaak,

es ist tatsächlich so, wenn ich mein Windows Design ändere auf "klassisch" ist alles korrekt.
Stelle ich das Windows Design wieder um auf "VISTA" wird die falsche Farbe angezeigt.

Um diesem Problem auf die Spur zu kommen, müsste man wissen mit welcher Komponeten (VCL?) du das Quadrat umgesetzt hast und mit welchen Eigenschaften.

Vllt. wären auch noch Hinweise von anderen hier hilfreich, ob es unter VISTA 32 Bit mit aktiviertem Aero Design funktioniert und auch unter VISTA 64 Bit mit AERO Design?
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

 
Delphi 7 Enterprise
 
#25
  Alt 2. Aug 2008, 22:01
also bei mir mit vista ist der effekt der selbe, wird auch mit in die box übernommen...
aber sowie jügen schon sagte... nen bissel code wie du die pixel ausliest müssten man schon bekommen, um genauere tipps zu sagen...
Martin
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#26
  Alt 3. Aug 2008, 12:40
Moin, Moin.
Während die übrigen Korrekturen + Ergänzungen gut vorankommen, bleibt das VISTA-Problem vorerst ungelöst. Hab' mich nun schlau gemacht, der "Aero-Glass-Effect" muss also berücksichtigt werden. Die Scanroutine meines Programms ist in diesem Punkt ganz simpel aufgebaut: Der Bildschirminhalt wird mittels

Delphi-Quellcode:
StretchBlt(FScanImage.Canvas.Handle,0,0,FScanImage.Width,FScanImage.Height, // dest
           FDC,X-(FLensSize div 2),Y-(FLensSize div 2),FLensSize,FLensSize, // sou
           SRCCopy);
in die Anzeige des Programms kopiert. Im Augenblick habe ich aber weniger eine "technische" Lösung im Sinn.

Ich frage mich, ob meine erste Idee, den "Aero-Glass-Effect" auszuschalten, sogar logisch zwingend ist? Aufgabe des Programms ist es doch die tatsächlichen Farben zu bestimmen und nicht irgendwelche von Windows hingerechneten Aquarelltöne. Ist es dann nicht am konsequentesten, während des Scans den Effekt auszuschalten? Oder ist das ein falscher Denkansatz?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

 
Delphi 11 Alexandria
 
#27
  Alt 3. Aug 2008, 14:11
Hallo taaktaak,

IMHO nach darf das Windowsschema nicht geändert werden.
Wenn man einen Farbton auswählen will, dann genau den Farbton, welchen man zu diesem Zeitpunkt mit dem verwendeten Windowsschema auch sieht, oder?

Das Problem wird wohl nicht in deinem gezeigten Code zu finden sein.
Wie wird der Farbton ermittelt?
Jürgen
  Mit Zitat antworten Zitat
rotfc
 
#28
  Alt 3. Aug 2008, 15:00
Zitat von taaktaak:
Moin, Moin.
...
Ich frage mich, ob meine erste Idee, den "Aero-Glass-Effect" auszuschalten, sogar logisch zwingend ist? Aufgabe des Programms ist es doch die tatsächlichen Farben zu bestimmen und nicht irgendwelche von Windows hingerechneten Aquarelltöne. Ist es dann nicht am konsequentesten, während des Scans den Effekt auszuschalten? Oder ist das ein falscher Denkansatz?
Noch etwas konsequenter wäre es, die Hintergrundfarbe eines ausgeschalteten Monitors zu berechnen

Wenn ich mit einem Colourpicker auf ein Pixel klicke, möchte ich (sinngemäß) ROT erhalten, auch wenn mir ein lokales .CSS rot als gelb anzeigt. Wenn der Benutzer des Colourpickers dann den Farbwert nicht versteht, hat er eben Pech gehabt oder soll seine getönte Sonnenbrille abnehmen.

Kleb' doch mal auf Deinen Monitor transparente rote Folie und klick ein Pixel an. Welchen Farbwert möchtest Du haben? Den rotgetönten, den Du siehst? Wohl kaum, oder ...


Edith sagt: Mist verzapft. Eine rote, auf den Monitor geklebte Folie ist mit den Transparenzeffekten von Windows nicht vergleichbar.

Mit dem Linksklick möchte ich die Farbe des angeklickten Pixels haben, so wie es der Monitor (ohne Folie) anzeigt. Mit einem Rechtsklick auf das Pixel wäre es ganz nett die Originalfarbe des Pixels zu bekommen (während des Tippens frage ich mich gerade: wozu eigentlich? Den farbverfälschenden transparenten Effektdreck von Windows kann man ja schließlch abschalten!)
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#29
  Alt 3. Aug 2008, 16:59
Moin, Moin.

@Jürgen:
Der Farbton wird aus dem im Zentrum dargestellten Pixel des Images der Programmanzeige bestimmt; also ganz unspektakulär mitColor:=FScanImage.Canvas.Pixels[Pxy,Pxy]; @Roland:
Zitat:
Den farbverfälschenden transparenten Effektdreck von Windows kann man ja schließlch abschalten!
Na, eben! Das ist ja meine aktuelle Überlegung. Wenn ich schreibe
Zitat:
Aufgabe des Programms ist es doch die tatsächlichen Farben zu bestimmen...
dann will ich ja den tatsächlichen von der Anwendung verwendeten Farbton bestimmen und nicht den, der von VISTA mit dem "Aero-Glass-Effect" daraus gemacht wird.

Bisher habe ich aber noch keine Informationen zu folgenden Fragen gefunden...
  • Ist der VISTA "Aero-Glass-Effect" aktiviert?
  • Wie deaktiviere/aktiviere ich diesen Effekt?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

 
Delphi 11 Alexandria
 
#30
  Alt 3. Aug 2008, 17:23
Hallo taaktaak,

wie wird der transparente Farbton für das Auswahlquadrat umgesetzt?
Ist das eine Form mit entsprechendem Alphablend.Value und liegt diese über dem FScanImage?

Ich ermittel einen Farbwert folgendermaßen:
Delphi-Quellcode:
...
{ Private-Deklarationen }
  Farbwert: hDC;
...

  Farbwert:= GetDC(0); //DesktopColor
...

Var myColorValue : TColor;
myColorValue := GetPixel(Farbwert, Pos.X, Pos.Y);
...
Das funktioniert ganz nach dem Motto -> WYSIWYG (auch unter Vista)

//EDIT: Code-Beispiel angefügt...
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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:30 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