Uriziel01 Posted February 6, 2008 Posted February 6, 2008 (edited) Hi ! I have some free time thin night and I have wrote something like magnifying glass. It have function of increasing (PAGE_UP) and decreasing (PAGE_DOWN) the level of zoom. have a nice fun p.s-oh yeah! You can also edit the souce code by removing those ";" to get some effects expandcollapse popup;# Zoomix v0.1 by Uriziel01 #include <GUIConstants.au3> #include <Misc.au3> #Include <WinAPI.au3> $gui = GUICreate("Zoomix- x", 100, 100) GUISetBkColor(0xEEEEEE) GUISetState(@SW_SHOW) $z1=4 $z2=120/$z1 $z3=120/$z1 Global $z2,$z3,$pos2,$pos3 Func start() $z2=120/$z1 $z3=120/$z1 for $a=0 to $z3 step 1 for $i=0 to $z2 step 1 GUICtrlCreateLabel("",$i*$z1,$a*$z1,$z1,$z1) Next Next _WinAPI_SetWindowText($gui, "Zoomix- x"&$z1) EndFunc $dll = DllOpen("user32.dll") $ii=0 Start() While 1 $pos = MouseGetPos() if $pos[0] = $pos2 and $pos[1]=$pos3 then else If _IsPressed("21", $dll) and $z1 < 32 Then for $dd=0 to 8000 step 1 GUICtrlDelete($dd) next $z1=$z1*2 start() endif If _IsPressed("22", $dll) and $z1 > 2 Then for $dd=-1 to 10000/$z1 step 1 GUICtrlDelete($dd) next $z1=$z1/2 start() EndIf $pos2=$pos[0] $pos3=$pos[1] for $a=0 to $z3 step 1 for $i=0 to $z2 step 1 $ii=$ii+1 $var = PixelGetColor( $pos[0]+$i , $pos[1]+$a ); Normal zoomix mode ;$var=Random(99909999,99999999); random colors ;$var=Random(1,99999999);all colors ;$var=Random(9999,119999);Blue and Green ;$var=Random(1,9999);most dark blue ; This will make the image lighter #cs $var=Hex($var) $var = StringReplace($var, "E", "F") $var = StringReplace($var, "D", "E") $var = StringReplace($var, "B", "C") $var = StringReplace($var, "A", "B") $var = StringReplace($var, "9", "A") $var = StringReplace($var, "8", "9") $var = StringReplace($var, "7", "8") $var = StringReplace($var, "6", "7") $var = StringReplace($var, "5", "6") $var = StringReplace($var, "4", "6") $var = StringReplace($var, "3", "4") $var = StringReplace($var, "2", "4") $var = StringReplace($var, "1", "3") $var = StringReplace($var, "0", "2") $var=Dec($var) #ce GUICtrlSetBkColor($ii,$var) Next next $ii=0 endif sleep(10) WEndZoomix_v0.1.exe Edited February 6, 2008 by Uriziel01
Achilles Posted February 6, 2008 Posted February 6, 2008 Nice work! It works good... I think there have been a few of others of these that went a little faster, you might want to see what they did different so you can learn from it. My Programs[list][*]Knight Media Player[*]Multiple Desktops[*]Daily Comics[*]Journal[/list]
Uriziel01 Posted February 6, 2008 Author Posted February 6, 2008 Thx. Yeah, slowest part of script is the GUICtrlSetBkColor. is there any faster edition of this func?
Tukata Posted May 15, 2008 Posted May 15, 2008 (edited) I like this tool very much. Thank you Tukata Edited May 15, 2008 by Tukata
Pirosoft Posted July 25, 2008 Posted July 25, 2008 Hi, i have questions to understand your script, please read the comment and help me! expandcollapse popup;# Zoomix v0.1 by Uriziel01 #include <GUIConstants.au3> #include <Misc.au3> #Include <WinAPI.au3> $gui = GUICreate("Zoomix- x", 100, 100) //gui creation GUISetBkColor(0xEEEEEE) //background gui GUISetState(@SW_SHOW) $z1=4 //zoom factor - it's right? $z2=120/$z1 // why 120? 120/4 = 30 $z3=120/$z1 Global $z2,$z3,$pos2,$pos3 Func start() $z2=120/$z1 $z3=120/$z1 for $a=0 to $z3 step 1 for $i=0 to $z2 step 1 GUICtrlCreateLabel("",$i*$z1,$a*$z1,$z1,$z1) // you create 30*30=900 label 4pixel*4pixel it's right? Next Next _WinAPI_SetWindowText($gui, "Zoomix- x"&$z1) EndFunc $dll = DllOpen("user32.dll") $ii=0 Start() While 1 $pos = MouseGetPos();mouse position if $pos[0] = $pos2 and $pos[1]=$pos3 then else If _IsPressed("21", $dll) and $z1 < 32 Then //ip press pageup the zoomfactor = zoomfactor*2 for $dd=0 to 8000 step 1 ; why 8000? i don't understand this number GUICtrlDelete($dd) next $z1=$z1*2 start() endif If _IsPressed("22", $dll) and $z1 > 2 Then for $dd=-1 to 10000/$z1 step 1; why 10000/4? i don't understand this number to! GUICtrlDelete($dd) next $z1=$z1/2 start() EndIf $pos2=$pos[0] $pos3=$pos[1] for $a=0 to $z3 step 1 for $i=0 to $z2 step 1 $ii=$ii+1 $var = PixelGetColor( $pos[0]+$i , $pos[1]+$a ); Normal zoomix mode ;$var=Random(99909999,99999999); random colors ;$var=Random(1,99999999);all colors ;$var=Random(9999,119999);Blue and Green ;$var=Random(1,9999);most dark blue ; This will make the image lighter #cs $var=Hex($var) $var = StringReplace($var, "E", "F") $var = StringReplace($var, "D", "E") $var = StringReplace($var, "B", "C") $var = StringReplace($var, "A", "B") $var = StringReplace($var, "9", "A") $var = StringReplace($var, "8", "9") $var = StringReplace($var, "7", "8") $var = StringReplace($var, "6", "7") $var = StringReplace($var, "5", "6") $var = StringReplace($var, "4", "6") $var = StringReplace($var, "3", "4") $var = StringReplace($var, "2", "4") $var = StringReplace($var, "1", "3") $var = StringReplace($var, "0", "2") $var=Dec($var) #ce GUICtrlSetBkColor($ii,$var) Next next $ii=0 endif sleep(10) WEnd thanks for your help! Francesco
sensalim Posted July 25, 2008 Posted July 25, 2008 It's nice but slow... and I can't close the program.
monoceres Posted July 25, 2008 Posted July 25, 2008 (edited) Here's my version, it's a tiny bit faster... expandcollapse popup#include <GUIConstants.au3> #include <Misc.au3> #Include <WinAPI.au3> #include <GDIPlus.au3> #include <ScreenCapture.au3> HotKeySet("{NUMPADADD}","_ZoomIn") HotKeySet("{NUMPADSUB}","_ZoomOut") Opt("GUIOnEventMode",1) Global $zoomwidth=30, $zoomheight=30 Global $width=200,$height=200 $hwnd=GUICreate("Zoom Zoom",$width,$height) GUISetOnEvent(-3,"close") GUISetState() _GDIPlus_Startup() $graphics=_GDIPlus_GraphicsCreateFromHWND($hwnd) Do $pos=MouseGetPos() $hbitmap=_ScreenCapture_Capture("",$pos[0]-$zoomwidth/2,$pos[1]-$zoomheight/2,$pos[0]+$zoomwidth/2,$pos[1]+$zoomheight/2,False) $bitmap=_GDIPlus_BitmapCreateFromHBITMAP($hbitmap) _GDIPlus_GraphicsDrawImageRectRect($graphics,$bitmap,0,0,$zoomwidth,$zoomheight,0,0,$width,$height) _WinAPI_DeleteObject($hbitmap) _WinAPI_DeleteObject($bitmap) Sleep(25) Until False Func close() _GDIPlus_GraphicsDispose($graphics) _GDIPlus_SHutdown() Exit EndFunc Func _ZoomIn() If $zoomheight<=1 Then Return $zoomheight-=1 $zoomwidth-=1 EndFunc Func _ZoomOut() $zoomheight+=1 $zoomwidth+=1 EndFunc Edited July 25, 2008 by monoceres Broken link? PM me and I'll send you the file!
sensalim Posted July 25, 2008 Posted July 25, 2008 No no no, it's not tiny bit faster - it's MUCH faster... and I can close the program. Thanks to both of you!
ProgAndy Posted July 25, 2008 Posted July 25, 2008 (edited) Or this one Changed Zoomix expandcollapse popup;# Zoomix v0.1 by Uriziel01 and Prog@ndy #include <GUIConstants.au3> #include <WindowsConstants.au3> #include <Misc.au3> #Include <WinAPI.au3> Opt("GUIOnEventMode",1) $SIZE = 120 $gui = GUICreate("Zoomix", $SIZE, $SIZE,-1,-1,BitOR($WS_SYSMENU,$WS_BORDER,$WS_CAPTION),$WS_EX_TOPMOST) GUISetOnEvent(-3,"_EXIT") GUISetBkColor(0xEEEEEE) GUISetState(@SW_SHOW) $z1=4 $zoomp = Int($SIZE / $z1) Global $pos2,$pos3 Func start() _WinAPI_SetWindowText($gui, "Zoomix- x"&$z1) $zoomp = Int($SIZE / $z1) EndFunc $DeskDC = _WinAPI_GetDC(0) $MyDC = _WinAPI_GetDC($gui) _WinAPI_SetBkMode($MyDC,1) ; Transparent Backgrounds smile.gif $Brush = _WinAPI_CreateSolidBrush(0) $s = DllStructCreate($tagRECT) DllStructSetData($s,1,$SIZE/2-1) DllStructSetData($s,2,0) DllStructSetData($s,3,$SIZE/2+1) DllStructSetData($s,4,$SIZE) $ps1 = DllStructGetPtr($s) $dll = DllOpen("user32.dll") $s2 = DllStructCreate($tagRECT) DllStructSetData($s2,1,0) DllStructSetData($s2,2,$SIZE/2-1) DllStructSetData($s2,3,$SIZE) DllStructSetData($s2,4,$SIZE/2+1) $ps2 = DllStructGetPtr($s2) $s3 = DllStructCreate($tagRECT) DllStructSetData($s3,1,1) DllStructSetData($s3,2,0) DllStructSetData($s3,3,50) DllStructSetData($s3,4,50) $ps3 = DllStructGetPtr($s2) $ii=0 Start() While 1 $pos = MouseGetPos() If _IsPressed("21", $dll) and $z1 < 32 Then $z1=$z1*2 start() Do Sleep(10) Until Not _IsPressed("21", $dll) $pos2 = -1 endif If _IsPressed("22", $dll) and $z1 > 2 Then $z1=$z1/2 start() Do Sleep(10) Until Not _IsPressed("22", $dll) $pos2 = -1 EndIf if $pos[0] = $pos2 and $pos[1]=$pos3 then else $pos2=$pos[0] $pos3=$pos[1] _WinAPI_stretchBlt($MyDC,0,0,$SIZE,$SIZE,$DeskDC,$pos2-($zoomp/2),$pos3-($zoomp/2),$zoomp,$zoomp,$SRCCOPY) _WinAPI_FillRect($MyDC,$ps1,$Brush) _WinAPI_FillRect($MyDC,$ps2,$Brush) _WinAPI_DrawText($MyDC,"x" & $z1,$s3,0) If @error Then MsgBox(0, '', @error) endif sleep(10) WEnd Func _EXIT() Exit EndFunc Func OnAutoItExit() _WinAPI_ReleaseDC(0,$DeskDC) _WinAPI_ReleaseDC($gui,$MyDC) _WinAPI_DeleteObject($Brush) EndFunc ;Author(s) : Prog@ndy, after _WinAPI_BitBlt Func _WinAPI_stretchBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iROP) Local $aResult $aResult = DllCall("GDI32.dll", "int", "StretchBlt", "hwnd", $hDestDC, "int", $iXDest, "int", $iYDest, "int", $iWidth, "int", $iHeight, _ "hwnd", $hSrcDC, "int", $iXSrc, "int", $iYSrc,"int",$iWidthSrc,"int",$iHeightSrc, "int", $iROP) If @error Then Return SetError(@error, 0, False) Return $aResult[0] <> 0 EndFunc ;==>_WinAPI_BitBlt ;Author(s) : Prog@ndy, after _WinAPI_SetBKColor Func _WinAPI_SetBkMode($hDC, $imode) Local $aResult $aResult = DllCall("GDI32.dll", "int", "SetBkMode", "hwnd", $hDC, "int", $imode) Return $aResult[0] EndFunc ;==>_WinAPI_SetBkColor Edited July 25, 2008 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes
Pirosoft Posted July 25, 2008 Posted July 25, 2008 ok, it's faster, but is it possible have a image with greater definition like oneloupe?oneloupe screenshot
ProgAndy Posted July 25, 2008 Posted July 25, 2008 Yes But I don't know, how to show the Screen BEHIND the zoomwindow. expandcollapse popup;# Zoomix v0.1 by Uriziel01 and Prog@ndy #include <GUIConstants.au3> #include <WindowsConstants.au3> #include <Misc.au3> #Include <WinAPI.au3> Opt("GUIOnEventMode",1) $SIZEX = 500 ; Width $SIZEY = 300 ; Height ;~ $SIZEX = 100 ; Width ;~ $SIZEY = 100 ; Height $gui = GUICreate("Zoomix", $SIZEX, $SIZEY,-1,-1,BitOR($WS_SYSMENU,$WS_BORDER,$WS_CAPTION),$WS_EX_TOPMOST) GUISetOnEvent(-3,"_EXIT") GUISetBkColor(0xEEEEEE) GUISetState(@SW_SHOW) $z1=4 $zoomX = Int($SIZEX / $z1) $zoomY = Int($SIZEY / $z1) Global $pos2,$pos3 Func start() _WinAPI_SetWindowText($gui, "Zoomix- x"&$z1) $zoomX = Int($SIZEX / $z1) $zoomY = Int($SIZEY / $z1) EndFunc $DeskDC = _WinAPI_GetDC(0) $MyDC = _WinAPI_GetDC($gui) _WinAPI_SetBkMode($MyDC,1) ; Transparent Backgrounds smile.gif $Brush = _WinAPI_CreateSolidBrush(0) $s = DllStructCreate($tagRECT) DllStructSetData($s,1,$SIZEX/2-1) DllStructSetData($s,2,0) DllStructSetData($s,3,$SIZEX/2+1) DllStructSetData($s,4,$SIZEY) $ps1 = DllStructGetPtr($s) $dll = DllOpen("user32.dll") $s2 = DllStructCreate($tagRECT) DllStructSetData($s2,1,0) DllStructSetData($s2,2,$SIZEY/2-1) DllStructSetData($s2,3,$SIZEX) DllStructSetData($s2,4,$SIZEY/2+1) $ps2 = DllStructGetPtr($s2) $s3 = DllStructCreate($tagRECT) DllStructSetData($s3,1,1) DllStructSetData($s3,2,0) DllStructSetData($s3,3,50) DllStructSetData($s3,4,50) $ps3 = DllStructGetPtr($s2) $ii=0 Start() While 1 $pos = MouseGetPos() If _IsPressed("21", $dll) and $z1 < 32 Then $z1=$z1*2 start() Do Sleep(10) Until Not _IsPressed("21", $dll) $pos2 = -1 endif If _IsPressed("22", $dll) and $z1 > 1 Then $z1=$z1/2 start() Do Sleep(10) Until Not _IsPressed("22", $dll) $pos2 = -1 EndIf if $pos[0] = $pos2 and $pos[1]=$pos3 then else $pos2=$pos[0] $pos3=$pos[1] _WinAPI_stretchBlt($MyDC,0,0,$SIZEX,$SIZEY,$DeskDC,$pos2-($zoomX/2),$pos3-($zoomY/2),$zoomX,$zoomY,$SRCCOPY) _WinAPI_FillRect($MyDC,$ps1,$Brush) _WinAPI_FillRect($MyDC,$ps2,$Brush) _WinAPI_DrawText($MyDC,"x" & $z1,$s3,0) If @error Then MsgBox(0, '', @error) endif sleep(10) WEnd Func _EXIT() Exit EndFunc Func OnAutoItExit() _WinAPI_ReleaseDC(0,$DeskDC) _WinAPI_ReleaseDC($gui,$MyDC) _WinAPI_DeleteObject($Brush) EndFunc ;Author(s) : Prog@ndy, after _WinAPI_BitBlt Func _WinAPI_stretchBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iROP) Local $aResult $aResult = DllCall("GDI32.dll", "int", "StretchBlt", "hwnd", $hDestDC, "int", $iXDest, "int", $iYDest, "int", $iWidth, "int", $iHeight, _ "hwnd", $hSrcDC, "int", $iXSrc, "int", $iYSrc,"int",$iWidthSrc,"int",$iHeightSrc, "int", $iROP) If @error Then Return SetError(@error, 0, False) Return $aResult[0] <> 0 EndFunc ;==>_WinAPI_BitBlt ;Author(s) : Prog@ndy, after _WinAPI_SetBKColor Func _WinAPI_SetBkMode($hDC, $imode) Local $aResult $aResult = DllCall("GDI32.dll", "int", "SetBkMode", "hwnd", $hDC, "int", $imode) Return $aResult[0] EndFunc ;==>_WinAPI_SetBkColor *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes
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