Register for your free account! | Forgot your password?

Go Back   elitepvpers › Coders Den › .NET Languages
You last visited: Today at 08:44

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Mausposition auslesen(Kästchenweise)

Discussion on Mausposition auslesen(Kästchenweise) within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
dragonheart11's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 567
Received Thanks: 243
Mausposition auslesen(Kästchenweise)

Hallöchen,

ich habe das problem das ich eine fläche habe die 320 x 320 pixel groß ist.
So jetz will ich mit einer schleife überprüfen wo sich die maus dort befindet ABER immer in einem kästchen von 10 x 10 pixel.

Edit:

Es soll praktisch so sein wie in manchen Voxel Zeichen programm wo er immer nur den kasten füllt wo die maus drin ist

Hoffentlich kann mir dabei jemand helfen
dragonheart11 is offline  
Old   #2

 
Terreox's Avatar
 
elite*gold: 155
Join Date: Aug 2009
Posts: 628
Received Thanks: 153
Welche Sprache benutzt du?
Was hast du bereits probiert?
An welcher Stelle hängst du?
Terreox is offline  
Old   #3
 
dragonheart11's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 567
Received Thanks: 243
Quote:
Originally Posted by Terreox View Post
Welche Sprache benutzt du?
Was hast du bereits probiert?
An welcher Stelle hängst du?
Ich benutze vB
Hier mein Code:
Code:
If Cursor.Position.x - Me.location.x < 10 and Cursor.Position.y - me.location.y < 10 then
'maus befindet sich im ersten Kästchen'
Else
'maus befindet sich nicht im ersten Kästchen'
end if
das ganze funktioniert auch nur das ganze für 1024 Kästchen extra zu schreiben währe ziemlich dumm darum versuche ich das ganze in eine schleife umzusetzen hat aber nicht geklappt den Code hab ich auch grade nicht zur Hand da ich am Handy bin
dragonheart11 is offline  
Old   #4

 
Terreox's Avatar
 
elite*gold: 155
Join Date: Aug 2009
Posts: 628
Received Thanks: 153
Ja dein Lösungsansatz ist auch nicht besonders effizient

Ich versteh allerdings nichts von VB und benutz C# in diesem Beispiel.

Mein Ansatz ist folgender:
Ich hab mir ein Canvas Element auf mein Fenster gepackt und horche einfach auf das MouseLeftButtonDown-Event (MouseLeftButtonUp geht auch, ist hier aber nicht relevant).
Im Eventhandler lese ich dann die momentanen Maus-Koordinaten relativ zum Canvas-Element aus. Somit weiß ich schonmal, wo sich die Maus innerhalb meines Canvas befindet.

Nun muss ich wissen, wie groß ein Block ist. Ich hab jetzt einfach mal deine 10x10 Größe genommen (kann aber auch beliebig variiert werden und kann natürlich auch asymmetrisch sein).

Nun muss berechnet werden, in welchem Block ich mich befinde.
Dazu berechne ich quasi die obere linke Ecke des Blocks.
Das erreiche ich, in dem ich die momentane X-Koordinate durch die Blockbreite und die Y-Koordinate durch die Blockhöhe teile und jeweils beide Ergebnisse abrunde.
Hierbei bitte beachten, dass ich im Prinzip mit Indizes arbeite die bei 0 beginnen (sprich (0,0) -> erster Block in der ersten Zeile, (1,3) -> zweiter Block in der vierten Zeile).

Anschließend muss man nur noch ein Rechteck mit den entsprechenden Blockmaßen erstellen und den linken und oberen Abstand innerhalb des Canvas setzen.
Den linken und oberen Abstand wird errechnet, in dem man die beiden Indizes des Blocks mit Höhe bzw Breite des Blocks multipliziert.
Wenn du z.B. den dritten Block in der fünften Zeile setzen willst, dann hättest du folgende Rechnung (mit anderer Blockgröße zur Verdeutlichung):
Code:
Block Indizes -> (2,4)
Blockbreite -> 10px
Blockhöhe -> 15px

Linker Abstand -> 2*10 = 20px
Oberer Abstand -> 4*15 = 60px
Zum Setzen der Abstände benutzt man dann die Methoden Canvas.SetTop und Canvas.SetLeft.

Der Code sollte eigentlich nicht allzu schwer zu verstehen sein und die Methoden sind glaub ich auch größtenteils identisch in VB, von daher sollte es kein Problem sein den C# Code zu porten.

Im Quellcode sind ein paar Extras, wie z.B. die Anzeige der Koordinaten oder des aktuellen Blocks. Sowas kannst du ignorieren.
Und ja es ist auch kein richtiges MVVM (für alles die wissen was das ist) was ist da fabriziere, aber mir ist dieses Pseudo-MVVM bei dem Beispiel lieber.
(MVVM = Model-View-ViewModel)

Im Anhang ist der Quellcode zu meinem Beispiel wo eventuell die ganze Erklärung hier ein wenig besser verständlich ist
In der .zip findest du auch eine .exe Datei des Programms, aber kannst es dir ja auch selbst nochmal compilen.



Virustotal zur Exe:
Attached Files
File Type: zip XbyYMatrix.zip (15.8 KB, 1 views)
Terreox is offline  
Thanks
1 User
Old   #5
 
dragonheart11's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 567
Received Thanks: 243
Ich werd's mal versuchen danke

EDIT:

Hat geklappt
Screen:

Code:
Code:
Dim xre As Integer
        Dim yre As Integer
        Dim xr As Integer
        Dim yr As Integer
        xre = Val(e.X - 4) / Val(10)
        yre = Val(e.Y - 4) / Val(10)
        xr = Val(xre * 10)
        yr = Val(yre * 10)
Hab das ganze in MouseDown event einer Picbox
bei xr und yr zeichnet man dann sein kästchen(10x10)
dragonheart11 is offline  
Reply


Similar Threads Similar Threads
PID auslesen
12/18/2012 - C/C++ - 5 Replies
guten morgen allerseits, da ich noch n kleiner anfänger bin und mir bei google die buchstaben langsam ausgehen :D dacht ich mir einer von euch kann mir bestimmt weiter helfen..also zu meiner frage... wie bekomm ich zuverlässig die Prozess ID ausgelesen? { cout << "moin" << endl; getchar(); int x = 1; while (x == 1) {
.txt Auslesen
11/04/2012 - .NET Languages - 11 Replies
Hallo Community, ich habe folgendes Problem in VISUAL BASIC ... Wie bekomme ich das hin, das jede Zeile in einer .txt datei einzelnd ausgelesen wird ? z.B. ich habe eine Textbox welche So aufgebaut ist
Mausposition Fixieren per Knopfdruck?
08/29/2012 - AutoIt - 9 Replies
Hey, ich habe vor, einen Bot zu schreiben, der für mich Billard spielt, oder eher, mir dabei hilft. Ich bräuchte einen Code, damit die Mausposition (Der Kreis des Window Tools ist genau die perfekte Größe) ''gespeichert'' wird auf Knopfdruck, damit ich dann in dem Fenster, das geöffnet wird, auf ''Kugel 1'' klicken kann und damit dann die Position gespeichert ist, damit ich noch die Mauspositionen der ''Kugel 2'' und des ''Zielloches'' speichern kann. Ist es möglich, dass ich einen...
Brauche Hilfe, Programm das die Mausposition angibt
07/13/2012 - AutoIt - 2 Replies
Hi, könnte mir jemand Helfen dieses Programm irgendwie richtigzustellen, also ich habe laut programm einen Fehler in Zeile 4. Das Programm war dazu gedacht mir die Mauskoordinaten auszugeben wenn ich auf die Taste "t" drücke, und zwar in einer .txt datei da man daraus ja einfach rauskopieren kann. Am besten wäre es wenn ich auch noch ne erklärung bekommen kann was der Fehler ist. Hier mal der Code: HotKeySet ("{t}", "getmousedata") Func getmousedata () $pos = MouseGetPos()
URL auslesen
11/22/2009 - AutoIt - 8 Replies
salüü hab hier ein kleines scriptchen Sleep(2000) $text=WinGetText("") MsgBox(0,"text",$text) damit kann man die url des aktuellen IE - fensters auslesen. leide kommt noch ganz viel müll mit -.- kann mir einer von euch sagen wie ich das unintressante gequassel los werde?



All times are GMT +2. The time now is 08:45.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.