Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   rzMagnifier - Bildschirmlupe+Colorpicker, Version 1.3 (https://www.delphipraxis.net/116116-rzmagnifier-bildschirmlupe-colorpicker-version-1-3-a.html)

juergen 1. Aug 2008 21:10

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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.

xZise 1. Aug 2008 22:51

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
Zitat:

Zitat von juergen
Zitat:

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

taaktaak 2. Aug 2008 20:24

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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 :oops:

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!

juergen 2. Aug 2008 20:38

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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?

lbccaleb 2. Aug 2008 22:01

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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...

taaktaak 3. Aug 2008 12:40

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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?

juergen 3. Aug 2008 14:11

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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?

rotfc 3. Aug 2008 15:00

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
Zitat:

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!)

taaktaak 3. Aug 2008 16:59

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
Moin, Moin.

@Jürgen:
Der Farbton wird aus dem im Zentrum dargestellten Pixel des Images der Programmanzeige bestimmt; also ganz unspektakulär mit
Delphi-Quellcode:
Color:=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?

juergen 3. Aug 2008 17:23

Re: rzMagnifier - Bildschirmlupe+Colorpicker
 
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 :mrgreen: (auch unter Vista)

//EDIT: Code-Beispiel angefügt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.
Seite 3 von 5     123 45      

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