AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus auf ein Ereignis reagieren lassen

Ein Thema von RXR-Max · begonnen am 15. Apr 2007 · letzter Beitrag vom 18. Apr 2007
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 16:11
ok die maus soll reagieren wenn der cursor auf einer farbe zwischen der und der ist. das könnte ich ja in hex machen so

$B5D4F19E .
Aber in delphi gibt es das schlüsselwort 'between' leider nicht dafür. Wie kann ich es denn machen?
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#22

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 16:38
Zitat von RXR-Max:
Wie kann ich denn rausfinden wie ich machen kann das das mausereignis passiert wenn der cursor auf einer farbe zwischen dem und dem ist...
Da kann ich dir wie gesagt auch nicht weiterhelfen

Aber nochmal zu den Code: Hast du den hier richtig reingepostet??? Weil so kann der nicht funktionieren... Wenn dann so:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DesktopDC: hDC;
  Pos: TPoint;

implementation

{$R *.dfm}
function GetPixelFarbe: TColor;
begin
  Result := GetPixel(DesktopDC, Pos.X, Pos.Y);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DesktopDC := GetDC(0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(Pos);
if GetPixelFarbe = clGreen then
  begin
  mouse_event(MOUSEEVENTF_RIGHTDOWN, Pos.x, Pos.y, 0, 0);
  mouse_event(MOUSEEVENTF_RIGHTUP, Pos.x, Pos.y, 0, 0);
  end;
end;

end.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#23

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 16:51
Zitat von RXR-Max:
ok die maus soll reagieren wenn der cursor auf einer farbe zwischen der und der ist. das könnte ich ja in hex machen so$B5D4F19E ...
Ich hätte da so eine Idee...
Man kann ja die Farbe des Pixels unter der Maus und die gewünschte Farbe in die 3 Grundfarben zerlegen.... und dann subtrahieren und wenn das Ergebnis so ziehmlich bei null ist, dann ist es eine ähnliche Farbe!!!
Anregung in diesem Thread!

Farbe 1: R=120...G=100...B=12
Farbe 2: R=130...G=90...B=10

Ergebnis: R=10...G=10...B=2

--> Farbe ähnlich.... Klick ausführen.

Und, wie findes du die Idee???
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 16:57
Und wenn das Programm beendet wird, sollte man den Speicher auch wieder frei geben:
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
 if DesktopDC > 0 then
   ReleaseDC(0, DesktopDC);
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#25

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 17:01
sehr gute idee. jedoch sind die farben in zu großem unterschied. hatte ich schon erwähnt das die farben wechseln!!!!!!!!!!??

Aber da fällt mir auch noch etwas ein. jetzt musst du mir nur noch sagen wie ich das auf delphi übertrage

du weißt ja...

NEULING

edit: Kann mir denn jemand erkläre wie ich das machen soll?
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von HannosG
HannosG

Registriert seit: 2. Jul 2006
42 Beiträge
 
Delphi 2010 Professional
 
#26

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 18:58
Vielleicht so:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  DesktopDC: hDC;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
DesktopDC := GetDC(0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
If DesktopDC > 0 then
   ReleaseDC(0, DesktopDC);
end;

function GetPixelAbweichung(Farbe: TColor): Integer;
var DCFarbe: TColor;
begin
DCFarbe:=GetPixel(DesktopDC, Mouse.CursorPos.X, Mouse.CursorPos.Y);
Result:=Abs(GetRValue(Farbe)-GetRValue(DCFarbe)) +
        Abs(GetGValue(Farbe)-GetGValue(DCFarbe)) +
        Abs(GetBValue(Farbe)-GetBValue(DCFarbe));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If GetPixelAbweichung(clGreen)<100 // die Abweichung von der Farbe, z.B. 100. maximale Abweichung wäre 3*255
  then begin
  mouse_event(MOUSEEVENTF_RIGHTDOWN, Mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);
  mouse_event(MOUSEEVENTF_RIGHTUP, Mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);
  end;
end;
"Abs" gibt den Betrag bzw. den Absolut-Wert zurück. Bsp.: Abs(2-7)=5

EDIT: Achja, DesktopDC am Ende noch freigeben. (s. bittsetter)
Hanno Günther
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#27

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 19:04
du bist ein schatz!!!

ää *räusper*. Nein ich bin nicht schwul...

hab herzlichen dank
Der menschliche Körper ist immernoch das beste Instrument.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#28

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 19:56
Aber nicht den letzten Beitrag von Bitsetter unter den Tisch fallen lassen!!!
Es gehört sich einfach den Speicher wieder freizugeben

Und jetzt ist da die redbox... und die sagt, dass der Hanno das schon geändert hat in seinem Code... Naja... spät, aber gemacht^^
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#29

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 20:09
Ich hab jetzt aber nochmal was nachgeprüft...
Ob es vielleicht klüger wäre den Schnitt an Abweichungen auszurechnen???

Weil siehe Screenshot (Bild 1): die zwei Farben sehen sich doch ziemlich ähnlich...
Code:
        R   G   B
oben: 150  255   0
unten: 0   255  150
ergibt: 150 + 0 + 150 = 300
Sehr große Abweichung für kleine sichtbare Abweichung oder?

Edit: Anhang

Edit2: Bild 2 im Anhang...
Code:
        R   G   B
oben:  0  205   230
unten: 0   255  150
ergibt: 0 + 50 + 80 = 120
und hier ist ein deutlicher Unterschied sichtbar...

Edit 3: Mit dem Schnitt bilden geht ja auch net...
300/3 = 100
120/3 = 40
auch eine Verfälschung...


Toll, oder?
Miniaturansicht angehängter Grafiken
bild1_722.jpg   bild2_263.jpg  
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von RXR-Max
RXR-Max

Registriert seit: 15. Apr 2007
Ort: Hamburg
48 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 20:20
die abweichung könnte noch größer sein, aber ich hab keine ahnung wie ich die jetzt vergrößere. ich lege die farbe dann ja eh fest. Vielleicht mach ich eine TComboBox mit rein das man die farbe selber auswählen kann.
Der menschliche Körper ist immernoch das beste Instrument.
  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 16:32 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