Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2011
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 8.07 KB | None | 0 0
  1. #include <GDIPlus.au3>
  2. #include <GDIPlusConstants.au3>
  3. #include <Misc.au3>
  4.  
  5. HotKeySet("{F4}", "copy")
  6. Opt("GUIOnEventMode", 1)
  7. Opt("MouseCoordMode", 2)
  8.  
  9. Global $MainGUI[10], $CodeGUI[10], $CtrlGUI[10], $Code[10]
  10. Global $GDIPForm = "", $Direction[2]
  11. Global $Line[100][4], $Elli[100][4], $Rect[100][4]
  12.  
  13. $w = InputBox("GDI+ Coda", "Wie breit soll die GUI werden?", "300")
  14. $h = InputBox("GDI+ Coda", "Wie hoch soll die GUI werden?", "300")
  15.  
  16. $MainGUI[0] = GUICreate("GDI+ Coda Zeichenfenster", $w, $h, -1, 150)
  17. GUISetOnEvent(-3, "_Exit")
  18. GUISetCursor(16)
  19. GUISetState()
  20.  
  21. _GDIPlus_Startup()
  22. $MainGUI[1] = _GDIPlus_GraphicsCreateFromHWND($MainGUI[0])
  23. $MainGUI[2] = _GDIPlus_BitmapCreateFromGraphics($w, $h, $MainGUI[1])
  24. $MainGUI[3] = _GDIPlus_ImageGetGraphicsContext($MainGUI[2])
  25.  
  26. $CtrlGUI[0] = GUICreate("GDI+ Coda Toolbar", 290-5, 125, 5, 0, 0, 0x00000080, $MainGUI[0])
  27. $CtrlGUI[1] = GUICtrlCreateButton("None", 10, 10, 50, 50)
  28. GUICtrlSetOnEvent(-1, "_ChangeForm")
  29. $CtrlGUI[2] = GUICtrlCreateButton("Linie", 70, 10, 50, 50)
  30. GUICtrlSetOnEvent(-1, "_ChangeForm")
  31. $CtrlGUI[3] = GUICtrlCreateButton("Ellipse", 130, 10, 50, 50)
  32. GUICtrlSetOnEvent(-1, "_ChangeForm")
  33. $CtrlGUI[4] = GUICtrlCreateButton("Recht.", 190, 10, 50, 50)
  34. GUICtrlSetOnEvent(-1, "_ChangeForm")
  35. GUISetState()
  36.  
  37. $CodeGUI[0] = GUICreate("GDI+ Coda CodeOutput - Drücke F4 zum Kopieren des Codes in die Zwischenablage", @DesktopWidth-290-5-5-5, 120, 295, 0, 0x00040000, 0x00000080, $MainGUI[0])
  38. $CodeGUI[1] = GUICtrlCreateEdit($Code[0], 0, 0, @DesktopWidth-290-5-5-5-2, 120)
  39. GUICtrlSetFont(-1, 9.5, 400, 0, "Courier New")
  40. GUICtrlSetResizing(-1, 102)
  41. GUISetState()
  42.  
  43. While 1
  44.     Sleep(10)
  45.     _Update()
  46.     If WinActive($MainGUI[0]) And $GDIPForm And _IsPressed(01) Then _NewForm()
  47. WEnd
  48.  
  49. Func copy()
  50.     ClipPut(guictrlread($CodeGUI[1]))
  51. EndFunc
  52.  
  53. Func _Update()
  54.     Local $MousePos = MouseGetPos()
  55.     _GDIPlus_GraphicsClear($MainGUI[3], 0xFFFFFFFF)
  56.     If WinActive($MainGUI[0]) Then
  57.         _GDIPlus_GraphicsDrawLine($MainGUI[3], $MousePos[0] - 3, $MousePos[1], $MousePos[0] + 3, $MousePos[1])
  58.         _GDIPlus_GraphicsDrawLine($MainGUI[3], $MousePos[0], $MousePos[1] - 3, $MousePos[0], $MousePos[1] + 3)
  59.     EndIf
  60.  
  61.     If Not $Line[0][0] = 0 Then
  62.         For $i = 1 To $Line[0][0]
  63.             _GDIPlus_GraphicsDrawLine($MainGUI[3], $Line[$i][0], $Line[$i][1], $Line[$i][2], $Line[$i][3])
  64.         Next
  65.     EndIf
  66.  
  67.     If Not $Elli[0][0] = 0 Then
  68.         For $i = 1 To $Elli[0][0]
  69.             _GDIPlus_GraphicsDrawEllipse($MainGUI[3], $Elli[$i][0], $Elli[$i][1], $Elli[$i][2] - $Elli[$i][0], $Elli[$i][3] - $Elli[$i][1])
  70.         Next
  71.     EndIf
  72.  
  73.     If Not $Rect[0][0] = 0 Then
  74.         For $i = 1 To $Rect[0][0]
  75.             _GDIPlus_GraphicsDrawRect($MainGUI[3], $Rect[$i][0], $Rect[$i][1], $Rect[$i][2] - $Rect[$i][0], $Rect[$i][3] - $Rect[$i][1])
  76.         Next
  77.     EndIf
  78.     _GDIPlus_GraphicsDrawImageRect($MainGUI[1], $MainGUI[2], 0, 0, $w, $h)
  79. EndFunc   ;==>_Update
  80.  
  81. Func _Exit()
  82.     _GDIPlus_GraphicsDispose($MainGUI[3])
  83.     _GDIPlus_BitmapDispose($MainGUI[2])
  84.     _GDIPlus_GraphicsDispose($MainGUI[1])
  85.     _GDIPlus_Shutdown()
  86.     GUIDelete($MainGUI[0])
  87.     Exit
  88. EndFunc   ;==>_Exit
  89.  
  90. Func _NewForm()
  91.     Local $MousePos = MouseGetPos()
  92.     If $GDIPForm = 1 Then
  93.         $Line[0][0] += 1
  94.         $Line[$Line[0][0]][0] = $MousePos[0]
  95.         $Line[$Line[0][0]][1] = $MousePos[1]
  96.         While _IsPressed(01)
  97.             $MousePos = MouseGetPos()
  98.             $Line[$Line[0][0]][2] = $MousePos[0]
  99.             $Line[$Line[0][0]][3] = $MousePos[1]
  100.             _Update()
  101.             Sleep(10)
  102.         WEnd
  103.         If $Line[$Line[0][0]][0] = $Line[$Line[0][0]][2] And $Line[$Line[0][0]][1] = $Line[$Line[0][0]][3] Then $Line[0][0] -= 1
  104.     ElseIf $GDIPForm = 2 Then
  105.         $Elli[0][0] += 1
  106.         $Elli[$Elli[0][0]][0] = $MousePos[0]
  107.         $Elli[$Elli[0][0]][1] = $MousePos[1]
  108.         While _IsPressed(01)
  109.             $MousePos = MouseGetPos()
  110.             $Elli[$Elli[0][0]][2] = $MousePos[0]
  111.             $Elli[$Elli[0][0]][3] = $MousePos[1]
  112.             _Update()
  113.             Sleep(10)
  114.         WEnd
  115.         If $Elli[$Elli[0][0]][0] = $Elli[$Elli[0][0]][2] And $Elli[$Elli[0][0]][1] = $Elli[$Elli[0][0]][3] Then $Elli[0][0] -= 1
  116.         $Direction[0] = 0
  117.         $Direction[1] = 0
  118.     ElseIf $GDIPForm = 3 Then
  119.         $Rect[0][0] += 1
  120.         $Rect[$Rect[0][0]][0] = $MousePos[0]
  121.         $Rect[$Rect[0][0]][1] = $MousePos[1]
  122.         While _IsPressed(01)
  123.             $MousePos = MouseGetPos()
  124.             If $Rect[$Rect[0][0]][0] > $MousePos[0] Or $Direction[0] = 1 Then
  125.                 If Not $Direction[0] Then
  126.                     $Rect[$Rect[0][0]][2] = $Rect[$Rect[0][0]][0]
  127.                     $Rect[$Rect[0][0]][0] = $MousePos[0]
  128.                     $Direction[0] = 1
  129.                 ElseIf $Rect[$Rect[0][0]][0] < $MousePos[0] Then
  130.                     $Rect[$Rect[0][0]][0] = $Rect[$Rect[0][0]][2]
  131.                     $Rect[$Rect[0][0]][2] = $MousePos[0]
  132.                     $Direction[0] = 0
  133.                 Else
  134.                     $Rect[$Rect[0][0]][0] = $MousePos[0]
  135.                 EndIf
  136.             Else
  137.                 $Rect[$Rect[0][0]][2] = $MousePos[0]
  138.             EndIf
  139.             If $Rect[$Rect[0][0]][1] > $MousePos[1] Or $Direction[1] = 1 Then
  140.                 If Not $Direction[1] Then
  141.                     $Rect[$Rect[0][0]][3] = $Rect[$Rect[0][0]][1]
  142.                     $Rect[$Rect[0][0]][1] = $MousePos[1]
  143.                     $Direction[1] = 1
  144.                 ElseIf $Rect[$Rect[0][0]][1] < $MousePos[1] Then
  145.                     $Rect[$Rect[0][0]][1] = $Rect[$Rect[0][0]][3]
  146.                     $Rect[$Rect[0][0]][3] = $MousePos[1]
  147.                     $Direction[1] = 0
  148.                 Else
  149.                     $Rect[$Rect[0][0]][1] = $MousePos[1]
  150.                 EndIf
  151.             Else
  152.                 $Rect[$Rect[0][0]][3] = $MousePos[1]
  153.             EndIf
  154.             _Update()
  155.             Sleep(10)
  156.         WEnd
  157.         If $Rect[$Rect[0][0]][0] = $Rect[$Rect[0][0]][2] And $Rect[$Rect[0][0]][1] = $Rect[$Rect[0][0]][3] Then $Rect[0][0] -= 1
  158.         $Direction[0] = 0
  159.         $Direction[1] = 0
  160.     EndIf
  161.  
  162.     _UpdateCode()
  163. EndFunc   ;==>_NewForm
  164.  
  165. Func _ChangeForm()
  166.     If @GUI_CtrlId = $CtrlGUI[1] Then $GDIPForm = 0
  167.     If @GUI_CtrlId = $CtrlGUI[2] Then $GDIPForm = 1
  168.     If @GUI_CtrlId = $CtrlGUI[3] Then $GDIPForm = 2
  169.     If @GUI_CtrlId = $CtrlGUI[4] Then $GDIPForm = 3
  170. EndFunc   ;==>_ChangeForm
  171.  
  172. Func _UpdateCode()
  173.     $Code[0] = ";Created by GDI+ Coda" & @CRLF & _
  174.             "#include <GDIPlus.au3>" & @CRLF & _
  175.             "#include <GDIPlusConstants.au3>" & @CRLF & _
  176.             @CRLF & _
  177.             'Opt("GUIOnEventMode", 1)' & @CRLF & _
  178.             @CRLF & _
  179.             "Global $hWnd, $hGraphic, $hBitmap, $backbuffer" & @CRLF & _
  180.             'Global $title = "GDICoda Form", _' & @CRLF & _
  181.             "      $width = 300, _ " & @CRLF & _
  182.             "      $height = 300" & @CRLF & _
  183.             @CRLF & _
  184.             "_Startup()" & @CRLF & _
  185.             @CRLF
  186.  
  187.     $Code[1] = "While 1" & @CRLF & _
  188.             "   Sleep(100)" & @CRLF & _
  189.             "   _Update()" & @CRLF & _
  190.             "WEnd" & @CRLF & _
  191.             @CRLF
  192.  
  193.     $Code[2] = "Func _Startup()" & @CRLF & _
  194.             "   $hWnd = GUICreate($title, $width, $height, -1, -1)" & @CRLF & _
  195.             '   GUISetOnEvent(-3, "_Shutdown")' & @CRLF & _
  196.             "   GUISetState()" & @CRLF & _
  197.             @CRLF & _
  198.             "   _GDIPlus_Startup()" & @CRLF & _
  199.             "   $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)" & @CRLF & _
  200.             "   $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)" & @CRLF & _
  201.             "   $backbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)" & @CRLF & _
  202.             "EndFunc" & @CRLF & _
  203.             @CRLF
  204.  
  205.     $Code[3] = "Func _Shutdown()" & @CRLF & _
  206.             "   _GDIPlus_GraphicsDispose($backbuffer)" & @CRLF & _
  207.             "   _GDIPlus_BitmapDispose($hBitmap)" & @CRLF & _
  208.             "   _GDIPlus_GraphicsDispose($hGraphic)" & @CRLF & _
  209.             "   _GDIPlus_Shutdown()" & @CRLF & _
  210.             "   GUIDelete($hWnd)" & @CRLF & _
  211.             "   Exit" & @CRLF & _
  212.             "EndFunc" & @CRLF & _
  213.             @CRLF
  214.  
  215.     $Code[4] = "Func _Update()" & @CRLF & _
  216.             "   _GDIPlus_GraphicsClear($backbuffer, 0xFFFFFFFF)" & @CRLF
  217.     For $i = 1 To $Line[0][0]
  218.         $Code[4] &= @TAB & "_GDIPlus_GraphicsDrawLine($backbuffer, " & $Line[$i][0] & ", " & $Line[$i][1] & ", " & $Line[$i][2] & ", " & $Line[$i][3] & ")" & @CRLF
  219.     Next
  220.     For $i = 1 To $Elli[0][0]
  221.         $Code[4] &= @TAB & "_GDIPlus_GraphicsDrawEllipse($backbuffer, " & $Elli[$i][0] & ", " & $Elli[$i][1] & ", " & $Elli[$i][2] - $Elli[$i][0] & ", " & $Elli[$i][3] - $Elli[$i][1] & ")" & @CRLF
  222.     Next
  223.     For $i = 1 To $Rect[0][0]
  224.         $Code[4] &= @TAB & "_GDIPlus_GraphicsDrawRect($backbuffer, " & $Rect[$i][0] & ", " & $Rect[$i][1] & ", " & $Rect[$i][2] - $Rect[$i][0] & ", " & $Rect[$i][3] - $Rect[$i][1] & ")" & @CRLF
  225.     Next
  226.     $Code[4] &= "   _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $width, $height)" & @CRLF & _
  227.             "EndFunc" & @CRLF
  228.  
  229.     GUICtrlSetData($CodeGUI[1], $Code[0] & $Code[1] & $Code[2] & $Code[3] & $Code[4] & $Code[5] & $Code[6] & $Code[7] & $Code[8] & $Code[9])
  230. EndFunc   ;==>_UpdateCode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement