Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Découpe dans une image | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Découpe dans une image Mer 21 Fév 2018 - 23:45 | |
| Pour découper une forme dans une image (photo), isoler une partie dans une forme géométrique, par exemple un visage (une image de fond qui ne tient pas dans l'écran sera automatiquement redimensionnée). La zone définie est encadrée d'un trait d'épaisseur et de couleur réglables, et le reste de l'image (l'extérieur de l'encadrement) est peint en blanc uniforme. Les figures d'encadrement prévues sont: un triangle équilatéral, un rectangle (ou carré), une ellipse (ou cercle), une étoile à 5 branches. On définit: - la forme de la découpe - la couleur et l'épaisseur du tracé de contour - les dimensions, largeur et hauteur de l'enveloppe extérieure de la figure (largeur seule = diamètre pour le triangle et l'étoile). Puis on clique dans l'image à l'emplacement du centre de la figure (qui est symétrique); On a un droit à l'erreur (bouton 'Annuler') pour faire une autre tentative. On peut enregistrer le résultat que l'on pourra ensuite découper et redimensionner dans un logiciel classique. J'ai utilisé KGF.dll pour sa fonction de remplissage d'une figure (Sub Remplir). - Code:
-
' Découpage d'une zone à contour géométrique dans une image LABEL Chfig,Chc,Figures,Imgfn,Scrol,Des1,Rempl,Rempl1,Deplac,Annul,Enr,Enr1,Aide DIM bh%,bv%,het%,p%,i%,j%,k%,x1%,y1%,x2%,y2%,r%,g%,b%,cb%,cr%,res%,fig%,t DIM wt%,wc%,wn%,hn%,wi%,hi%,f$,fs$,a$,ri%,rx%,ry%,xc%,yc%,xr%,yr%,nbr%,x%(100),y%(100) DIM rc$,subac%,wp%,hp%,sh%,sv%,ims%,xp%,yp%,es% fs$ = "Z:\Convbmp.bmp" BORDER_SMALL 0: bh% = WIDTH(0)-WIDTH_CLIENT(0): bv% = HEIGHT(0)-HEIGHT_CLIENT(0) wc% = 640: ' largeur container WIDTH 0,wc%+bh%: HEIGHT 0,650: COLOR 0,64,255,255: FONT_BOLD 0: FONT_NAME 0,"Arial"
het% = 100: ' hauteur de l'en-tête (containeer) CONTAINER 1: WIDTH 1,wc%: HEIGHT 1,het% ALPHA 2: PARENT 2,1: TOP 2,3: CAPTION 2," Image de fond : ": COLOR 2,255,255,0 EDIT 3: PARENT 3,1: TOP 3,TOP(2)+16: WIDTH 3,260: ON_CLICK 3,Imgfn OPEN_DIALOG 4: FILTER 4,"Image JPG,BMP|*.jpg;*.bmp" ALPHA 5: PARENT 5,1: TOP 5,TOP(3)+25: LEFT 5,5: CAPTION 5," Figure de découpe : " COLOR 5,255,255,0 i% = 40: j% = 36: k% = i%/2 PICTURE 10: PARENT 10,1: TOP 10,TOP(5)+15: LEFT 10,5: WIDTH 10,i%: HEIGHT 10,j% PICTURE 11: PARENT 11,1: TOP 11,TOP(10): LEFT 11,LEFT(10)+i%+5: WIDTH 11,i%: HEIGHT 11,j% PICTURE 12: PARENT 12,1: TOP 12,TOP(10): LEFT 12,LEFT(11)+i%+5: WIDTH 12,i%: HEIGHT 12,j% PICTURE 13: PARENT 13,1: TOP 13,TOP(10): LEFT 13,LEFT(12)+i%+5: WIDTH 13,i%: HEIGHT 13,j% FOR k% = 10 TO 13: ON_CLICK k%,Chfig: NEXT k% EDIT 14: PARENT 14,1: TOP 14,TOP(13)-16: LEFT 14,LEFT(13): WIDTH 14,20: HEIGHT 14,15 FONT_SIZE 14,8: TEXT 14,"5": nbr% = 5: ' étoile à 5 branches ALPHA 15: PARENT 15,1: TOP 15,TOP(14)+2: LEFT 15,LEFT(14)+21: COLOR 15,255,255,0: CAPTION 15,"br. " fig% = 3: GOSUB Figures
CONTAINER 20: PARENT 20,1: TOP 20,0: LEFT 20,WIDTH(3)+10: WIDTH 20,146: HEIGHT 20,het%-4 CAPTION 20,"TRACÉ :": COLOR 20,180,255,255 ALPHA 21: PARENT 21,20: TOP 21,15: LEFT 21,2: CAPTION 21,"Couleur:" PICTURE 22: PARENT 22,20: TOP 22,TOP(21)+15: LEFT 22,6: WIDTH 22,40: HEIGHT 22,22 COLOR 22,255,0,0 PICTURE 23: PARENT 23,20: TOP 23,TOP(21)-2: LEFT 23,54: WIDTH 23,90: HEIGHT 23,40 ON_CLICK 23,Chc ALPHA 24: PARENT 24,20: TOP 24,TOP(22)+26: LEFT 24,5: CAPTION 24,"Épaisseur trait:" SPIN 25: PARENT 25,20: TOP 25,TOP(24)-2: LEFT 25,LEFT(24)+90: WIDTH 25,50 MIN 25,1: MAX 25,20: POSITION 25,1 BUTTON 26: PARENT 26,20: TOP 26,HEIGHT(20)-23: LEFT 26,8: HEIGHT 26,22: CAPTION 26,"Tracer": ON_CLICK 26,Des1 i% = 23: j% = WIDTH(i%)/3: k% = HEIGHT(i%)/2: 2D_TARGET_IS i% 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,j%,k%: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE j%,0,2*j%,k% 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 2*j%,0,3*j%,k%: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 0,k%,j%,2*k% 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE j%,k%,2*j%,2*k%: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 2*j%,k%,3*j%,2*k% PICTURE 27: PARENT 27,20: TOP 27,TOP(26)+6: LEFT 27,LEFT(26)+77: WIDTH 27,14: HEIGHT 27,14 COLOR 27,255,0,0
CONTAINER 40: PARENT 40,1: TOP 40,0: LEFT 40,LEFT(20)+WIDTH(20)+2: WIDTH 40,75 HEIGHT 40,HEIGHT(20): COLOR 40,180,255,255: CAPTION 40,"DÉPLACER:" BUTTON 41: PARENT 41,40: TOP 41,15: LEFT 41,8: WIDTH 41,30: HEIGHT 41,18: CAPTION 41,CHR$(217) BUTTON 42: PARENT 42,40: TOP 42,TOP(41): LEFT 42,LEFT(41)+WIDTH(41)+2: WIDTH 42,WIDTH(41) HEIGHT 42,HEIGHT(41): CAPTION 42,CHR$(218) BUTTON 43: PARENT 43,40: TOP 43,TOP(41)+HEIGHT(41): LEFT 43,8: WIDTH 43,WIDTH(41): HEIGHT 43,HEIGHT(41) CAPTION 43,CHR$(219) BUTTON 44: PARENT 44,40: TOP 44,TOP(43): LEFT 44,LEFT(42): WIDTH 44,WIDTH(41): HEIGHT 44,HEIGHT(41) CAPTION 44,CHR$(220) BUTTON 45: PARENT 45,40: TOP 45,TOP(43)+HEIGHT(41): LEFT 45,8: WIDTH 45,WIDTH(41): HEIGHT 45,HEIGHT(41) CAPTION 45,CHR$(222) BUTTON 46: PARENT 46,40: TOP 46,TOP(45): LEFT 46,LEFT(42): WIDTH 46,WIDTH(41): HEIGHT 46,HEIGHT(41) CAPTION 46,CHR$(223) FOR i% = 41 TO 46 FONT_NAME i%,"Wingdings 3": FONT_SIZE i%,10: ON_CLICK i%,Deplac NEXT i% SPIN 48: PARENT 48,40: TOP 48,TOP(46)+HEIGHT(46): WIDTH 48,48: LEFT 48,5: POSITION 48,5 FONT_SIZE 48,10 ALPHA 49: PARENT 49,40: TOP 49,TOP(48)+3: LEFT 49,LEFT(48)+WIDTH(48): CAPTION 49,"pix."
CONTAINER 30: PARENT 30,1: TOP 30,0: LEFT 30,LEFT(40)+WIDTH(40)+2: WIDTH 30,WIDTH(20) HEIGHT 30,HEIGHT(20): COLOR 30,180,255,255 CAPTION 30,"REMPLISSAGE :" ALPHA 31: PARENT 31,30: TOP 31,15: LEFT 31,2: CAPTION 31,"Couleur:" PICTURE 32: PARENT 32,30: TOP 32,TOP(31)+15: LEFT 32,6: WIDTH 32,40: HEIGHT 32,22 PICTURE 33: PARENT 33,30: TOP 33,TOP(31)-2: LEFT 33,54: WIDTH 33,90: HEIGHT 33,40 ON_CLICK 33,Chc i% = 33: j% = WIDTH(i%)/3: k% = HEIGHT(i%)/2: 2D_TARGET_IS i% 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,j%,k%: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE j%,0,2*j%,k% 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 2*j%,0,3*j%,k%: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 0,k%,j%,2*k% 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE j%,k%,2*j%,2*k%: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 2*j%,k%,3*j%,2*k% BUTTON 36: PARENT 36,30: TOP 36,HEIGHT(30)-23: LEFT 36,8: HEIGHT 36,22: CAPTION 36,"Remplir": ON_CLICK 36,Rempl
BUTTON 38: PARENT 38,30: TOP 38,HEIGHT(30)-36: WIDTH 38,20: LEFT 38,WIDTH(30)-22: HEIGHT 38,35: CAPTION 38,"?" FONT_SIZE 38,10: ON_CLICK 38,Aide
BUTTON 50: PARENT 50,1: TOP 50,TOP(3)+26: LEFT 50,WIDTH(3)-75: CAPTION 50,"Annuler": ON_CLICK 50,Annul BUTTON 51: PARENT 51,1: TOP 51,TOP(50)+28: LEFT 51,LEFT(50): CAPTION 51,"Enregistrer": ON_CLICK 51,Enr SAVE_DIALOG 52: FILTER 52,"Fichier BMP|*.bmp"
FORM 53: BORDER_HIDE 53: HIDE 53: TOP 53,TOP(1)+TOP(51)+50: LEFT 53,LEFT(1)+LEFT(51) WIDTH 53,160: HEIGHT 53,80 : COLOR 53,255,255,0: FONT_BOLD 53: FONT_NAME 53,"Arial" CONTAINER_OPTION 54: PARENT 54,53: FULL_SPACE 54 OPTION 55: PARENT 55,54: TOP 55,10: LEFT 55,5: WIDTH 55,150 CAPTION 55,"Enregistrer la découpe" OPTION 56: PARENT 56,54: TOP 56,TOP(55)+18: LEFT 56,LEFT(55): CAPTION 56,"Enregistrer tout" BUTTON 57: PARENT 57,53: TOP 57,HEIGHT(53)-30: LEFT 57,30: WIDTH 57,100: CAPTION 57,"Enregistrer" ON_CLICK 57,Enr1
p% = 60: wp% = 640: hp% = 480 PICTURE p%: TOP p%,het%: WIDTH p%,wp%: HEIGHT p%,hp%: 2D_TARGET_IS p% sh%=p%+1: SCROLL_BAR sh%: TOP sh%,TOP(p%)+hp%: LEFT sh%,LEFT(p%): WIDTH sh%,wp% ON_CHANGE sh%,Scrol sv%=sh%+1: SCROLL_BAR sv%: VERTICAL sv%: TOP sv%,TOP(p%): LEFT sv%,LEFT(p%)+wp%: HEIGHT sv%,hp% ON_CHANGE sv%,Scrol HIDE sh%: HIDE sv% ims%=sv%+1: IMAGE ims% IMAGE 99 END ' ============================================================================== Chfig: ' Choix du type de découpe k% = NUMBER_CLICK: fig% = k%-8: ' type de figure cliqué (2 à 5) GOSUB Figures RETURN ' ============================================================================== Chc: k% = NUMBER_CLICK i% = MOUSE_X_LEFT_DOWN(k%): j% = MOUSE_Y_LEFT_DOWN(k%) r%=COLOR_PIXEL_RED(k%,i%,j%): g%=COLOR_PIXEL_GREEN(k%,i%,j%): b%=COLOR_PIXEL_BLUE(k%,i%,j%) COLOR k%-1,r%,g%,b% RETURN ' ============================================================================== Figures: i% = 40: j% = 36 FOR k% = 10 TO 13 2D_TARGET_IS k%: CLS: COLOR k%,255,255,180 2D_PEN_WIDTH 2: 2D_PEN_COLOR 0,0,0 2D_FILL_OFF SELECT k% CASE 10: 2D_POLY_FROM 6,29: 2D_POLY_TO i%/2,7: 2D_POLY_TO 35,29: 2D_POLY_TO 6,29 CASE 11: 2D_RECTANGLE 6,8,35,30 CASE 12: Ellipse(6,8,28,20) CASE 13: Etoile(i%/2,j%/2,5,(j%-6)/2,-1) END_SELECT NEXT k% 2D_TARGET_IS fig%+8: 2D_FILL_OFF: 2D_PEN_WIDTH 3: 2D_PEN_COLOR 255,0,0 2D_RECTANGLE 1,1,i%-1,j%-1 RETURN ' ============================================================================== Imgfn: ' Choix de l'image de fond f$ = FILE_NAME$(4): a$ = UPPER$(FILE_EXTRACT_EXTENSION$(f$)) IF a$ <> ".BMP" AND a$ <> ".JPG" MESSAGE "Uniquement BMP ou JPG !": RETURN END_IF TEXT 3,f$ IF a$ = ".JPG" FILE_LOAD p%,f$: FILE_SAVE p%,fs$: f$ = fs$ END_IF FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 wp% = wi%: hp% = hi%: es% = 17 IF hp% > (SCREEN_Y-bv%-het%-30) hp% = SCREEN_Y-bv%-het%-30-es%: ' scroll_bar verticale SHOW sv%: MIN sv%,0: MAX sv%,hi%-hp%: POSITION sv%,0 END_IF HEIGHT 0,hp%+het%+es%+bv% IF wp% > (SCREEN_X-bh%) wp% = SCREEN_X-bh%-17: ' scroll_bar horizontale SHOW sh%: MIN sh%,0: MAX sh%,wi%-wp%: POSITION sh%,0 END_IF WIDTH 0,wp%+bh%+es%: IF WIDTH(0)<(wc%+bh%) THEN WIDTH 0,wc%+bh% WIDTH p%,wp%: HEIGHT p%,hp% IF HIDE(sh%) = 0 THEN TOP sh%,TOP(p%)+hp%: LEFT sh%,LEFT(p%): WIDTH sh%,wp% IF HIDE(sv%) = 0 THEN TOP sv%,TOP(p%): LEFT sv%,LEFT(p%)+wp%: HEIGHT sv%,hp% FILE_LOAD p%,f$ CAPTION 2," Image de fond = "+STR$(wi%)+" x "+STR$(hi%)+" pixels " FILE_SAVE p%,fs$: ' sauvegarde de l'image de fond ' ============================================ Scrol: ' Déplacement des curseurs xp% = 0: yp% = 0 IF HIDE(sh%) = 0 THEN xp% = POSITION(sh%): ' horizontal IF HIDE(sv%) = 0 THEN yp% = POSITION(sv%): ' vertical 2D_TARGET_IS p%: FILE_LOAD ims%,f$: 2D_IMAGE_PASTE ims%,0-xp%,0-yp% RETURN ' ============================================================================== Des1: IF subac% = 1 THEN RETURN 2D_TARGET_IS p% 2D_IMAGE_COPY 99,0,0,WIDTH(p%),HEIGHT(p%): ' sauvegarde préalable wt% = POSITION(25): 2D_PEN_WIDTH wt%: ' largeur tracé r%=COLOR_PIXEL_RED(22,5,5): g%=COLOR_PIXEL_GREEN(22,5,5): b%=COLOR_PIXEL_BLUE(22,5,5) 2D_PEN_COLOR r%,g%,b%: ' couleur tracé nbr% = VAL(TEXT$(14)): IF nbr%<2 THEN nbr%=2: TEXT 14,STR$(nbr%) COLOR 27,0,255,0: ' feu rouge Tracer(p%,fig%) COLOR 27,255,0,0: ' feu vert RETURN ' ============================================================================== Rempl: ON_CLICK p%,Rempl1 RETURN Rempl1: r%=COLOR_PIXEL_RED(22,5,5): g%=COLOR_PIXEL_GREEN(22,5,5): b%=COLOR_PIXEL_BLUE(22,5,5) cb% = 65536*b%+256*g%+r%: ' couleur de trait (bordure) r%=COLOR_PIXEL_RED(32,5,5): g%=COLOR_PIXEL_GREEN(32,5,5): b%=COLOR_PIXEL_BLUE(32,5,5) cr% = 65536*b%+256*g%+r%: ' couleur de remplissage xr% = MOUSE_X_POSITION(p%): yr% = MOUSE_Y_POSITION(p%) 2D_IMAGE_COPY 99,0,0,WIDTH(p%),HEIGHT(p%): ' image -> presse-papier DLL_ON "C:\PANORAMIC\KGF\KGF.dll" CLIPBOARD_COPY p% IF cr% = -1 THEN cr% = 65536*255+256*255+255: ' blanc res% = DLL_CALL0("LoadPicture"): ' image presse-papier -> image interne res% = DLL_CALL4("FloodfillPictureToBorderColor",xr%,yr%,cr%,cb%) res% = DLL_CALL0("SavePicture"): ' image interne -> presse-papier CLIPBOARD_PASTE p% DLL_OFF OFF_CLICK p% RETURN ' ============================================================================== Deplac: i% = NUMBER_CLICK j% = POSITION(48) SELECT i% CASE 41: x1% = x1%-j%: x2% = x2%-j%: ' gauche CASE 42: x1% = x1%+j%: x2% = x2%+j%: ' droite CASE 43: y2% = y2%-j%: y1% = y1%-j%: ' haut CASE 44: y1% = y1%+j%: y2% = y2%+j%: ' bas CASE 45: y1% = y1%-j%: x2% = x2%+j%: ' agrandir CASE 46: y1% = y1%+j%: x2% = x2%-j%: ' réduire END_SELECT 2D_IMAGE_PASTE 99,0,0: ' restore image initiale rx%=(x2%-x1%)/2: ry%=(y2%-y1%)/2: xc%=x1%+rx%: yc%=y1%+ry% SELECT fig% CASE 1: 2D_LINE x1%,y1%,x2%,y2%: ' Trait CASE 2: 2D_POLY_FROM x1%,y2%: 2D_POLY_TO xc%,y1%: ' Triangle 2D_POLY_TO x2%,y2%: 2D_POLY_TO x1%,y2% CASE 3: 2D_RECTANGLE x1%,y1%,x2%,y2%: ' Rectangle CASE 4: 2D_POLY_FROM xc%+rx%,yc%: ' Ellipse FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t CASE 5: ' nbr% = 5: ' étoile à 5 branches (défini plus haut) ri% = rx%/2.62: ' branches supérieures horizontales t = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rx%*COS(t): y%(i%) = yc%-rx%*SIN(t) t = t+2*(PI/nbr%) NEXT i% t = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+ri%*COS(t): y%(i%) = yc%-ri%*SIN(t) t = t+2*PI/nbr% NEXT i% 2D_POLY_FROM x%(0),y%(0) FOR i% = 1 TO nbr%*2-1: 2D_POLY_TO x%(i%),y%(i%): NEXT i% 2D_POLY_TO x%(0),y%(0) END_SELECT RETURN ' ============================================================================== Annul: 2D_IMAGE_PASTE 99,0,0: ' restore RETURN ' ============================================================================== Enr: SHOW 53: TO_FOREGROUND 53 MARK_ON 55 RETURN Enr1: ' Enregistrer le résultat a$ = FILE_NAME$(52) 2D_TARGET_IS p% IF CHECKED(55) = 1: ' enregistrer la découpe j% = wt%/2 2D_IMAGE_COPY 99,x1%-j%,y1%-j%,x2%+j%,y2%+j% FILE_SAVE 99,a$ ELSE: ' enregistrer toute l'image FILE_SAVE p%,a$ END_IF HIDE 53 RETURN ' ============================================================================== Aide: rc$ = CHR$(13)+CHR$(10) a$ = " - DÉCOUPE DANS UNE IMAGE -"+rc$+rc$ a$=a$+"Encadrement d'une partie d'image (par exemple un visage) avec une figure"+rc$ a$=a$+"géométrique, et remplissage en blanc de toute la zone extérieure à cette figure."+rc$+rc$ a$=a$+"1) Choisir une image de fond jpg ou bmp (clic)"+rc$ a$=a$+" Si l'image ne tient pas dans l'écran, il y aura apparition de boutons de"++rc$ a$=a$+" boutons de défilement pour la parcourir."+rc$ a$=a$+"2) Choisir une figure d'encadrement (triangle, rectangle, ellipse, étoile)."+rc$ a$=a$+" On peut fixer le nombre de branches de l'étoile (au-dessus du symbole)."+rc$ a$=a$+"3) Choisir la couleur du tracé, et l'épaisseur du trait de contour."+rc$ a$=a$+"4) Cliquer le bouton 'Tracer' -> le petit voyant à droite passe au vert (sinon,"+rc$ a$=a$+" recliquer)."+rc$ a$=a$+"5) Cliquer dans l'image le coin supérieur gauche de la découpe, puis sans"+rc$ a$=a$+" relâcher, déplacer la souris vers le coin inférieur droit, puis relâcher."+rc$ a$=a$+" -> la zone sélectionnée est entourée par la figure choisie."+rc$ a$=a$+"- On peut déplacer la sélection dans les 4 directions d'un nombre de pixels choisi"+rc$ a$=a$+" (boutons flèches horizontales et verticales) ou l'agrandir ou la réduire (boutons"+rc$ a$=a$+" flèches obliques)."+rc$ a$=a$+"6) Remplissage: couleur uniforme (en général blanc) sur la totalité de l'image"+rc$ a$=a$+" autour de la découpe (ou à l'intérieur, selon ce qu'on veut en faire)"+rc$ a$=a$+" Choisir la couleur de remplissage, cliquer le bouton 'Remplir', puis cliquer"+rc$ a$=a$+" dans l'image un point de la zone à remplir."+rc$+rc$ a$=a$+"- On peut annuler (bouton 'Annuler') et recommencer la dernière opération"+rc$ a$=a$+" (tracé ou remplissage) autant de fois que nécessaire."+rc$+rc$ a$=a$+"Une fois le résultat désiré obtenu, on peut enregistrer l'image résultante au"+rc$ a$=a$+"format bmp (bouton 'Enregistrer')."+rc$ a$=a$+"On a le choix d'enregistrer soit la totalité de l'image (qui sera aux dimensions"+rc$ a$=a$+"de l'image affichée), soit uniquement la découpe."+rc$ a$=a$+"On peut imaginer d'insérer cette découpe par exemple dans des cartes de voeux,"+rc$ a$=a$+"anniversaires, etc."+rc$ MESSAGE a$ RETURN ' ============================================================================== SUB Tracer(p%,fig%) ' Tracer une figure fig% à la souris sur le picture p% ' Figure vide, tracée avec les paramètres actuels: largeur trait, couleur ' Résultat dans x1%,y1%,x2%,y2% ' Figures: 1= Trait, 2= Rectangle, 3= Cercle/Ellipse, 4= Étoile à nbr% branches subac% = 1 DIM_LOCAL im%,xs%,ys%,xc%,yc%,rx%,ry%,t,i%,j%,x%(100),y%(100),ri% im% = 900: IMAGE im% WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE x1% = MOUSE_X_POSITION(p%): y1% = MOUSE_Y_POSITION(p%) 2D_TARGET_IS p%: 2D_FILL_OFF 2D_IMAGE_COPY im%,0,0,WIDTH(p%),HEIGHT(p%) WHILE MOUSE_LEFT_UP(p%) = 0 x2% = MOUSE_X_POSITION(p%): y2% = MOUSE_Y_POSITION(p%) IF x2%<>xs% OR y2%<>ys% xs%=x2%: ys%=y2% 2D_IMAGE_PASTE im%,0,0 rx%=(x2%-x1%)/2: ry%=(y2%-y1%)/2: xc%=x1%+rx%: yc%=y1%+ry% SELECT fig% CASE 1: 2D_LINE x1%,y1%,x2%,y2%: ' Trait CASE 2: 2D_POLY_FROM x1%,y2%: 2D_POLY_TO xc%,y1%: ' Triangle 2D_POLY_TO x2%,y2%: 2D_POLY_TO x1%,y2% CASE 3: 2D_RECTANGLE x1%,y1%,x2%,y2%: ' Rectangle CASE 4: 2D_POLY_FROM xc%+rx%,yc%: ' Ellipse FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t CASE 5: ' nbr% = 5: ' étoile à 5 branches (défini dans l'appelant) ri% = rx%/2.62: ' branches supérieures horizontales t = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rx%*COS(t): y%(i%) = yc%-rx%*SIN(t) t = t+2*(PI/nbr%) NEXT i% t = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+ri%*COS(t): y%(i%) = yc%-ri%*SIN(t) t = t+2*PI/nbr% NEXT i% 2D_POLY_FROM x%(0),y%(0) FOR i% = 1 TO nbr%*2-1: 2D_POLY_TO x%(i%),y%(i%): NEXT i% 2D_POLY_TO x%(0),y%(0) END_SELECT END_IF PAUSE 100 END_WHILE DELETE im% IF fig% = 5: ' étoile, màj de x1,y1,x2,y2 sur l'enveloppe j% = 10000: FOR i% = 0 TO 2*nbr%-1: IF x%(i%)<j% THEN j% = x%(i%) NEXT i%: x1% = j% j% = 0: FOR i% = 0 TO 2*nbr%-1: IF x%(i%)>j% THEN j% = x%(i%) NEXT i%: x2% = j% j% = 10000: FOR i% = 0 TO 2*nbr%-1: IF y%(i%)<j% THEN j% = y%(i%) NEXT i%: y1% = j% j% = 0: FOR i% = 0 TO 2*nbr%-1: IF y%(i%)>j% THEN j% = y%(i%) NEXT i%: y2% = j% END_IF subac% = 0 END_SUB ' ============================================================================== SUB Ellipse(x%,y%,w%,h%) ' Tracé d'une ellipse vide en x%,y% de la cible 2d, inscrite dans w%,h% ' Bordure de la couleur courante et de l'épaisseur (1 à 20) courante DIM_LOCAL rx%,ry%,xc%,yc%,t rx% = w%/2: ry% = h%/2: xc% = x%+rx%: yc% = y%+ry% 2D_POLY_FROM xc%+rx%,yc% FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t END_SUB ' ============================================================================== SUB Etoile(xc%,yc%,nbr%,rext%,rint%) ' Dessin d'une étoile à nbr% branches, centrée en xc%,yc% sur le 2d_Target ' Rayon enveloppe rext%, rayon intérieur rint% (estimé si rint%=0) ' couleur et épaisseur trait courants DIM_LOCAL x%(100),y%(100),i%,an IF rint% <= 0 THEN rint% = rext%/2.62: ' branches supérieures horizontale an = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rext%*COS(an) y%(i%) = yc%-rext%*SIN(an) an = an + 2*(PI/nbr%) NEXT i% an = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+rint%*COS(an) y%(i%) = yc%-rint%*SIN(an) an = an + 2*PI/nbr% NEXT i% 2D_LINE x%(0),y%(0),x%(0),y%(0) FOR i% = 1 TO nbr%*2-1 2D_POLY_TO x%(i%),y%(i%) NEXT i% 2D_POLY_TO x%(0),y%(0) END_SUB ' ============================================================================== Edit 22/02 ajout de règles graduées et d'un mode d'emploi Edit 23/02 suppression de l'entrée des dimensions de la découpe, le dessin se fait en temps réel ReEdit: j'ai ajouté 6 boutons pour déplacer et redimensionner la sélection 1/3 ajout du défilement dans l'image de fond
Dernière édition par JL35 le Jeu 1 Mar 2018 - 17:11, édité 6 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Découpe dans une image Mer 21 Fév 2018 - 23:50 | |
| Très intéressant ! C'est un bel outil, et extensible ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mer 21 Fév 2018 - 23:56 | |
| Il reste une case de figure libre, au cas où ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Jeu 22 Fév 2018 - 23:03 | |
| J'ai ajouté des règles graduées en pixels, horizontale et verticale, pour faciliter le repérage, et un mode d'emploi (bouton '?'). Plus quelques bricoles d'ordre esthétique.
On peut obtenir des effets assez inattendus avec la forme étoile, en variant le paramètre diamètre intérieur (creux des branches de l'étoile). | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 15:45 | |
| Bonjour à tous, Bonjour JL35 , Bravo pour ce super programme! Il y a longtemps, j'avais fait ce petit programme pour une mise au point dans un programme perso plus conséquent. Il faut cliquer sur le form, puis maintenir le clic, et en bougeant la souris un triangle apparait plus ou moins grand suivant la distance avec le point cliqué en premier. Alors avec les flèches hautes et basses, on augmente ou on diminue le nombre de coté de la figure. Ainsi on peut avoir, un losange, un pentagone, un hexagone, heptagone, octogone, etc... Ensuite, toujours en maintenant le clic de la souris, avec les flèches gauche ou droite, on peut faire pivoter la figure. Quand on relâche le bouton de la souris, la figure devient définitive. A toi de voir si tu peux t'en servir pour l'intégrer à ton programme. - Code:
-
label trace dim xd,yd,xf,yf,xv,yv,ad,bd,d,pi,qd,qf,nc,i pi=4*atn(1) image 2 timer 100:timer_interval 100,1:on_timer 100,trace end
trace: timer_off 100 polyg() timer_on 100 return
sub polyg() if scancode=1 qd=0:qf=pi*2:nc=3 while mouse_left_up(0)=0 xf=mouse_x_position(0):yf=mouse_y_position(0) select scancode case 37 qd=qd-(pi/180):' if qd<0 then qd=0 qf=qd+(pi*2) case 39 qd=qd+(pi/180):qf=qd+(pi*2) case 38 nc=nc+1:if nc>24 then nc=24 case 40 nc=nc-1:if nc<3 then nc=3 end_select if xf<>xv or yf<>yv or scancode<>0 d=sqr(power(xf-xd,2)+power(yd-yf,2)):ad=int(d*100)/100:bd=int(d*100)/100:2d_image_paste 2,0,0 2d_poly_from xd+(d*cos(qd)),yd+(d*sin(qd)) for i=qd to qf+(qf-qd)/nc step (qf-qd)/nc if (xd+d)<(screen_x-104) 2d_poly_to xd+(d*cos(i)),yd+(d*sin(i)) xf=xf+(d*cos(i)):yf=yf+(d*sin(i)) else end_if next i xv=xf:yv=yf:wait 100 end_if end_while else 2d_image_copy 2,0,0,width(0),height(0) xd=mouse_x_position(0):yd=mouse_y_position(0) end_if end_sub
PS: je crois qu'il faut enlever pi dans les déclaration de variables. À + | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 17:27 | |
| Bonjour bignono, et merci pour ton retour. J'ai déjà fait pas mal de modifs dans mon petit programme, que je ne comptais pas trop publier, ce n'est pas d'un intérêt puissant (j'ai par exemple ajouté la sélection de la zone à la souris, c'est plus pratique que de donner les dimensions).
Mais je vais regarder avec intérêt ton bout de code qui a l'air prometteur, et en tout cas succinct ! PS je confirme, à première vue c'est très intéressant, merci à toi bignono ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 18:32 | |
| Bravo à vous deux, J'ai testé celui de JL35 hier, et c'est vrai que dimensionner par SPIN ce n'est pas trop pratique. Mais on peut toujours adapter à son goût. Je viens de tester celui de Bignono qui est intéressant, il y a surement moyen de fusionner les deux. Une remarque: le code est ancien donc il faut supprimer la variable pi qui est devenue une variable système. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 20:28 | |
| J'ai supprimé la contrainte d'entrée des dimensions de la découpe (pour toi Jean Claude), et j'ai fait comme dans l'exemple de bignono, dessin de la découpe en temps réel, ajustable à la souris.
Je n'ai pas très bien maîtrisé la gestion de la souris (les LEFT_UP et LEFT_DOWN) en voulant me passer d'un Timer, si on ne fait pas les opérations dans l'ordre (indiqué dans l'Aide) on peut avoir un dessin intempestif. Ce n'est pas trop grave, on fait 'Annuler' et on recommence.
Il faut donc dans l'ordre: - choisir la figure d'encadrement, sa couleur et son épaisseur de trait - cliquer le bouton 'Sélection' - clique dans l'image le point de départ, déplacer sans relâcher jusqu'au point opposé, puis relâcher.
Je pourrais coder assez facilement la suite: à l'aide de boutons flèches déplacer la figure dans les 4 directions, l'agrandir ou la réduire, pour la positionner exactement. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 20:38 | |
| Tu travailles pour moi, , je suis flatté. Et j'aime Je vais tester ça demain JL35. Ce soir je dois lâcher le clavier... A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Ven 23 Fév 2018 - 22:00 | |
| Quel culot ! Esclavagiste ! Bachi-bouzouk ! Moule à gaufres ! Ectoplasme ! bon, j'arrête... Bon, j'ai ajouté 6 petits boutons flèches en haut à droite, pour, une fois la sélection faite, la déplacer dans les quatre directions, ou l'agrandir ou la réduire (flèches obliques), d'un nombre de pixels choisi; Avec ça on doit pouvoir faire à peu près tout ce qu'on veut, on sélectionne rapidos, et on peaufine avec les flèches. Juste une petite modif ce jour 24: la fonction enregistrer n'enregistre que la zone découpée de l'image (et non la totalité comme avant). | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Découpe dans une image Sam 24 Fév 2018 - 18:15 | |
| Mon cher capitaine, je vous saurai gré de surveiller votre langage ! Sérieusement, j'ai testé ce matin ta nouvelle mouture. C'est plus pratique ! Et ça marche bien. Si j'ai un peu de temps demain, ce qui n'est pas certain, j’essaierai de coupler tes boutons avec les flèches du clavier. Çà doit être faisable mille sabords ! A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Sam 24 Fév 2018 - 19:41 | |
| - Citation :
- Mon cher capitaine, je vous saurai gré de surveiller votre langage !
tiens, Tintin ! Pour les flèches du clavier, ça doit être faisable, mais bon... ça vaut vraiment le coup ? pour les directions, oui, mais pour les flèches 'agrandir' et 'réduire' ? Sinon pour le programme, il faut respecter scrupuleusement l'ordre 1) bouton 'Sélection' 2) clic dans l'image Sinon c'est un peu le bazar que je n'arrive pas trop à éviter. Pour la figure étoile, on aurait pu imaginer un nombre variable de branches (la sub Etoile le permet), mais c'est pareil, il me semble que ça ne vaut pas le coup. Et ça complique le menu. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Découpe dans une image Sam 24 Fév 2018 - 20:06 | |
| - Citation :
- Pour les flèches du clavier, ça doit être faisable, mais bon... ça vaut vraiment le coup ? pour les directions, oui, mais pour les flèches 'agrandir' et 'réduire' ?
C'est juste pour le plaisir de programmer. Si ça ne vaut pas le coup, au moins ça agace mes neurones J’essaierai tôt ou tard, juste pour le plaisir... A+ PS: "Moule à gaufres ! " quand même ! Tu y vas fort, je ne suis pas une machine.... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Sam 24 Fév 2018 - 20:32 | |
| Mille sabords ! ça a dépassé ma pensée... Quant à la programmation pour le plaisir, te gêne pas, c'est fait pour ça ! (et tant que ça n'agace pas mes neurones à moi...) Du coup je m'aperçois que mon texte en haut de la fenêtre du programme est faux: 'Type de découpe (centrée au clip)'c'était avant, maintenant on dessine le rectangle de sélection à la souris... va falloir que je corrige... Tiens j'ai fait un bouton graphique pour 'Sélection': mais je ne l'ai pas répercuté là-haut, c'est juste un gadget. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Lun 26 Fév 2018 - 18:11 | |
| J'ai réécrit le programme sous une forme un peu différente, peut-être un peu plus abordable, avec quelques choix supplémentaires (choix du nombre de branches de l'étoile, couleur de remplissage à choisir et non plus forcément blanc, sauvegarde au choix de la découpe ou de toute l'image...) je le mets ici à tout hasard. - Code:
-
LABEL Chfig,Chc,Figures,Imgf,Des1,Rempl,Rempl1,Deplac,Annul,Enr,Enr1,Aide DIM bh%,bv%,het%,p%,i%,j%,k%,x1%,y1%,x2%,y2%,r%,g%,b%,cb%,cr%,res%,fig%,t DIM wt%,wc%,wn%,hn%,wi%,hi%,f$,a$,rx%,ry%,xc%,yc%,xr%,yr%,nbr%,rc$,subac% BORDER_SMALL 0: bh% = WIDTH(0)-WIDTH_CLIENT(0): bv% = HEIGHT(0)-HEIGHT_CLIENT(0) wc% = 640: ' largeur container WIDTH 0,wc%+bh%: HEIGHT 0,650: COLOR 0,64,255,255: FONT_BOLD 0: FONT_NAME 0,"Arial"
het% = 100 CONTAINER 1: WIDTH 1,wc%: HEIGHT 1,het% ALPHA 2: PARENT 2,1: TOP 2,3: CAPTION 2," Image de fond : ": COLOR 2,255,255,0 EDIT 3: PARENT 3,1: TOP 3,TOP(2)+16: WIDTH 3,260: ON_CLICK 3,Imgf OPEN_DIALOG 4: FILTER 4,"Image JPG,BMP|*.jpg;*.bmp" ALPHA 5: PARENT 5,1: TOP 5,TOP(3)+25: LEFT 5,5: CAPTION 5," Figure de découpe : " COLOR 5,255,255,0 i% = 40: j% = 36: k% = i%/2 PICTURE 10: PARENT 10,1: TOP 10,TOP(5)+15: LEFT 10,5: WIDTH 10,i%: HEIGHT 10,j% PICTURE 11: PARENT 11,1: TOP 11,TOP(10): LEFT 11,LEFT(10)+i%+5: WIDTH 11,i%: HEIGHT 11,j% PICTURE 12: PARENT 12,1: TOP 12,TOP(10): LEFT 12,LEFT(11)+i%+5: WIDTH 12,i%: HEIGHT 12,j% PICTURE 13: PARENT 13,1: TOP 13,TOP(10): LEFT 13,LEFT(12)+i%+5: WIDTH 13,i%: HEIGHT 13,j% FOR k% = 10 TO 13: ON_CLICK k%,Chfig: NEXT k% EDIT 14: PARENT 14,1: TOP 14,TOP(13)-16: LEFT 14,LEFT(13): WIDTH 14,20: HEIGHT 14,15 FONT_SIZE 14,8: TEXT 14,"5": nbr% = 5: ' étoile à 5 branches ALPHA 15: PARENT 15,1: TOP 15,TOP(14)+2: LEFT 15,LEFT(14)+21: COLOR 15,255,255,0: CAPTION 15,"br. " fig% = 3: GOSUB Figures
CONTAINER 20: PARENT 20,1: TOP 20,0: LEFT 20,WIDTH(3)+10: WIDTH 20,146: HEIGHT 20,het%-4 CAPTION 20,"TRACÉ :": COLOR 20,180,255,255 ALPHA 21: PARENT 21,20: TOP 21,15: LEFT 21,2: CAPTION 21,"Couleur:" PICTURE 22: PARENT 22,20: TOP 22,TOP(21)+15: LEFT 22,6: WIDTH 22,40: HEIGHT 22,22 COLOR 22,255,0,0 PICTURE 23: PARENT 23,20: TOP 23,TOP(21)-2: LEFT 23,54: WIDTH 23,90: HEIGHT 23,40 ON_CLICK 23,Chc ALPHA 24: PARENT 24,20: TOP 24,TOP(22)+26: LEFT 24,5: CAPTION 24,"Épaisseur trait:" SPIN 25: PARENT 25,20: TOP 25,TOP(24)-2: LEFT 25,LEFT(24)+90: WIDTH 25,50 MIN 25,1: MAX 25,20: POSITION 25,1 BUTTON 26: PARENT 26,20: TOP 26,HEIGHT(20)-23: LEFT 26,8: HEIGHT 26,22: CAPTION 26,"Tracer": ON_CLICK 26,Des1 i% = 23: j% = WIDTH(i%)/3: k% = HEIGHT(i%)/2: 2D_TARGET_IS i% 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,j%,k%: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE j%,0,2*j%,k% 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 2*j%,0,3*j%,k%: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 0,k%,j%,2*k% 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE j%,k%,2*j%,2*k%: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 2*j%,k%,3*j%,2*k% PICTURE 27: PARENT 27,20: TOP 27,TOP(26)+6: LEFT 27,LEFT(26)+77: WIDTH 27,14: HEIGHT 27,14 COLOR 27,255,0,0
CONTAINER 40: PARENT 40,1: TOP 40,0: LEFT 40,LEFT(20)+WIDTH(20)+2: WIDTH 40,75 HEIGHT 40,HEIGHT(20): COLOR 40,180,255,255: CAPTION 40,"DÉPLACER:" BUTTON 41: PARENT 41,40: TOP 41,15: LEFT 41,8: WIDTH 41,30: HEIGHT 41,18: CAPTION 41,CHR$(217) BUTTON 42: PARENT 42,40: TOP 42,TOP(41): LEFT 42,LEFT(41)+WIDTH(41)+2: WIDTH 42,WIDTH(41) HEIGHT 42,HEIGHT(41): CAPTION 42,CHR$(218) BUTTON 43: PARENT 43,40: TOP 43,TOP(41)+HEIGHT(41): LEFT 43,8: WIDTH 43,WIDTH(41): HEIGHT 43,HEIGHT(41) CAPTION 43,CHR$(219) BUTTON 44: PARENT 44,40: TOP 44,TOP(43): LEFT 44,LEFT(42): WIDTH 44,WIDTH(41): HEIGHT 44,HEIGHT(41) CAPTION 44,CHR$(220) BUTTON 45: PARENT 45,40: TOP 45,TOP(43)+HEIGHT(41): LEFT 45,8: WIDTH 45,WIDTH(41): HEIGHT 45,HEIGHT(41) CAPTION 45,CHR$(222) BUTTON 46: PARENT 46,40: TOP 46,TOP(45): LEFT 46,LEFT(42): WIDTH 46,WIDTH(41): HEIGHT 46,HEIGHT(41) CAPTION 46,CHR$(223) FOR i% = 41 TO 46 FONT_NAME i%,"Wingdings 3": FONT_SIZE i%,10: ON_CLICK i%,Deplac NEXT i% SPIN 48: PARENT 48,40: TOP 48,TOP(46)+HEIGHT(46): WIDTH 48,48: LEFT 48,5: POSITION 48,5 FONT_SIZE 48,10 ALPHA 49: PARENT 49,40: TOP 49,TOP(48)+3: LEFT 49,LEFT(48)+WIDTH(48): CAPTION 49,"pix."
CONTAINER 30: PARENT 30,1: TOP 30,0: LEFT 30,LEFT(40)+WIDTH(40)+2: WIDTH 30,WIDTH(20) HEIGHT 30,HEIGHT(20): COLOR 30,180,255,255 CAPTION 30,"REMPLISSAGE :" ALPHA 31: PARENT 31,30: TOP 31,15: LEFT 31,2: CAPTION 31,"Couleur:" PICTURE 32: PARENT 32,30: TOP 32,TOP(31)+15: LEFT 32,6: WIDTH 32,40: HEIGHT 32,22 PICTURE 33: PARENT 33,30: TOP 33,TOP(31)-2: LEFT 33,54: WIDTH 33,90: HEIGHT 33,40 ON_CLICK 33,Chc i% = 33: j% = WIDTH(i%)/3: k% = HEIGHT(i%)/2: 2D_TARGET_IS i% 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,j%,k%: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE j%,0,2*j%,k% 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 2*j%,0,3*j%,k%: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 0,k%,j%,2*k% 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE j%,k%,2*j%,2*k%: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 2*j%,k%,3*j%,2*k% BUTTON 36: PARENT 36,30: TOP 36,HEIGHT(30)-23: LEFT 36,8: HEIGHT 36,22: CAPTION 36,"Remplir": ON_CLICK 36,Rempl
BUTTON 38: PARENT 38,30: TOP 38,HEIGHT(30)-36: WIDTH 38,20: LEFT 38,WIDTH(30)-22: HEIGHT 38,35: CAPTION 38,"?" FONT_SIZE 38,10: ON_CLICK 38,Aide
BUTTON 50: PARENT 50,1: TOP 50,TOP(3)+26: LEFT 50,WIDTH(3)-75: CAPTION 50,"Annuler": ON_CLICK 50,Annul BUTTON 51: PARENT 51,1: TOP 51,TOP(50)+28: LEFT 51,LEFT(50): CAPTION 51,"Enregistrer": ON_CLICK 51,Enr SAVE_DIALOG 52: FILTER 52,"Fichier BMP|*.bmp"
FORM 53: BORDER_HIDE 53: HIDE 53: TOP 53,TOP(1)+TOP(51)+50: LEFT 53,LEFT(1)+LEFT(51) WIDTH 53,160: HEIGHT 53,80 : COLOR 53,255,255,0: FONT_BOLD 53: FONT_NAME 53,"Arial" CONTAINER_OPTION 54: PARENT 54,53: FULL_SPACE 54 OPTION 55: PARENT 55,54: TOP 55,10: LEFT 55,5: WIDTH 55,150 CAPTION 55,"Enregistrer la découpe" OPTION 56: PARENT 56,54: TOP 56,TOP(55)+18: LEFT 56,LEFT(55): CAPTION 56,"Enregistrer tout" BUTTON 57: PARENT 57,53: TOP 57,HEIGHT(53)-30: LEFT 57,30: WIDTH 57,100: CAPTION 57,"Enregistrer" ON_CLICK 57,Enr1
p% = 60 PICTURE p%: TOP p%,het%: WIDTH p%,640: HEIGHT p%,480 IMAGE 99 END ' ============================================================================== Chfig: ' Choix du type de découpe k% = NUMBER_CLICK: fig% = k%-8: ' type de figure cliqué (2 à 5) GOSUB Figures RETURN ' ============================================================================== Chc: k% = NUMBER_CLICK i% = MOUSE_X_LEFT_DOWN(k%): j% = MOUSE_Y_LEFT_DOWN(k%) r%=COLOR_PIXEL_RED(k%,i%,j%): g%=COLOR_PIXEL_GREEN(k%,i%,j%): b%=COLOR_PIXEL_BLUE(k%,i%,j%) COLOR k%-1,r%,g%,b% RETURN ' ============================================================================== Figures: i% = 40: j% = 36 FOR k% = 10 TO 13 2D_TARGET_IS k%: CLS: COLOR k%,255,255,180 2D_PEN_WIDTH 2: 2D_PEN_COLOR 0,0,0 2D_FILL_OFF SELECT k% CASE 10: 2D_POLY_FROM 6,29: 2D_POLY_TO i%/2,7: 2D_POLY_TO 35,29: 2D_POLY_TO 6,29 CASE 11: 2D_RECTANGLE 6,8,35,30 CASE 12: Ellipse(6,8,28,20) CASE 13: Etoile(i%/2,j%/2,5,(j%-6)/2,-1) END_SELECT NEXT k% 2D_TARGET_IS fig%+8: 2D_FILL_OFF: 2D_PEN_WIDTH 3: 2D_PEN_COLOR 255,0,0 2D_RECTANGLE 1,1,i%-1,j%-1 RETURN ' ============================================================================== Imgf: ' Choix de l'image de fond f$ = FILE_NAME$(4): a$ = UPPER$(FILE_EXTRACT_EXTENSION$(f$)) IF a$ <> ".BMP" AND a$ <> ".JPG" MESSAGE "Uniquement BMP ou JPG !": RETURN END_IF TEXT 3,f$ DimJpgBmp(f$): ' -> dimensions image wi% x hi% wn% = 0 IF hi% > (SCREEN_Y-bv%-het%-30) hn% = SCREEN_Y-bv%-het%-30: wn% = hn%*wi%/hi% ELSE IF wi% > SCREEN_X-bh%-wc% wn% = SCREEN_X-bh%-wc%: hn% = wn%*hi%/wi% END_IF END_IF IF wn% > 0 RedimImg(f$,wn%,hn%,""): ' -> clipboard wi% = wn%: hi% = hn% END_IF WIDTH p%,100: HEIGHT p%,100 k% = wi%+bh%: IF k%<(wc%+bh%) THEN k% = wc%+bh% IF k% > SCREEN_X THEN k% = SCREEN_X WIDTH 0,k% k% = hi%+bv%+het%: IF k% > (SCREEN_Y-30) THEN k% = SCREEN_Y-30 HEIGHT 0,k% WIDTH p%,wi%: HEIGHT p%,hi% IF wn% = 0 FILE_LOAD p%,f$ ELSE CLIPBOARD_PASTE p% END_IF CAPTION 2," Image de fond = "+STR$(wi%)+" x "+STR$(hi%)+" pixels " FILE_SAVE p%,fs$: ' sauvegarde de l'image de fond RETURN ' ============================================================================== Des1: IF subac% = 1 THEN RETURN 2D_TARGET_IS p% 2D_IMAGE_COPY 99,0,0,WIDTH(p%),HEIGHT(p%): ' sauvegarde préalable wt% = POSITION(25): 2D_PEN_WIDTH wt%: ' largeur tracé r%=COLOR_PIXEL_RED(22,5,5): g%=COLOR_PIXEL_GREEN(22,5,5): b%=COLOR_PIXEL_BLUE(22,5,5) 2D_PEN_COLOR r%,g%,b%: ' couleur tracé nbr% = VAL(TEXT$(14)): IF nbr%<2 THEN nbr%=2: TEXT 14,STR$(nbr%) COLOR 27,0,255,0: ' feu rouge Tracer(p%,fig%) COLOR 27,255,0,0: ' feu vert RETURN ' ============================================================================== Rempl: ON_CLICK p%,Rempl1 RETURN Rempl1: r%=COLOR_PIXEL_RED(22,5,5): g%=COLOR_PIXEL_GREEN(22,5,5): b%=COLOR_PIXEL_BLUE(22,5,5) cb% = 65536*b%+256*g%+r%: ' couleur de trait (bordure) r%=COLOR_PIXEL_RED(32,5,5): g%=COLOR_PIXEL_GREEN(32,5,5): b%=COLOR_PIXEL_BLUE(32,5,5) cr% = 65536*b%+256*g%+r%: ' couleur de remplissage xr% = MOUSE_X_POSITION(p%): yr% = MOUSE_Y_POSITION(p%) 2D_IMAGE_COPY 99,0,0,WIDTH(p%),HEIGHT(p%): ' image -> presse-papier DLL_ON "C:\PANORAMIC\KGF\KGF.dll" CLIPBOARD_COPY p% IF cr% = -1 THEN cr% = 65536*255+256*255+255: ' blanc res% = DLL_CALL0("LoadPicture"): ' image presse-papier -> image interne res% = DLL_CALL4("FloodfillPictureToBorderColor",xr%,yr%,cr%,cb%) res% = DLL_CALL0("SavePicture"): ' image interne -> presse-papier CLIPBOARD_PASTE p% DLL_OFF OFF_CLICK p% RETURN ' ============================================================================== Deplac: i% = NUMBER_CLICK j% = POSITION(48) SELECT i% CASE 41: x1% = x1%-j%: x2% = x2%-j%: ' gauche CASE 42: x1% = x1%+j%: x2% = x2%+j%: ' droite CASE 43: y2% = y2%-j%: y1% = y1%-j%: ' haut CASE 44: y1% = y1%+j%: y2% = y2%+j%: ' bas CASE 45: y1% = y1%-j%: x2% = x2%+j%: ' agrandir CASE 46: y1% = y1%+j%: x2% = x2%-j%: ' sréduire END_SELECT 2D_IMAGE_PASTE 99,0,0: ' restore image initiale rx%=(x2%-x1%)/2: ry%=(y2%-y1%)/2: xc%=x1%+rx%: yc%=y1%+ry% SELECT fig% CASE 1: 2D_LINE x1%,y1%,x2%,y2%: ' Trait CASE 2: 2D_POLY_FROM x1%,y2%: 2D_POLY_TO xc%,y1%: ' Triangle 2D_POLY_TO x2%,y2%: 2D_POLY_TO x1%,y2% CASE 3: 2D_RECTANGLE x1%,y1%,x2%,y2%: ' Rectangle CASE 4: 2D_POLY_FROM xc%+rx%,yc%: ' Ellipse FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t CASE 5: ' nbr% = 5: ' étoile à 5 branches (défini plus haut) ri% = rx%/2.62: ' branches supérieures horizontales t = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rx%*COS(t): y%(i%) = yc%-rx%*SIN(t) t = t+2*(PI/nbr%) NEXT i% t = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+ri%*COS(t): y%(i%) = yc%-ri%*SIN(t) t = t+2*PI/nbr% NEXT i% 2D_POLY_FROM x%(0),y%(0) FOR i% = 1 TO nbr%*2-1: 2D_POLY_TO x%(i%),y%(i%): NEXT i% 2D_POLY_TO x%(0),y%(0) END_SELECT RETURN ' ============================================================================== Annul: 2D_IMAGE_PASTE 99,0,0: ' restore RETURN ' ============================================================================== Enr: SHOW 53 MARK_ON 55 RETURN Enr1: ' Enregistrer le résultat: zone de découpe a$ = FILE_NAME$(52) 2D_TARGET_IS p% IF CHECKED(55) = 1: ' enregistrer la découpe j% = wt%/2 2D_IMAGE_COPY 99,x1%-j%,y1%-j%,x2%+j%,y2%+j% FILE_SAVE 99,a$ ELSE: ' enregistrer toute l'image FILE_SAVE p%,a$ END_IF HIDE 53 RETURN ' ============================================================================== Aide: rc$ = CHR$(13)+CHR$(10) a$ = " - DÉCOUPE DANS UNE IMAGE -"+rc$+rc$ a$=a$+"Encadrement d'une partie d'image (par exemple un visage) avec une figure"+rc$ a$=a$+"géométrique, et remplissage en blanc de toute la zone extérieure à cette figure."+rc$+rc$ a$=a$+"1) Choisir une image de fond jpg ou bmp (clic)"+rc$ a$=a$+" L'image choisie sera éventuellement redimensionnée pour tenir en entier"+rc$ a$=a$+" dans l'écran."+rc$ a$=a$+"2) Choisir une figure d'encadrement (triangle, rectangle, ellipse, étoile)."+rc$ a$=a$+" On peut fixer le nombre de branches de l'étoile (au-dessus du symbole)."+rc$ a$=a$+"3) Choisir la couleur du tracé, et l'épaisseur du trait de contour."+rc$ a$=a$+"4) Cliquer le bouton 'Tracer' -> le petit voyant à droite passe au vert (sinon,"+rc$ a$=a$+" recliquer)."+rc$ a$=a$+"5) Cliquer dans l'image le coin supérieur gauche de la découpe, puis sans"+rc$ a$=a$+" relâcher, déplacer la souris vers le coin inférieur droit, puis relâcher."+rc$ a$=a$+" -> la zone sélectionnée est entourée par la figure choisie."+rc$ a$=a$+"- On peut déplacer la sélection dans les 4 directions d'un nombre de pixels choisi"+rc$ a$=a$+" (boutons flèches horizontales et verticales) ou l'agrandir ou la réduire (boutons"+rc$ a$=a$+" flèches obliques)."+rc$ a$=a$+"6) Remplissage: couleur uniforme (en général blanc) sur la totalité de l'image"+rc$ a$=a$+" autour de la découpe (ou à l'intérieur, selon ce qu'on veut en faire)"+rc$ a$=a$+" Choisir la couleur de remplissage, cliquer le bouton 'Remplir', puis cliquer"+rc$ a$=a$+" dans l'image un point de la zone à remplir."+rc$+rc$ a$=a$+"- On peut annuler (bouton 'Annuler') et recommencer la dernière opération"+rc$ a$=a$+" (tracé ou remplissage) autant de fois que nécessaire."+rc$+rc$ a$=a$+"Une fois le résultat désiré obtenu, on peut enregistrer l'image résultante au"+rc$ a$=a$+"format bmp (bouton 'Enregistrer')."+rc$ a$=a$+"On a le choix d'enregistrer soit la totalité de l'image (qui sera aux dimensions"+rc$ a$=a$+"de l'image affichée), soit uniquement la découpe."+rc$ a$=a$+"On peut imaginer d'insérer cette découpe par exemple dans des cartes de voeux,"+rc$ a$=a$+"anniversaires, etc."+rc$ MESSAGE a$ RETURN ' ============================================================================== SUB Tracer(p%,fig%) ' Tracer une figure fig% à la souris sur le picture p% ' Figure vide, tracée avec les paramètres actuels: largeur trait, couleur ' Résultat dans x1%,y1%,x2%,y2% ' Figures: 1= Trait, 2= Rectangle, 3= Cercle/Ellipse, 4= Étoile à nbr% branches subac% = 1 DIM_LOCAL im%,xs%,ys%,xc%,yc%,rx%,ry%,t,i%,j%,x%(100),y%(100),ri% im% = 900: IMAGE im% WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE x1% = MOUSE_X_POSITION(p%): y1% = MOUSE_Y_POSITION(p%) 2D_TARGET_IS p%: 2D_FILL_OFF 2D_IMAGE_COPY im%,0,0,WIDTH(p%),HEIGHT(p%) WHILE MOUSE_LEFT_UP(p%) = 0 x2% = MOUSE_X_POSITION(p%): y2% = MOUSE_Y_POSITION(p%) IF x2%<>xs% OR y2%<>ys% xs%=x2%: ys%=y2% 2D_IMAGE_PASTE im%,0,0 rx%=(x2%-x1%)/2: ry%=(y2%-y1%)/2: xc%=x1%+rx%: yc%=y1%+ry% SELECT fig% CASE 1: 2D_LINE x1%,y1%,x2%,y2%: ' Trait CASE 2: 2D_POLY_FROM x1%,y2%: 2D_POLY_TO xc%,y1%: ' Triangle 2D_POLY_TO x2%,y2%: 2D_POLY_TO x1%,y2% CASE 3: 2D_RECTANGLE x1%,y1%,x2%,y2%: ' Rectangle CASE 4: 2D_POLY_FROM xc%+rx%,yc%: ' Ellipse FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t CASE 5: ' nbr% = 5: ' étoile à 5 branches (défini dans l'appelant) ri% = rx%/2.62: ' branches supérieures horizontales t = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rx%*COS(t): y%(i%) = yc%-rx%*SIN(t) t = t+2*(PI/nbr%) NEXT i% t = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+ri%*COS(t): y%(i%) = yc%-ri%*SIN(t) t = t+2*PI/nbr% NEXT i% 2D_POLY_FROM x%(0),y%(0) FOR i% = 1 TO nbr%*2-1: 2D_POLY_TO x%(i%),y%(i%): NEXT i% 2D_POLY_TO x%(0),y%(0) END_SELECT END_IF PAUSE 100 END_WHILE DELETE im% IF fig% = 5: ' étoile, màj de x1,y1,x2,y2 sur l'enveloppe j% = 10000: FOR i% = 0 TO 2*nbr%-1: IF x%(i%)<j% THEN j% = x%(i%) NEXT i%: x1% = j% j% = 0: FOR i% = 0 TO 2*nbr%-1: IF x%(i%)>j% THEN j% = x%(i%) NEXT i%: x2% = j% j% = 10000: FOR i% = 0 TO 2*nbr%-1: IF y%(i%)<j% THEN j% = y%(i%) NEXT i%: y1% = j% j% = 0: FOR i% = 0 TO 2*nbr%-1: IF y%(i%)>j% THEN j% = y%(i%) NEXT i%: y2% = j% END_IF subac% = 0 END_SUB ' ============================================================================== ' ============================================================================== SUB DimJpgBmp(f$) ' Image JPG ou BMP exclusivement, dimensions dans wi% et hi% DIM_LOCAL fm$: fm$ = "Z:\Provy.bmp" IF UPPER$(FILE_EXTRACT_EXTENSION$(f$)) <> ".BMP" PICTURE 1099: HIDE 1099: FILE_LOAD 1099,f$: FILE_SAVE 1099,fm$ DELETE 1099: f$ = fm$ END_IF FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$ END_SUB ' ============================================================================== SUB RedimImg(f$,w%,h%,fr$) ' Redimensionner l'image f$ (BMP ou JPG) en w%,h%, résultat dans fr$ (BMP) ' Si fr$ = "", résultat dans le presse-papier ' Si w% = 0 ou h% = 0: redimensionnement proportionnel DIM_LOCAL fm$,wi%,hi%,cx,cy,op% fm$ = "C:\TEMP\Provimg.bmp" op% = 1900: ' objet provisoire IF UPPER$(FILE_EXTRACT_EXTENSION$(f$)) = ".JPG" PICTURE op%: FILE_LOAD op%,f$: FILE_SAVE op%,fm$: DELETE op%: f$ = fm$ END_IF FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 IF h% = 0 THEN h% = w%*hi%/wi% IF w% = 0 THEN w% = h%*wi%/hi% cx = w%/wi%: cy = h%/hi% SCENE2D op%: HIDE op%: WIDTH op%,w%: HEIGHT op%,h% SPRITE op%: SPRITE_FILE_LOAD op%,f$: SPRITE_SCALE op%,cx,cy IF fr$ = "" SNAPSHOT op%,fm$ PICTURE op%+1: FILE_LOAD op%+1,fm$: CLIPBOARD_COPY op%+1 DELETE op%+1 ELSE SNAPSHOT op%,fr$ END_IF DELETE op%: IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$ END_SUB ' ============================================================================== SUB Ellipse(x%,y%,w%,h%) ' Tracé d'une ellipse vide en x%,y% de la cible 2d, inscrite dans w%,h% ' Bordure de la couleur courante et de l'épaisseur (1 à 20) courante DIM_LOCAL rx%,ry%,xc%,yc%,t rx% = w%/2: ry% = h%/2: xc% = x%+rx%: yc% = y%+ry% 2D_POLY_FROM xc%+rx%,yc% FOR t = 0 TO 2*pi STEP pi/180 2D_POLY_TO xc%+rx%*COS(t),yc%+ry%*SIN(t) NEXT t END_SUB ' ============================================================================== SUB Etoile(xc%,yc%,nbr%,rext%,rint%) ' Dessin d'une étoile à nbr% branches, centrée en xc%,yc% sur le 2d_Target ' Rayon enveloppe rext%, rayon intérieur rint% (estimé si rint%=0) ' couleur et épaisseur trait courants DIM_LOCAL x%(100),y%(100),i%,an IF rint% <= 0 THEN rint% = rext%/2.62: ' branches supérieures horizontale an = PI/2 FOR i% = 0 TO 2*nbr%-2 STEP 2 x%(i%) = xc%+rext%*COS(an) y%(i%) = yc%-rext%*SIN(an) an = an + 2*(PI/nbr%) NEXT i% an = PI/2 + PI/nbr% FOR i% = 1 TO 2*nbr%-1 STEP 2 x%(i%) = xc%+rint%*COS(an) y%(i%) = yc%-rint%*SIN(an) an = an + 2*PI/nbr% NEXT i% 2D_LINE x%(0),y%(0),x%(0),y%(0) FOR i% = 1 TO nbr%*2-1 2D_POLY_TO x%(i%),y%(i%) NEXT i% 2D_POLY_TO x%(0),y%(0) END_SUB ' ==============================================================================
Dernière édition par JL35 le Mar 27 Fév 2018 - 15:56, édité 2 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 1:48 | |
| Avec PANORAMIC V 0.9.28i14 ----- > ERRRRR - ERRRR:
Et puis rien ne va plus Avec PANORAMIC V 0.9.27 ---- > OK - OK:
Il y a peut-être un bug sur la V 0.9.28i14 Peut-être aussi que la V 0.9.28i14 a corrigé un bug de la V 0.9.27 qui a passé inaperçu jusqu'à présent ? - Extrait du code:
Remarquez que l’objet 55 (Objet OPTION) est le fils de l’objet 54 (CONTAINER_OPTION) lequel objet est le fils de l’objet 53 qui lui est un objet FORM et qu’il est caché HIDE 53 Personnellement je voie que l’erreur Impossible de focaliser une fenêtre désactivée ou invisible est tout à fait à sa place C'est à Jack de voir. ALLEZ, ENCORE UN P'TIT EFFORT ... ... AU NOM DE LA SOLIDARITE PANORAMICIENNE | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 13:33 | |
| Là ça me dépasse un peu (beaucoup...) Déjà je suis toujours sous 0.9.27, donc pas d'erreur Et puis je ne cherche pas à focaliser quoi que ce soit, surtout sur un objet caché..., cette erreur me parait plutôt... abscons. Ceci dit, il faudrait mettre cette fonction d'enregistrement avec ses options dans un objet visible, pour ne pas avoir ce problème...
ps. je préférais ton ancien look papydall (enfin le nouveau, si je comprends bien la chronologie... sur celui-ci tu avais environ 25 ans, si je compte bien) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 13:42 | |
| - Citation :
- Et puis je ne cherche pas à focaliser quoi que ce soit, surtout sur un objet caché..., cette erreur me parait plutôt... abscons.
Ceci dit, il faudrait mettre cette fonction d'enregistrement avec ses options dans un objet visible, pour ne pas avoir ce problème... Le fait de faire MARK_ON sur un OPTION le "focalise" - et ça ne marche pas s'il est caché. Fonctionnement Delphi/Windows, pas problème Panoramic. Contournement: au lieu de faire HIDE et SHOW, essaie de faire LEFT x,LEFT (x)-3000 et LEFT x,LEFT (x)+3000 Ca devrait marcher, et ça aura le même effet. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 14:10 | |
| Merci Klaus pour l'explication, et c'est effectivement une solution.
Mais je préconise autre chose: supprimer le MARK_ON 55 de la ligne 88 (l'objet est caché), et le reporter après la ligne 243: SHOW 53. L'objet étant devenu visible ça devrait marcher, et visuellement ça ne change rien.
Effectivement, et je viens de faire la modif ci-dessus, expérience faite sous Panoramic 28i14, ça marche en faisant le Mark_On juste après avoir rendu l'objet visible. (et merci aussi à papydall pour avoir essayé). | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 16:55 | |
| - JL35 a écrit:
ps. je préférais ton ancien look papydall (enfin le nouveau, si je comprends bien la chronologie... sur celui-ci tu avais environ 25 ans, si je compte bien)
Pour te faire plaisir, je viens de changer mon avatar : un Papdall sans âge pour ne pas faire de jaloux ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mar 27 Fév 2018 - 17:15 | |
| Il me semble bien que tu l'avais déjà mis celui-là non ? Mais c'est quand même moins bien que ton portrait, même éloigné dans le temps... tu n'en as pas un du début des années 1900, quand tu étais encore adolescent et beau comme un astre ? Attention, je n'ai pas dit que tu étais moche maintenant, c'est... autre chose... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Jeu 1 Mar 2018 - 17:15 | |
| J'ai mis à jour la version initiale. Dans le cas d'une image qui dépasserait les limites de l'écran, plutôt que de la réduire (en perdant en définition), et suite à un autre post (où je me suis inspiré de Klaus), j'ai ajouté des barres de défilement horizontale et/ou verticale, pour naviguer dans l'image. | |
| | | Contenu sponsorisé
| Sujet: Re: Découpe dans une image | |
| |
| | | | Découpe dans une image | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |