faustf Posted November 18, 2012 Share Posted November 18, 2012 hi guy i have a scripted i wanna draw line point A to point B . for indicate point A use dx mouse button, after sign point B ,and after the script draw a line but dont draw correctly While 1 Select Case _IsPressed(02) And $c_td=0 $pos = MouseGetPos() $b = GUICtrlCreateGraphic(($pos[0]-50), ($pos[1]-30), 81, 20) GuiCtrlSetState(-1,$GUI_ONTOP) GUICtrlSetBkColor(-1, 0xff00) $Label2 = GUICtrlCreateLabel($tag_scritta, ($pos[0]-50), ($pos[1]-30), 81, 20) GUICtrlSetBkColor(-1, 0x00FF00) MsgBox(4160+48,"info","Inserisci punto di arrivo") $c_td=$c_td+1 MsgBox(0,'',$pos[0]&' '&$pos[1]) Case _IsPressed(02) And $c_td<>0 $pos1 = MouseGetPos() $z = GUICtrlCreateGraphic(($pos1[0]-5), ($pos1[1]-20), 7, 7) ; GUICtrlSetGraphic(-1, $GUI_GR_LINE, ($pos[0]-50), ($pos[0]-5)) GuiCtrlSetState(-1,$GUI_ONTOP) GUICtrlSetBkColor(-1, 0xff00) ; $j = GUICtrlCreateGraphic(-1, $GUI_GR_LINE,($pos[0]), ($pos[1]), ($pos[1])) ; GUICtrlSetGraphic(-1, $GUI_GR_LINE, ($pos[0]-50), ($pos[0]-5)) _GDIPlus_Startup() $hGraphic=_GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawLine ($hGraphic, ($pos[0]-50), ($pos[1]-30), ($pos1[0]-5), ($pos1[1]-20)) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() MsgBox(0,'',$pos[0]&' '&$pos[1]) $c_td=0 ExitLoop EndSelect WEnd Link to comment Share on other sites More sharing options...
rudi Posted November 22, 2012 Share Posted November 22, 2012 Hi. The point you missed is the fact, that "MouseGetPos()" will return "Screen related coords", but what you need is "window related coords". Move your window to the upper left corner of your screen, you'll see, what I mean. still buggy script, but at least it's executable: expandcollapse popup#include <GUIConstantsEx.au3> #Include <GDIPlus.au3> #Include <Misc.au3> $c_td = 0 $tag_scritta="some text" $w=500 $h=500 $hGUI=GUICreate("hGUI",$w,$h) GUISetState() While 1 Select Case _IsPressed(02) And $c_td = 0 $posA = MouseGetPos() $b = GUICtrlCreateGraphic(($posA[0] - 50), ($posA[1] - 30), 81, 20) GUICtrlSetState(-1, $GUI_ONTOP) GUICtrlSetBkColor(-1, 0xff00) $Label2 = GUICtrlCreateLabel($tag_scritta, 30, 30, 100, 100) ; $Label2 = GUICtrlCreateLabel($tag_scritta, ($posA[0] - 50), ($posA[1] - 30), 81, 20) GUICtrlSetBkColor(-1, 0x00FF00) MsgBox(0, "first click",$posA[0] & " - " & $posA[1],5) $c_td = 1 Case _IsPressed(02) And $c_td <> 0 $posB = MouseGetPos() $z = GUICtrlCreateGraphic(($posB[0] - 5), ($posB[1] - 20), 7, 7) GUICtrlSetState(-1, $GUI_ONTOP) GUICtrlSetBkColor(-1, 0xff00) _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsDrawLine($hGraphic, ($posA[0] - 50), ($posA[1] - 30), ($posB[0] - 5), ($posB[1] - 20)) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() MsgBox(0, '', $posA[0] & ' ' & $posA[1],5) $c_td = 0 EndSelect WEnd Regards, Rudi. Earth is flat, pigs can fly, and Nuclear Power is SAFE! Link to comment Share on other sites More sharing options...
faustf Posted November 23, 2012 Author Share Posted November 23, 2012 i try this script but dont trace black line Link to comment Share on other sites More sharing options...
faustf Posted November 24, 2012 Author Share Posted November 24, 2012 and how can i find a correct coordinate ?? Link to comment Share on other sites More sharing options...
Malkey Posted November 24, 2012 Share Posted November 24, 2012 (edited) and how can i find a correct coordinate ?? By setting "Opt("MouseCoordMode", 2)" which returns the mouse coordinates relative to the client area of the active window. expandcollapse popup#include <GDIPlus.au3> #include <Misc.au3> Opt("MouseCoordMode", 2) ;1=absolute, 0=relative, 2=client Local $posA, $posB, $b, $z Local $w = 500 Local $h = 500 Local $hGUI = GUICreate("hGUI ()", $w, $h) GUICtrlCreateLabel("Drag mouse while right mouse button held down." & @CRLF & _ "Drag mouse while right mouse button and Alt key are held down.", 10, 10, 400, 60) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = -3 Exit Case _IsPressed('02') And _IsPressed('12') ; Press right mouse button + Alt key $posA = MouseGetPos() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xff0000ff) While _IsPressed('02') $posB = MouseGetPos() _GDIPlus_GraphicsDrawLine($hGraphic, ($posA[0]), ($posA[1]), ($posB[0]), ($posB[1]), $hPen) WEnd _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() Case _IsPressed('02') $posA = MouseGetPos() While _IsPressed('02') WEnd $posB = MouseGetPos() _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hPen = _GDIPlus_PenCreate(0xffff0000, 3) _GDIPlus_GraphicsDrawLine($hGraphic, ($posA[0]), ($posA[1]), ($posB[0]), ($posB[1]), $hPen) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() EndSelect WEnd Edit: Added all below. Ability to save graphics. An example save:- expandcollapse popup#include <GDIPlus.au3> #include <Misc.au3> Opt("MouseCoordMode", 2) ;1=absolute, 0=relative, 2=client Local $posA, $posB, $b, $z Local $w = 500 Local $h = 500 Local $hGUI = GUICreate("hGUI", $w, $h) GUICtrlCreateLabel("Drag mouse while right mouse button held down;" & @CRLF & _ "Drag mouse while right mouse button and Alt key are held down; or, " & @CRLF & _ "Press Ctrl + C to copy graphics to a file.", 10, 10, 400, 60) _GDIPlus_Startup() Local $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hGUI) Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($w, $h, $hGraphicGUI) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBitmap) _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = -3 _WinAPI_DeleteObject($hBitmap) _GDIPlus_GraphicsDispose($hGraphicGUI) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() Exit Case _IsPressed('02') And _IsPressed('12') ; Press right mouse button + Alt key $posA = MouseGetPos() $hPen = _GDIPlus_PenCreate(0xff0000ff) While _IsPressed('02') $posB = MouseGetPos() _GDIPlus_GraphicsDrawLine($hGraphic, ($posA[0]), ($posA[1]), ($posB[0]), ($posB[1]), $hPen) _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBitmap, 0, 0) WEnd _GDIPlus_PenDispose($hPen) Case _IsPressed('02') $posA = MouseGetPos() While _IsPressed('02') WEnd $posB = MouseGetPos() $hPen = _GDIPlus_PenCreate(0xffff0000, 3) _GDIPlus_GraphicsDrawLine($hGraphic, ($posA[0]), ($posA[1]), ($posB[0]), ($posB[1]), $hPen) _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBitmap, 0, 0) _GDIPlus_PenDispose($hPen) Case _IsPressed('11') And _IsPressed('43') ; Press Ctrl + C keys to save graphics to "TestGdi.bmp" file While _IsPressed('11') And _IsPressed('43'); While loop is to prevent multiple key presses. WEnd _GDIPlus_ImageSaveToFile($hBitmap, "TestGdi.bmp") ShellExecute("TestGdi.bmp") EndSelect WEnd Edited November 25, 2012 by Malkey Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now