User talk:Demivec: Difference between revisions
Content added Content deleted
No edit summary |
(Blanked the page) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<lang PureBasic> |
|||
; i hope there are no hard feeling... here's some code for you... |
|||
declare.i MakeDesktopScreenshot(ImageNr,x,y,Width,Height) |
|||
Enumeration |
|||
#ButtonMakeScreenShot |
|||
#ButtonMakeNewScreenShot |
|||
#ImageFullScreenShot |
|||
#ImageHalfScreenShot |
|||
#ImageTempScreenShot |
|||
#ImageSelectedArea |
|||
EndEnumeration |
|||
StopSelecting=#TRUE |
|||
style=#PB_Window_SystemMenu |
|||
style|#PB_Window_MinimizeGadget |
|||
style|#PB_Window_Screencentered |
|||
LoadFont(0,"tahoma",9,#PB_Font_HighQuality|#PB_Font_Bold) |
|||
SetGadgetFont(#PB_Default, FontID(0)) |
|||
ExamineDesktops():dtw=DesktopWidth(0):dth=DesktopHeight(0) |
|||
w=dtw/2:h=dth/2 |
|||
MakeDesktopScreenshot(#ImageFullScreenShot,0,0,dtw,dth) |
|||
CopyImage(#ImageFullScreenShot,#ImageHalfScreenShot) |
|||
ResizeImage(#ImageHalfScreenShot,w,h) |
|||
OpenWindow(0,0,0,w,h+20,"",style):StickyWindow(0,1) |
|||
ButtonGadget(#ButtonMakeNewScreenShot,w-200,h,100,20,"New",#PB_Button_Toggle) ;:PureCOLOR_SetButtonColor(#ButtonMakeNewScreenShot,$ffffff,$000000) |
|||
ButtonGadget(#ButtonMakeScreenShot,w-100,h,100,20,"SnipIt",#PB_Button_Toggle) ;:PureCOLOR_SetButtonColor(#ButtonMakeScreenShot,$ffffff,$000000) |
|||
ImageGadget(#ImageHalfScreenShot,0,0,w,h,ImageID(#ImageHalfScreenShot)) |
|||
Repeat |
|||
msg= WaitWindowEvent () ;WindowEvent (): Sleep_ (1) |
|||
wid= EventWindow () |
|||
mid= EventMenu () |
|||
gid= EventGadget () |
|||
etp= EventType () |
|||
ewp= EventwParam () |
|||
elp= EventlParam () : If msg=16 or GetAsyncKeyState_(#VK_ESCAPE) : End : EndIf |
|||
if msg=#WM_LBUTTONUP |
|||
if gid=#ImageHalfScreenShot |
|||
StopSelecting=#TRUE |
|||
endif |
|||
endif |
|||
if gid=#ImageHalfScreenShot |
|||
if etp=#PB_EventType_LeftClick |
|||
x1 =WindowMouseX(0) |
|||
y1 =WindowMouseY(0) |
|||
t1.s="" |
|||
t1.s+str(x1*2 )+"|" |
|||
t1.s+str(y1*2 )+"|" |
|||
SetWindowTitle(0,t1.s) |
|||
StopSelecting=#FALSE |
|||
endif |
|||
endif |
|||
if gid=#ImageHalfScreenShot |
|||
if msg=#WM_MOUSEMOVE and not StopSelecting=#TRUE |
|||
x2 =WindowMouseX(0) |
|||
y2 =WindowMouseY(0) |
|||
sw =abs(x2-x1) |
|||
sh =abs(y2-y1) |
|||
t1.s="" |
|||
t1.s+str(x1*2)+"|" |
|||
t1.s+str(y1*2)+"|" |
|||
t2.s="" |
|||
t2.s+str(sw*2)+"|" |
|||
t2.s+str(sh*2)+"|" |
|||
SetWindowTitle(0,t1.s+t2.s) |
|||
SetGadgetState(#ImageHalfScreenShot,ImageID(#ImageHalfScreenShot)) |
|||
GrabImage(#ImageHalfScreenShot,#ImageTempScreenShot,0,0,w,h) |
|||
StartDrawing(ImageOutput(#ImageTempScreenShot)) |
|||
DrawImage(ImageID(#ImageTempScreenShot), 0, 0) |
|||
DrawingMode(#PB_2DDrawing_XOr | #PB_2DDrawing_Outlined) |
|||
Box(x1,y1,sw,sh, $FFFFFF) |
|||
StopDrawing() |
|||
SetGadgetState(#ImageHalfScreenShot,ImageID(#ImageTempScreenShot)) |
|||
endif |
|||
endif |
|||
Select msg |
|||
case #PB_Event_Gadget |
|||
Select gid |
|||
case #ButtonMakeNewScreenShot |
|||
hidewindow(0,1) |
|||
sleep_(1000) |
|||
MakeDesktopScreenshot(#ImageFullScreenShot,0,0,dtw,dth) |
|||
CopyImage(#ImageFullScreenShot,#ImageHalfScreenShot) |
|||
ResizeImage(#ImageHalfScreenShot,w,h) |
|||
SetGadgetState(#ImageHalfScreenShot,ImageID(#ImageHalfScreenShot)) |
|||
hidewindow(0,0) |
|||
case #ButtonMakeScreenShot : |
|||
Select GetGadgetState(#ButtonMakeScreenShot) |
|||
case 0 |
|||
SetGadgetState(#ImageHalfScreenShot,ImageID(#ImageHalfScreenShot)) |
|||
case 1 |
|||
t.s=GetWindowTitle(0) |
|||
t3.s=" - " |
|||
t3.s+str(x1*2)+"|" |
|||
t3.s+str(y1*2)+"|" |
|||
t3.s+str(sw*2)+"|" |
|||
t3.s+str(sh*2)+"|" |
|||
SetWindowTitle(0,t1.s+t2.s+t3.s) |
|||
GrabImage(#ImageFullScreenShot, #ImageSelectedArea, x1*2-2,y1*2-2,sw*2,sh*2) |
|||
SetClipboardImage(#ImageSelectedArea) |
|||
SetGadgetState(#ImageHalfScreenShot,ImageID(#ImageSelectedArea)) |
|||
EndSelect |
|||
EndSelect |
|||
EndSelect |
|||
ForEver |
|||
End |
|||
Procedure.i MakeDesktopScreenshot(ImageNr,x,y,Width,Height) |
|||
hImage = CreateImage(ImageNr,Width,Height) |
|||
hDC = StartDrawing(ImageOutput(ImageNr)) |
|||
DeskDC = GetDC_(GetDesktopWindow_()) |
|||
BitBlt_(hDC,0,0,Width,Height,DeskDC,x,y,#SRCCOPY) |
|||
StopDrawing() |
|||
ReleaseDC_(GetDesktopWindow_(),DeskDC) |
|||
ProcedureReturn hImage |
|||
EndProcedure |
|||
</lang> |