![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Ich bin ganz neidisch auf Systeme wie GeoGebra, wo man Linien zeichnen kann, die Enden mit der Maus anfassen und wegziehen. Ganz grün werde ich vor Neid, wenn das auch noch mit Highlighting per Mouseover funktioniert.
Bitte hat jemand Erfahrung mit Profan-Hauptfenstern und Layern? Wie geht man das am besten an?
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
|
#2 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
Ich weiss nicht, was Du mit "Layern" meinst.
Geht Deine Suche vlt. in Richtung http://dl.xprofan.com/?4942 bzw. http://dl.xprofan.com/?701 oder eher http://dl.xprofan.com/?3272 ?
__________________
Programmieren für Anfänger. |
|
|
|
|
|
#3 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Vielen Dank, iF, ist aber alles viel zu Hightech für mich: Ich will eine Trennlinie in ein Hauptfenster zeichnen (eine Art Leselineal), die Enden packen und das Teil verschieben können, ohne daß das Ding auf seinem Weg andere Grafikelemente ruiniert. Da es innerhalb des Textfensters bleiben soll, fällt ein transparentes separates Fenster ohne Kopf und Rand aus.
Dachte daher, das geht mit Ebenen (engl. "Layer"), ähnlich wie im Internet-Browser, siehe Layer-Befehl. Wenn der IE das nämlich kann, dann sind in Windows doch bestimmt Funktionalitäten dazu vorbereitet - Aber denkste, nix gefunden. Photoshop verwendet jedenfalls Layer, AutoCad bis zu 1000 etc. Jedenfalls danke für die Mühe! P.S.: Wenn ich in die Nähe einer Linie komme, und die wird verstärkt dargestellt oder umgefärbt: Läuft da die ganze Zeit eine Schleife, die für die Linie testet, ob zufälig ein Mauscursor in der Nähe ist? Isjanding...
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Eine simple, aber sehr flexible Methode ist sicher, die API DrawFocusRect zu benutzen, wie es das System auch macht.
Habe leider keinen Code parat.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Hab mal einen Anfang gemacht. Du kannst es ja nach deinen Wünschen erweitern.
Soweit ich weiss, kennt Windows aber auch echte markierte Objekte. Code:
' ' © Frank Abbing ' für http://www.paules-pc-forum.de/forum/xprofan/ ' Def DrawFocusRect(2) !"user32","DrawFocusRect" Def GetCursorPos(1) !"user32","GetCursorPos" Def ScreenToClient(2) !"user32","ScreenToClient" Declare x&,y&,rect#,z& Dim rect#,16 Cls UserMessages $200 While 1 WaitInput Case %key=2:Break If IsKey(1) DrawFocusRect(%hdc,rect#) GetCursorPos(rect#) ScreenToClient(%hwnd,rect#) Long rect#,8=Long(rect#,0),Long(rect#,4) Long rect#,0=x&,y& If Long(rect#,0)>Long(rect#,8) z&=Long(rect#,8) Long rect#,8=Long(rect#,0) Long rect#,0=z& EndIf If Long(rect#,4)>Long(rect#,12) z&=Long(rect#,12) Long rect#,12=Long(rect#,4) Long rect#,4=z& EndIf DrawFocusRect(%hdc,rect#) Else GetCursorPos(rect#) ScreenToClient(%hwnd,rect#) x&=Long(rect#,0) y&=Long(rect#,4) Long rect#,0=0,0,0,0 EndIf Endwhile
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Erzeugt was Mondrian-artiges mit statischem Ameisen-Rand.
@Frank: Bitte was bewirkt ScreenToClient(%hwnd,rect#)?
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#7 (Direktlink) | ||
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
Die Usermessage sorgt dafür, dass unser WaitInput bei jeder Mausbewegung unterbrochen wird. Allerdings legt es auch %mousex und %mousey lahm. Darum verwende ich GetCursorPos, was global arbeitet. Das gleiche ich mit ScreenToClient aus. Zitat:
Du kannst zum Zeichnen auch FrameRect() mit einem beliebigen Brush benutzen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (09.09.2009 um 22:11 Uhr) |
||
|
|
|
|
|
#8 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
__________________
Programmieren für Anfänger. |
|
|
|
|
|
#9 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
|
Hängt von ab, ob Du mit Linie ein Control meinst welches (eh) wm_mouseMove empfangen könnte oder eine Zeichnung, bei der man wiederum einfach nur wm_mouseMove vom Parent nutzen könnte um per Mausposition in eine "Bitmaske" zu schauen, ob dort ein Stück Linie liegt. ^^
__________________
Programmieren für Anfänger. |
|
|
|
|
|
#10 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
Ich würde jede Ecke, bzw. Linienkoordinate in einer Tabelle listen. Du vergleichst dann, welche Ecke in der Tabelle dem Mauscursor am nächsten ist. Wenn die dichteste Ecke ermittelt ist, schaust du, ob dir die Distanz nah genug ist.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
|
#11 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Verstehe... sowas wie (x_element-x_mouse)²+(y_element-y_mouse)² <= d²
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Abs(), aber nicht unbedingt zum Quadrat. So mache ich das zumindest immer und es funktioniert gut.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#13 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Ich hatte mit Franks ProSpeed Layertechnik angefangen,- z.B. Bildbereich ausschneiden, einen Sprite erzeugen, Ausschnitt einfügen-, und war mit dem Handling, in diesem Fall nur verschieben, zufrieden. Das Objekt war ja mit "MouseOverSprite (B,A,X,Y)" schnell gefunden.
Gruß Thomas |
|
|
|
|
|
#14 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Danke für den Hinweis. Sollte mich motivieren, nicht nur reines XProfan zu verwenden...
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#15 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Wird sicher auch alles in reinem XProfan gehen > Sprites für OpenGL, usw.< , aber die Finessen aus Franks DLL alle selbst erstellen?
Gruß Thomas |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|