JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Tracer un rectangle sur tout l'écran Sam 22 Oct 2022 - 17:46 | |
| Je ne sais pas si ça n'a pas déjà été fait... Affichage d'une boîte de dialogue pour fixer la position, les dimensions, l'épaisseur et la couleur du tracé, paramètres ajustables à volonté. - Code:
-
' Tracé d'un rectangle sur tout l'écran LABEL Fin,Tracer,Couleur,Capture DIM f1,x,y,w,h,e,r,g,b,i BORDER_SMALL 0: CAPTION 0,"TRACÉ D'UN RECTANGLE SUR TOUT L'ÉCRAN" TOP 0,SCREEN_Y/2: LEFT 0,SCREEN_X/2: COLOR 0,200,255,255 WIDTH 0,300: HEIGHT 0,90: ON_CLOSE 0,Fin FONT_SIZE 0,10 ALPHA 1: TOP 1,3: CAPTION 1,"X= Y= W= H=" SPIN 2: LEFT 2,20: WIDTH 2,50 SPIN 3: LEFT 3,LEFT(2)+WIDTH(2)+20: WIDTH 3,WIDTH(2) SPIN 4: LEFT 4,LEFT(3)+WIDTH(3)+20: WIDTH 4,WIDTH(3) SPIN 5: LEFT 5,LEFT(4)+WIDTH(4)+20: WIDTH 5,WIDTH(4) FOR i = 2 TO 5: POSITION i,100: NEXT i ALPHA 10: TOP 10,30: CAPTION 10,"ép." SPIN 11: TOP 11,TOP(10)-3: LEFT 11,20: WIDTH 11,40 MIN 11,1: MAX 11,20: POSITION 11,1 ALPHA 12: TOP 12,TOP(10): LEFT 12,LEFT(11)+42: CAPTION 12,"Co." i = 12 PICTURE 14: TOP 14,TOP(11): LEFT 14,LEFT(12)+20: WIDTH 14,15: HEIGHT 14,2*i r = 255: g = 0: b = 0: COLOR 14,r,g,b PICTURE 15: TOP 15,TOP(14): LEFT 15,LEFT(14)+20: WIDTH 15,4*i: HEIGHT 15,2*i 2D_TARGET_IS 15: 2D_FILL_COLOR r,g,b: 2D_RECTANGLE 0,0,i,i ON_CLICK 15,Couleur 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE i,0,2*i,i 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 2*i,0,3*i,i 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 3*i,0,4*i,i 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE 0,i,i,2*i 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE i,i,2*i,2*i 2D_FILL_COLOR 255,0,255: 2D_RECTANGLE 2*i,i,3*i,2*i 2D_FILL_COLOR 0,255,255: 2D_RECTANGLE 3*i,i,4*i,2*i BUTTON 20: TOP 20,TOP(15): LEFT 20,LEFT(15)+WIDTH(15)+5: WIDTH 20,43 CAPTION 20,"Tracer": ON_CLICK 20,Tracer BUTTON 21: TOP 21,TOP(20): LEFT 21,LEFT(20)+WIDTH(20)+2: WIDTH 21,38 CAPTION 21,"Copie": ON_CLICK 21,Capture BUTTON 22: TOP 22,TOP(20): LEFT 22,LEFT(21)+WIDTH(21)+2: WIDTH 22,43 CAPTION 22,"Quitter": ON_CLICK 22,Fin f1 = 200: ' 1er Form de manoeuvre END ' ============================================================================= Fin: IF OBJECT_EXISTS(f1) > 0 THEN DELETE f1: DELETE f1+1: DELETE f1+2: DELETE f1+3 TERMINATE ' ============================================================================= Tracer: x = POSITION(2): y = POSITION(3): w = POSITION(4): h = POSITION(5) e = POSITION(11) IF OBJECT_EXISTS(f1) > 0 THEN DELETE f1: DELETE f1+1: DELETE f1+2: DELETE f1+3 Rect_Form(f1,x,y,w,h,e,r*65536+g*256+b) RETURN ' ============================================================================= Couleur: x = MOUSE_X_LEFT_DOWN(15): y = MOUSE_Y_LEFT_DOWN(15) r = COLOR_PIXEL_RED(15,x,y): g = COLOR_PIXEL_GREEN(15,x,y) b = COLOR_PIXEL_BLUE(15,x,y): COLOR 14,r,g,b RETURN ' ============================================================================= Capture: ' capture de la zone interne de la découpe -> clipboard DLL_ON "user32" i = DLL_CALL4("keybd_event",44,0,0,0): ' sauvegarde de tout l'écran->clip DLL_OFF PICTURE 45: HIDE 45: WIDTH 45,SCREEN_X: HEIGHT 45,SCREEN_Y CLIPBOARD_PASTE 45: 2D_TARGET_IS 45 IMAGE 46: 2D_IMAGE_COPY 46,x,y,x+w,y+h: ' découpe de la zone CLIPBOARD_COPY 46 2D_TARGET_IS 0: DELETE 45: DELETE 46 RETURN ' ============================================================================= SUB Rect_Form(f1,x,y,w,h,e,rgb) ' Tracé d'un rectangle en x,y sur tout l'écran. dimensions intérieur wxh pixels ' (création de 4 FORMs f1 à f1+3) ' épaisseur trait e pixels, couleur rgb = R*65536+G*256+B ' NB: l'intérieur fait w x h pixels quelle que soit l'épaisseur du trait DIM_LOCAL f,r,g,b r = INT(rgb/65536): g = BIN_AND(rgb,65280)/256: b = BIN_AND(rgb,255) ' Successivement côtés haut, bas, gauche et droit FORM f1: COLOR f1,r,g,b BORDER_HIDE f1: TOP f1,y-e: LEFT f1,x-e: WIDTH f1,w+2*e: HEIGHT f1,e f=f1+1: FORM f: COLOR f,r,g,b BORDER_HIDE f: TOP f,y+h: LEFT f,x-e: WIDTH f,w+2*e: HEIGHT f,e f=f1+2: FORM f: COLOR f,r,g,b BORDER_HIDE f: TOP f,y-e: LEFT f,x-e: WIDTH f,e: HEIGHT f,h+2*e f=f1+3: FORM f: COLOR f,r,g,b BORDER_HIDE f: TOP f,y-e: LEFT f,x+w: WIDTH f,e: HEIGHT f,h+2*e END_SUB ' =============================================================================
Dernière édition par JL35 le Dim 23 Oct 2022 - 19:56, édité 2 fois | |
|