![]() |
Cursor an Raster schnappen wie dieser Code ?
Hallo
ich habe diesen Code getestet. Der Code zwingt den Cursor nur auf den raster zu bewegen : ![]() könnte man den Code in Delphi umwandeln ? |
Re: Cursor an Raster schnappen wie dieser Code ?
Ich sehe da auf die Schnelle keinen Befehl, den es in Delphi nicht direkt auch gibt. Insofern sollte das keine allzugroßen Schwierigkeiten bereiten.
Hast du es denn einmal versucht? ;-) |
Re: Cursor an Raster schnappen wie dieser Code ?
Ich bin leider nicht bei Codeproject angemeldet und kann daher den Source nicht ansehen. Aber mit Delphi geht das einfach (schöner geht's immer):
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); const GridSize = 10; var NewPos : TPoint; Changed : boolean; begin NewPos := Point(X, Y); if (X mod GridSize <> 0) then begin if (X mod GridSize) > GridSize div 2 then NewPos.X := X + GridSize - (X mod GridSize) else NewPos.X := X - (X mod GridSize); Changed := True; end; if (Y mod GridSize <> 0) then begin if (Y mod GridSize) > GridSize div 2 then NewPos.Y := Y + GridSize - (Y mod GridSize) else NewPos.Y := Y - (Y mod GridSize); Changed := True; end; if Changed then begin NewPos := ClientToScreen(NewPos); Mouse.CursorPos := NewPos; end; Label1.Caption := Format('%d/%d', [NewPos.X, NewPos.Y]); |
Re: Cursor an Raster schnappen wie dieser Code ?
Der Code bei CodeProject zeigt nur ein Gitter an und man bewegt eine Markierung am Gitter entlang, nicht die Mausposition selbst wird am Gitter ausgerichtet. ;-)
Das ist also sogar noch einfacher. |
Re: Cursor an Raster schnappen wie dieser Code ?
is eigentlich auch schöner ... stell dir mal vor dir zieht ständig wer die Maus unter den Fingern weg ... nicht unbedingt schön zu steuern.
Das Einzige, was noch funktional wäre, wenn man den Mauszeiger unsichtbar macht und selber einen Zeiger ausgibt, diesen kann man dann auch etwas anders Positionieren, ohne daß die Maussteuerung verändert wird. |
Re: Cursor an Raster schnappen wie dieser Code ?
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
Dein Code habe ich getestet aber der Cursor bleibt leider gebremst, nur man die Maus schnell bewegt ... Zitat:
... Zitat:
|
Re: Cursor an Raster schnappen wie dieser Code ?
Zitat:
nur daß du jetzt noch den richtigen Mauszeiger unsichtbar machst und stattdessen an der gewünschten Position einen eigenen Zeiger zeichnest. unsichtbar: Cursor = crNone Zitat:
|
Re: Cursor an Raster schnappen wie dieser Code ?
mal fix zusammengetippt:
Delphi-Quellcode:
lässt sich evtl noch optimieren, aber ist ja nur ein beispiel.
TForm1 = class(TForm)
... private { Private-Deklarationen } oldrect:Trect; ... procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); const gridwidth=10; begin canvas.Pen.Mode:=pmXOR; canvas.Pen.color:=clBlue xor $FFFFFF; //xor damit die markierung auch wirklich blau wird canvas.Brush.Style:=bsClear; //keine füllung if oldrect.Left<>-1 then //altes Rechteck erst einmal löschen begin canvas.Rectangle(oldrect.left,oldrect.top,oldrect.right,oldrect.bottom); end; oldrect.left:=(x div gridwidth)*gridwidth; oldrect.top:=(y div gridwidth)*gridwidth; oldrect.Right:=oldrect.Left+gridwidth; oldrect.Bottom:=oldrect.Top+gridwidth; canvas.Rectangle(oldrect.left,oldrect.top,oldrect.right,oldrect.bottom); end; procedure TForm1.FormCreate(Sender: TObject); begin oldrect:=rect(-1,-1,-1,-1); cursor:=crNone; end; Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz