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 |
|
|
| Dessin(x) | |
| | |
Auteur | Message |
---|
Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mar 24 Fév 2015 - 16:41 | |
| @ JL35 : Avec grand plaisir ! Ne crois pas que je garde des choses pour moi, c'est juste que mon emploi du temps est très délayé. Là par exemple, dès que j'ai fermé cette fenêtre, j'écris (10 chapitres sur 30 à finir), et avant, je rattrapais un désherbage urgent... il me faudrait VRAIMENT une vie pour écrire, une autre pour coder, une troisième pour apprendre le piano... je suis un touche à tout. Au moins j'ai fini deux bouquins, un jour, c'est sûr, je finirai un programme !!! À bientôt !!! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Mar 24 Fév 2015 - 17:23 | |
| Essaie de faire du dédoublement (détriplement dans ton cas ?) de personnalité, ça pourrait aider...
Je comprends bien, mais ne te plains pas, tu verras quand tu seras retraité comme moi tu seras encore plus débordé ! Je plaisante, c'est ce qu'on dit, c'est quand même la belle vie, mais ne sois pas trop pressé d'y arriver, ça ne dure qu'un temps... | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mar 24 Fév 2015 - 18:24 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Mer 25 Fév 2015 - 22:32 | |
| Sans doute la dernière version, je la remets en entier ici car elle a bien grossi, en particulier parce que j'ai ajouté une barre de menu (avec ouverture/sauvegarde) et surtout une fonction insertion de texte. Il y a également une fonction impression, elle n'est pas intégrée because ça nécessite une ressource externe... La fonction Texte permet de préparer le texte à part, de le mettre en forme (police, taille, enrichissements), éventuellement de le centrer sur lui-même (par rapport à la ligne la plus longue), puis de l'insérer au clic souris, avec la couleur courante (avec possibilité de déplacements, ou d'annulation). Avec une petite aide succincte. - Code:
-
' Dessin LABEL Quit,Type,Couleur,Dessiner,ign,Destrait,Desrec,Desell,Destex,Deplacer,Annuler LABEL SauvRest,Format,Raztou,Finaper,Texte,Ftexte,Chp,Chp1,Chp2,Aide DIM wp%,hp%,het%,i%,j%,p%,x%,y%,xd%,yd%,x1%,y1%,xa%,ya%,xf%,yf%,btn,coord$,ofx,ofy,typ DIM r%,g%,b%,wt%,rx%,ry%,xc%,yc%,pi,t,f$,mm$,ftmp$,a$,pol$,sz%,rc$ pi = 4*ATN(1) mm$ = "C:\PANORAMIC\Mouse.dll": ' <<<<<<<<<<<<<< CHEMIN À PRÉCISER <<<<<<<<<< ' La sub Mouse.dll de Nardo est à télécharger ici: ' http://nardo26.lescigales.org/divers-dll-28.html ftmp$ = "C:\TEMP\Tmp.bmp"
wp% = 800: hp% = 600: ' Dimensions du picture de dessin het% = 30: ' hauteur de l'en-tête
WIDTH 0,wp%+16: HEIGHT 0,hp%+het%+54: COLOR 0,180,255,255: ON_CLOSE 0,Quit: FONT_BOLD 0 BORDER_SMALL 0 p% = 1: PICTURE p%: TOP p%,het%: WIDTH p%,wp%: HEIGHT p%,hp% ' ofx = LEFT(0)+LEFT(p%)+8: ofy = TOP(0)+TOP(p%)+40 MAIN_MENU 70 SUB_MENU 71: PARENT 71,70: CAPTION 71,"Fichier" SUB_MENU 80: PARENT 80,71: CAPTION 80,"Ouvrir (JPG, BMP)" SUB_MENU 81: PARENT 81,71: CAPTION 81,"Enregistrer (BMP)" SUB_MENU 82: PARENT 82,71: CAPTION 82,"Aperçu" SUB_MENU 83: PARENT 83,71: CAPTION 83,"Imprimer" SUB_MENU 84: PARENT 84,71: CAPTION 84,"Quitter" FOR i% = 80 TO 84: ON_CLICK i%,SauvRest: NEXT i% SUB_MENU 72: PARENT 72,70: CAPTION 72,"Format" SUB_MENU 90: PARENT 90,72: CAPTION 90,"A4" SUB_MENU 91: PARENT 91,72: CAPTION 91,"A4 Paysage" SUB_MENU 92: PARENT 92,72: CAPTION 92,"½ A4" SUB_MENU 93: PARENT 93,72: CAPTION 93,"800 x 600" FOR i% = 90 TO 93: ON_CLICK i%,Format: NEXT i% SUB_MENU 73: PARENT 73,70: CAPTION 73,"RAZ Totale": ON_CLICK 73,Raztou SUB_MENU 74: PARENT 74,70: CAPTION 74,"Annul dernier": ON_CLICK 74,Annuler SUB_MENU 75: PARENT 75,70: CAPTION 75,"?": ON_CLICK 75,Aide ' Figures CONTAINER_OPTION 10: TOP 10,0: HEIGHT 10,30: WIDTH 10,250 OPTION 11: PARENT 11,10: TOP 11,0: LEFT 11,5: CAPTION 11,"Libre": MARK_ON 11 OPTION 12: PARENT 12,10: TOP 12,15: LEFT 12,5: CAPTION 12,"Trait" OPTION 13: PARENT 13,10: TOP 13,0: LEFT 13,55: CAPTION 13,"Rectangle" OPTION 14: PARENT 14,10: TOP 14,15: LEFT 14,55: CAPTION 14,"Ellipse" OPTION 15: PARENT 15,10: TOP 15,0: LEFT 15,133: CAPTION 15,"Remplir" OPTION 16: PARENT 16,10: TOP 16,15: LEFT 16,133: CAPTION 16,"Texte" OPTION 17: PARENT 17,10: TOP 17,0: LEFT 17,195: CAPTION 17,"Coller" FOR i% = 11 TO 17: ON_CLICK i%,Type: NEXT i% typ = 0: 2D_PEN_SOLID: ' tracé libre
CONTAINER 60: TOP 60,TOP(10): HEIGHT 60,HEIGHT(10): LEFT 60,LEFT(10)+WIDTH(10) WIDTH 60,95 CHECK 61: PARENT 61,60: TOP 61,0: LEFT 61,0: CAPTION 61,"Carré/Cercle" CHECK 62: PARENT 62,60: TOP 62,15: LEFT 62,0: CAPTION 62,"Rebouclage"
' Palette CONTAINER 20: LEFT 20,LEFT(60)+WIDTH(60)+0: HEIGHT 20,22: TOP 20,TOP(10)+3: WIDTH 20,105 PICTURE 21: PARENT 21,20: TOP 21,1: WIDTH 21,25: HEIGHT 21,22: COLOR 21,0,0,0 PICTURE 22: PARENT 22,20: TOP 22,TOP(21): LEFT 22,32: WIDTH 22,90: HEIGHT 22,HEIGHT(21) 2D_TARGET_IS 22 2D_PEN_COLOR 0,0,0: 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,12,22 2D_PEN_COLOR 255,255,255: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE 12,0,24,22 2D_PEN_COLOR 255,0,0: 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 24,0,36,22 2D_PEN_COLOR 0,255,0: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 36,0,48,22 2D_PEN_COLOR 0,0,255: 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 48,0,60,22 2D_PEN_COLOR 255,255,0: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 60,0,72,22 ON_CLICK 22,Couleur ' Épaisseur du trait ALPHA 30: TOP 30,TOP(20)+5: LEFT 30,LEFT(20)+110: CAPTION 30,"Trait:" SPIN 31: TOP 31,TOP(30)-4: LEFT 31,LEFT(30)+35: WIDTH 31,40 MIN 31,1: MAX 31,20: POSITION 31,1
BUTTON 40: TOP 40,TOP(31): LEFT 40,LEFT(31)+50: HEIGHT 40,23: WIDTH 40,20 BUTTON 41: TOP 41,TOP(40): LEFT 41,LEFT(40)+20: HEIGHT 41,23: WIDTH 41,20 BUTTON 42: TOP 42,TOP(40): LEFT 42,LEFT(41)+20: HEIGHT 42,23: WIDTH 42,20 BUTTON 43: TOP 43,TOP(40): LEFT 43,LEFT(42)+20: HEIGHT 43,23: WIDTH 43,20 BUTTON 44: TOP 44,TOP(40): LEFT 44,LEFT(43)+20: HEIGHT 44,23: WIDTH 44,20 BUTTON 45: TOP 45,TOP(40): LEFT 45,LEFT(44)+20: HEIGHT 45,23: WIDTH 45,20 FOR i%=40 TO 45 FONT_NAME i%,"Wingdings": CAPTION i%,CHR$(191+i%): ON_CLICK i%,Deplacer NEXT i% CAPTION 44,CHR$(229): CAPTION 45,CHR$(228) SPIN 46: TOP 46,TOP(40): LEFT 46,LEFT(45)+20: WIDTH 46,40: POSITION 46,5: MIN 46,1: MAX 46,50 ALPHA 47: TOP 47,TOP(30): WIDTH 47,10: LEFT 47,LEFT(46)+40: CAPTION 47,"pixels"
OPEN_DIALOG 55: FILTER 55,"fichier image BMP ou JPG|*.bmp*.jpg" SAVE_DIALOG 56: FILTER 56,"fichier image .BMP|*.bmp" IMAGE 57 ' Texte FORM 120: HIDE 120: BORDER_SMALL 120: COLOR 120,0,255,255 CAPTION 120,"- Texte à insérer -" TOP 120,50: LEFT 120,LEFT(0)+WIDTH(0): WIDTH 120,500: HEIGHT 120,600: FONT_BOLD 120 ON_CLOSE 120,Ftexte EDIT 121: PARENT 121,120: TOP 121,5: LEFT 121,5: WIDTH 121,150 TEXT 121,"Arial": ON_CLICK 121,Chp SPIN 122: PARENT 122,120: TOP 122,TOP(121): LEFT 122,WIDTH(121)+10: WIDTH 122,45 MIN 122,6: MAX 122,255: POSITION 122,12: ON_CHANGE 122,Chp2 CHECK 123: PARENT 123,120: TOP 123,TOP(122)+3: LEFT 123,LEFT(122)+50 CAPTION 123,"G" CHECK 124: PARENT 124,120: TOP 124,TOP(123): LEFT 124,LEFT(123)+30 CAPTION 124,"I" CHECK 125: PARENT 125,120: TOP 125,TOP(123): WIDTH 125,50: LEFT 125,LEFT(124)+30 CAPTION 125,"S" CHECK 126: PARENT 126,120: TOP 126,TOP(123): WIDTH 126,55: LEFT 126,LEFT(125)+30 CAPTION 126,"Centrer" FOR i% = 123 TO 126: ON_CLICK i%,Chp2: NEXT i% pol$ = "Arial": sz% = 12 MEMO 127: PARENT 127,120: TOP 127,30: LEFT 127,0: WIDTH 127,WIDTH(120)-16 HEIGHT 127,HEIGHT(120)-70: FONT_NAME 127,pol$: FONT_SIZE 127,sz%: FONT_BOLD_OFF 127 LIST 129: PARENT 129,120: TOP 129,TOP(121)+25: LEFT 129,5: WIDTH 129,200 HEIGHT 129,HEIGHT(120)-65: FONT_NAMES_LOAD 129: ON_CLICK 129,Chp1: HIDE 129 COLOR 129,255,255,190 FOR i% = COUNT(129) TO 1 STEP -1 IF LEFT$(ITEM_READ$(129,i%),1)="@" THEN ITEM_DELETE 129,i% NEXT i% LIST 130: PARENT 130,120: HIDE 130
FORM 140: HIDE 140: BORDER_SMALL 140: COLOR 140,0,255,255: CAPTION 140,"- Aperçu -" PICTURE 141: PARENT 141,140: STRETCH_ON 141 BUTTON 142: PARENT 142,140: HEIGHT 142,20: TOP 142,HEIGHT(140)-29: LEFT 142,WIDTH(140)/2-40 CAPTION 142,"OK": ON_CLICK 142,Finaper
2D_TARGET_IS p%: DLL_ON mm$ coord$ = STRING$(8," ") btn = DLL_CALL1("GetMouseXY",ADR(coord$)): ' état boutons et coordonnées souris ofx = LEFT(0)+LEFT(p%)+8: ofy = TOP(0)+TOP(p%)+het%+17 WHILE btn<>2: ' Boucle d'attente de clic dans la surface de dessin xd% = VAL(LEFT$(coord$,4))-ofx: yd% = VAL(RIGHT$(coord$,4))-ofy IF xd%>=0 AND yd%>=0 AND xd%<wp% AND yd%<hp% CAPTION 0,"x= "+STR$(xd%)+" y= "+STR$(yd%) btn = DLL_CALL1("GetMouseXY",ADR(coord$)) IF btn=1: ' bouton gauche enfoncé GOSUB Dessiner END_IF ELSE btn = DLL_CALL1("GetMouseXY",ADR(coord$)) END_IF PAUSE 100 END_WHILE END ' ============================================================================== Quit: TERMINATE ' ============================================================================== Type: ' Type de dessin: libre, rectangle, cercle/ellipse, ou autre (à voir)... FOR i% = 11 TO 20 IF CHECKED(i%)=1 THEN typ = i%-11: EXIT_FOR NEXT i% SELECT typ CASE 0: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): ' tracé libre CASE 1: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Trait CASE 2: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Rectangle CASE 3: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Ellipse CASE 4: ' Remplir CASE 5: ' Texte CASE 6: ' Collet END_SELECT IF typ = 5 THEN GOSUB Texte RETURN ' ============================================================================== Couleur: ' Couleur du tracé x%=MOUSE_X_POSITION(22): y%=MOUSE_Y_POSITION(22) r%=COLOR_PIXEL_RED(22,x%,y%): g%=COLOR_PIXEL_GREEN(22,x%,y%): b%=COLOR_PIXEL_BLUE(22,x%,y%) COLOR 21,r%,g%,b%: 2D_PEN_COLOR r%,g%,b% RETURN ' ============================================================================== Dessiner: ofx = LEFT(0)+LEFT(p%)+8: ofy = TOP(0)+TOP(p%)+het%+17 xd%=VAL(LEFT$(coord$,4))-ofx: yd% = VAL(RIGHT$(coord$,4))-ofy xa%=xd%: ya%=yd%: x1%=xd%: y1%=yd% btn = 1 IF typ = 6: ' coller FILE_SAVE p%,ftmp$ CLIPBOARD_PASTE 57: 2D_IMAGE_PASTE 57,xd%,yd%: RETURN END_IF CLIPBOARD_COPY p% WHILE btn = 1 btn = DLL_CALL1("GetMouseXY",ADR(coord$)) x%=VAL(LEFT$(coord$,4))-ofx: y% = VAL(RIGHT$(coord$,4))-ofy IF x%<0 OR y%<0 OR x%>WIDTH(p%) OR y%>HEIGHT(p%) THEN GOTO ign CAPTION 0,"x= "+STR$(x%)+" y= "+STR$(y%) IF x%<>x1% OR y%<>y1% SELECT typ 2D_PEN_COLOR 0,0,0 CASE 0: ' tracé libre 2D_PEN_COLOR r%,g%,b% 2D_PEN_WIDTH POSITION(31): 2D_LINE x1%,y1%,x%,y% CASE 1: ' trait CLIPBOARD_PASTE p%: 2D_LINE xd%,yd%,x%,y% CASE 2: ' rectangle/carré CLIPBOARD_PASTE p% IF CHECKED(61) = 1 THEN y% = yd%+x%-xd%: ' carré 2D_LINE xd%,yd%,x%,yd%: 2D_POLY_TO x%,y%: 2D_POLY_TO xd%,y% 2D_POLY_TO xd%,yd% CASE 3: ' ellipse/cercle CLIPBOARD_PASTE p% rx%=(x%-xd%)/2: ry%=(y%-yd%)/2 IF CHECKED(61)=1 THEN ry%=rx% xc%=xd%+rx%: yc%=yd%+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 CASE 4: ' remplir CASE 5 CASE 6 END_SELECT x1%=x%: y1%=y% END_IF ign: PAUSE 50 END_WHILE ' bouton gauche relâché: tracé définitif IF typ = 0 IF CHECKED(62)=1 THEN 2D_LINE x%,y%,xa%,ya%: ' rebouclage tracé libre ELSE CLIPBOARD_PASTE p%: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): 2D_PEN_COLOR r%,g%,b% xa%=xd%: ya%=yd%: xf%=x%: yf%=y% SELECT typ CASE 1: GOSUB Destrait: ' trait CASE 2: GOSUB Desrec: ' rectangle/carré CASE 3: GOSUB Desell: ' ellipse/cercle CASE 4: 2D_FLOOD xa%,ya%,r%,g%,b%: ' remplir CASE 5: GOSUB Destex CASE 6 END_SELECT 2D_PEN_WIDTH 1: 2D_PEN_DOT: 2D_PEN_COLOR 0,0,255 END_IF RETURN ' ============================================================================== Destrait: 2D_LINE xa%,ya%,xf%,yf% RETURN ' ============================================================================== Desrec: IF CHECKED(61) = 1 THEN yf% = yd%+xf%-xd% 2D_LINE xa%,ya%,xf%,ya%: 2D_POLY_TO xf%,yf%: 2D_POLY_TO xa%,yf%: 2D_POLY_TO xa%,ya% RETURN ' ============================================================================== Desell: rx%=(xf%-xa%)/2: ry%=(yf%-ya%)/2 IF CHECKED(61)=1 THEN ry%=rx% xc%=xa%+rx%: yc%=ya%+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 RETURN ' ============================================================================== Destex: IF COUNT(127) = 0 THEN RETURN PRINT_TARGET_IS p%: FONT_NAME p%,pol$ FONT_BOLD_OFF p%: FONT_ITALIC_OFF p%: FONT_UNDERLINE_OFF p% IF CHECKED(123)=1 THEN FONT_BOLD p% IF CHECKED(124)=1 THEN FONT_ITALIC p% IF CHECKED(125)=1 THEN FONT_UNDERLINE p% FONT_SIZE p%,sz%: FONT_COLOR p%,r%,g%,b%: 2D_FILL_COLOR 255,255,255 x% = xa%: y% = ya% FOR i% = 1 TO COUNT(127) a$ = ITEM_READ$(127,i%) PRINT_LOCATE x%,y%: PRINT a$: y%=y%+TEXT_HEIGHT(a$,p%) NEXT i% RETURN ' ============================================================================== Deplacer: IF typ = 0 THEN RETURN: ' (tracé libre, non déplaçable) i% = NUMBER_CLICK: j% = POSITION(46) SELECT i% CASE 40: xa%=xa%-j%: xf%=xf%-j%: ' gauche CASE 41: xa%=xa%+j%: xf%=xf%+j%: ' droite CASE 42: ya%=ya%-j%: yf%=yf%-j%: ' haut CASE 43: ya%=ya%+j%: yf%=yf%+j%: ' bas CASE 44: xf%=xf%-j%: yf%=yf%-j%: ' diminuer CASE 45: xf%=xf%+j%: yf%=yf%+j%: ' augmenter END_SELECT CLIPBOARD_PASTE p%: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): 2D_PEN_COLOR r%,g%,b% SELECT typ CASE 1: GOSUB Destrait CASE 2: GOSUB Desrec CASE 3: GOSUB Desell CASE 4 CASE 5: GOSUB Destex CASE 6 END_SELECT 2D_PEN_WIDTH 1: 2D_PEN_DOT: 2D_PEN_COLOR 0,0,255 RETURN ' ============================================================================== Annuler: IF typ=5: ' coller FILE_LOAD p%,ftmp$ ELSE CLIPBOARD_PASTE p%: ' retour à l'état précédent END_IF RETURN ' ============================================================================== SauvRest: i% = NUMBER_CLICK SELECT i% CASE 80: ' Ouvrir f$ = FILE_NAME$(55) IF LEN(f$)<5 THEN RETURN IF UPPER$(RIGHT$(f$,4))<>".BMP" OR UPPER$(RIGHT$(f$,4))<>".JPG" MESSAGE "Format non BMP ou JPG !"+CHR$(13)+"Chargement ignoré." ELSE FILE_SAVE p%,f$ END_IF CASE 81: ' Enregistrer f$ = FILE_NAME$(56) IF LEN(f$)<5 THEN RETURN IF UPPER$(RIGHT$(f$,4))<>".BMP" MESSAGE "Format non BMP !"+CHR$(13)+"Sauvegarde annulée." ELSE FILE_SAVE p%,f$ END_IF CASE 82: ' Aperçu FILE_SAVE p%,ftmp$ WIDTH 141,wp%/2: HEIGHT 141,hp%/2 WIDTH 140,wp%/2+16: HEIGHT 140,hp%/2+54 TOP 142,HEIGHT(141): LEFT 142,WIDTH(141)/2-40 FILE_LOAD 141,ftmp$ SHOW 140 CASE 83: ' Imprimer CASE 84: ' Quitter TERMINATE END_SELECT RETURN ' ============================================================================== Format: i% = NUMBER_CLICK SELECT i% CASE 90: ' A4 wp% = 778: hp% = wp%*297/210: HEIGHT 0,hp%+het%+54 CASE 91: ' A4 paysage wp% = 1100: hp% = 778: WIDTH 0,wp%+16: HEIGHT 0,hp%+het%+54 CASE 92: ' 1/2 A4 wp% = 778: hp% = wp%*297/420 CASE 93: ' 800x600 wp% = 800: hp% = 600 END_SELECT WIDTH p%,wp%: HEIGHT p%,hp% WIDTH 0,wp%+16: HEIGHT 0,hp%+het%+54: ' WIDTH p%,wp%: HEIGHT p%,hp% RETURN ' ============================================================================== Raztou: ' Effacement total i%=MESSAGE_CONFIRMATION_YES_NO("Effacer totalement le dessin ?") IF i% = 1 2D_FILL_COLOR 255,255,255: CLS: 2D_FILL_COLOR r%,g%,b% END_IF RETURN ' ============================================================================== Finaper: HIDE 140 RETURN ' ============================================================================== Texte: LEFT 120,LEFT(0)+WIDTH(0) SHOW 120 RETURN Ftexte: HIDE 120 MARK_ON 11 RETURN ' ============================================================================== Chp: SHOW 129 RETURN Chp1: HIDE 129 pol$ = ITEM_INDEX$(129): TEXT 121,pol$: FONT_NAME 127,pol$ RETURN Chp2: IF CLICKED(126) = 1: ' centrage IF COUNT(127) = 0 THEN RETURN j% = 0 FOR i% = 1 TO COUNT(127) a$ = TRIM$(ITEM_READ$(127,i%)): IF TEXT_WIDTH(a$,130)>j% THEN j%=TEXT_WIDTH(a$,130) NEXT i% FOR i% = 1 TO COUNT(127) a$ = TRIM$(ITEM_READ$(127,i%)) WHILE TEXT_WIDTH(a$,130)<j%:a$=" "+a$+" ": END_WHILE ITEM_DELETE 127,i%: ITEM_INSERT 127,i%,RTRIM$(a$) NEXT i% ELSE FONT_BOLD_OFF 127: FONT_ITALIC_OFF 127: FONT_UNDERLINE_OFF 127 FONT_BOLD_OFF 130: FONT_ITALIC_OFF 130: FONT_UNDERLINE_OFF 130 IF CHECKED(123)=1 THEN FONT_BOLD 127: FONT_BOLD 130 IF CHECKED(124)=1 THEN FONT_ITALIC 127: FONT_ITALIC 130 IF CHECKED(125)=1 THEN FONT_UNDERLINE 127: FONT_UNDERLINE 130 sz% = POSITION(122): FONT_SIZE 127,sz%: FONT_SIZE 130,sz% END_IF RETURN ' ============================================================================== Aide: rc$=CHR$(13)+CHR$(10) a$="DESSIN"+rc$+rc$ a$=a$+"Menu Fichier: fonctions classiques Ouvrir, Enregistrer, Aperçu, Imprimer, Quitter"+rc$ a$=a$+" NB: la fonction Imprimer n'est pas implémentée (nécessite une ressource externe)."+rc$ a$=a$+"- Menu Format: proportions A4 portrait et paysage, 1/2 A4, 800x600 pixels."+rc$ a$=a$+"- RAZ Totale: effacement total de la surface de dessin."+rc$ a$=a$+"- Annul dernier: annulation de la dernière opération (retour à l'écran précédent)."+rc$+rc$ a$=a$+"Pour dessiner: choisir d'abord la couleur et l'épaisseur du trait de dessin,"+rc$ a$=a$+"le type de figure à tracer: dessin libre, trait droit, rectangle ou carré,"+rc$ a$=a$+"ellipse ou cercle, puis cliquer l'emplacement du dessin, tracer, relâcher."+rc$ a$=a$+"Jusqu'au relâchement, le dessin provisoire sera tracé en pointillés en suivante"+rc$ a$=a$+"la souris."+rc$+rc$ a$=a$+"On peut tracer des formes géométriques élémentaires, pour les carrés et cercles"+rc$ a$=a$+"(cas particuliers des rectangles et ellipses), il faut cocher préalablement la"+rc$ a$=a$+"case 'Carré/Cercle'."+rc$ a$=a$+"Pour la fonction 'Remplissage', choisir la couleur de remplissage, puis cliquer"+rc$ a$=a$+"un point à l'intérieur de la zone à remplir."+rc$ a$=a$+"Dans le cas de dessin libre, on peut forcer le rebouclage de l'arrivée sur le point"+rc$ a$=a$+"de départ en cochant la case 'Rebouclage'."+rc$ a$=a$+"La fonction dessin libre peut servir de gomme en choisissant la couleur d'éffacement"+rc$ a$=a$+"et une largeur de trait suffisante."+rc$+rc$ a$=a$+"Une fois la figure tracée (relâchement du bouton souris), il est possible de la"+rc$ a$=a$+"déplacer finement dans le dessin, d'un nombre choisi de pixels, à l'aide des boutons"+rc$ a$=a$+"flèches (4 directions), ou de la réduire (bouton flèche bas à gauche) ou agrandir"+rc$ a$=a$+"(bouton flèche haut à droite)."+rc$+rc$ a$=a$+"Fonction Texte: le clic sur l'option provoque l'affichage d'une boîte à outil de"+rc$ a$=a$+"texte, qui permet de choisir la police, sa taille, ses enrichissements éventuels,"+rc$ a$=a$+"puis de saisir le texte à insérer. Il est possible après saisie du texte de le"+rc$ a$=a$+"centrer sur lui-même: le centrage est relatif pour l'ensemble du texte saisi."+rc$ a$=a$+"L'insertion du texte se fera au clic souris dans la zone de dessin. La couleur"+rc$ a$=a$+"du texte sera la couleur courante." MESSAGE a$ RETURN ' ==============================================================================
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 0:26 | |
| - JL35 a écrit:
- ET puis je ne veux pas mettre de l'anglais sur mes boutons, na !
Oui, les boutons sont les tiens et tu y mets ce que You want. - JL35 a écrit:
- Il y a également une fonction impression, elle n'est pas intégrée because ça nécessite une ressource externe...
Je constate que tu t’es concilié avec l’english Correction de frappe : enlever le e terminale de suivante Ligne 405 - Code:
-
a$=a$+"Jusqu'au relâchement, le dessin provisoire sera tracé en pointillés en suivante"+rc$ A part ça, merci pour le partage de cet utilitaire. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 10:14 | |
| Par contre il y a un tout petit défaut à ton squelette de logiciel: Comme tu as voulu éviter e prendre la grosse DLL de Klaus, tu n'as pas de détection de la version de Windows et d'ajustement de la taille des bordure donc sous Windows 8, pour toute les fenêtres, tu as les ascenseurs sauf si tu modifies les valeurs dans le programme. C'est dommage que tu n'es pas mis de variable pour la taille des bordures comme tu l'as fait pour les entêtes | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 12:56 | |
| Évidemment, le puriste papydall ne m'a pas loupé, tout ça à cause d'un because...
@Jicehel désolé, mais ne travaillant que sous W7 (ou à la rigueur XP) je n'ai pas été confronté à ce problème de bordures (W8 ?), et je ne vois pas du tout ce qu'il y a à corriger... Entre parenthèses, il doit bien y avoir moyen de détecter la version de Windows sans la dll de Klaus ?
Là je vais intégrer une petite amélioration, l'ajustage de la taille du texte après insertion (en plus des déplacements), comme pour les figures géométriques, ça doit être facile à faire. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:12 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:19 | |
| Merci Jean-Claude, après un coup d'oeil rapide sur ton lien il semble qu'on peut le faire en panoramic pur (Klaus), je vais regarder de plus près. Pour redimensionner la taille des textes après insertion, c'est fait (je module la taille de la police): - Code:
-
' Dessin LABEL Quit,Type,Couleur,Dessiner,ign,Destrait,Desrec,Desell,Destex,Deplacer,Annuler LABEL SauvRest,Format,Raztou,Finaper,Texte,Ftexte,Chp,Chp1,Chp2,Aide DIM wp%,hp%,het%,i%,j%,p%,x%,y%,xd%,yd%,x1%,y1%,xa%,ya%,xf%,yf%,btn,coord$,ofx,ofy,typ DIM r%,g%,b%,wt%,rx%,ry%,xc%,yc%,pi,t,f$,mm$,ftmp$,a$,pol$,sz%,rc$,iv$,hb% pi = 4*ATN(1) mm$ = "C:\PANORAMIC\Mouse.dll": ' <<<<<<<<<<<<<< CHEMIN À PRÉCISER <<<<<<<<<< ' La sub Mouse.dll de Nardo est à télécharger ici: ' http://nardo26.lescigales.org/divers-dll-28.html ' iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe": ' IrfanView (fonction impression) ftmp$ = "C:\TEMP\Tmp.bmp"
wp% = 800: hp% = 600: ' Dimensions du picture de dessin het% = 32: ' hauteur de l'en-tête contenant les choix (+1) hb% = 31: ' hauteur du bandeau supérieur form 0 (W8) hb% = hb%+20: ' + bande des menus
WIDTH 0,wp%+16: HEIGHT 0,hp%+het%+hb%+8: COLOR 0,180,255,255: ON_CLOSE 0,Quit: FONT_BOLD 0 ' BORDER_SMALL 0 p% = 1: PICTURE p%: TOP p%,het%: WIDTH p%,wp%: HEIGHT p%,hp% ' ofx = LEFT(0)+LEFT(p%)+8: ofy = TOP(0)+TOP(p%)+40 MAIN_MENU 70 SUB_MENU 71: PARENT 71,70: CAPTION 71,"Fichier" SUB_MENU 80: PARENT 80,71: CAPTION 80,"Ouvrir (JPG, BMP)" SUB_MENU 81: PARENT 81,71: CAPTION 81,"Enregistrer (BMP)" SUB_MENU 82: PARENT 82,71: CAPTION 82,"Aperçu" SUB_MENU 83: PARENT 83,71: CAPTION 83,"Imprimer" SUB_MENU 84: PARENT 84,71: CAPTION 84,"Quitter" FOR i% = 80 TO 84: ON_CLICK i%,SauvRest: NEXT i% SUB_MENU 72: PARENT 72,70: CAPTION 72,"Format" SUB_MENU 90: PARENT 90,72: CAPTION 90,"A4" SUB_MENU 91: PARENT 91,72: CAPTION 91,"A4 Paysage" SUB_MENU 92: PARENT 92,72: CAPTION 92,"½ A4" SUB_MENU 93: PARENT 93,72: CAPTION 93,"800 x 600" FOR i% = 90 TO 93: ON_CLICK i%,Format: NEXT i% SUB_MENU 73: PARENT 73,70: CAPTION 73,"RAZ Totale": ON_CLICK 73,Raztou SUB_MENU 74: PARENT 74,70: CAPTION 74,"Annul dernier": ON_CLICK 74,Annuler SUB_MENU 75: PARENT 75,70: CAPTION 75,"?": ON_CLICK 75,Aide ' Figures CONTAINER_OPTION 10: TOP 10,0: HEIGHT 10,het%: WIDTH 10,250 OPTION 11: PARENT 11,10: TOP 11,0: LEFT 11,5: CAPTION 11,"Libre": MARK_ON 11 OPTION 12: PARENT 12,10: TOP 12,15: LEFT 12,5: CAPTION 12,"Trait" OPTION 13: PARENT 13,10: TOP 13,0: LEFT 13,55: CAPTION 13,"Rectangle" OPTION 14: PARENT 14,10: TOP 14,15: LEFT 14,55: CAPTION 14,"Ellipse" OPTION 15: PARENT 15,10: TOP 15,0: LEFT 15,133: CAPTION 15,"Remplir" OPTION 16: PARENT 16,10: TOP 16,15: LEFT 16,133: CAPTION 16,"Texte" OPTION 17: PARENT 17,10: TOP 17,0: LEFT 17,195: CAPTION 17,"Coller" FOR i% = 11 TO 17: ON_CLICK i%,Type: NEXT i% typ = 0: 2D_PEN_SOLID: ' tracé libre
CONTAINER 60: TOP 60,TOP(10): HEIGHT 60,HEIGHT(10): LEFT 60,LEFT(10)+WIDTH(10) WIDTH 60,95 CHECK 61: PARENT 61,60: TOP 61,0: LEFT 61,0: CAPTION 61,"Carré/Cercle" CHECK 62: PARENT 62,60: TOP 62,15: LEFT 62,0: CAPTION 62,"Rebouclage"
' Palette CONTAINER 20: LEFT 20,LEFT(60)+WIDTH(60)+0: HEIGHT 20,22: TOP 20,TOP(10)+3: WIDTH 20,105 PICTURE 21: PARENT 21,20: TOP 21,1: WIDTH 21,25: HEIGHT 21,22: COLOR 21,0,0,0 PICTURE 22: PARENT 22,20: TOP 22,TOP(21): LEFT 22,32: WIDTH 22,90: HEIGHT 22,HEIGHT(21) 2D_TARGET_IS 22 2D_PEN_COLOR 0,0,0: 2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,12,22 2D_PEN_COLOR 255,255,255: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE 12,0,24,22 2D_PEN_COLOR 255,0,0: 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 24,0,36,22 2D_PEN_COLOR 0,255,0: 2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 36,0,48,22 2D_PEN_COLOR 0,0,255: 2D_FILL_COLOR 0,0,255: 2D_RECTANGLE 48,0,60,22 2D_PEN_COLOR 255,255,0: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 60,0,72,22 ON_CLICK 22,Couleur ' Épaisseur du trait ALPHA 30: TOP 30,TOP(20)+5: LEFT 30,LEFT(20)+110: CAPTION 30,"Trait:" SPIN 31: TOP 31,TOP(30)-4: LEFT 31,LEFT(30)+35: WIDTH 31,40 MIN 31,1: MAX 31,20: POSITION 31,1 ' Déplacement, réduction, augmentation BUTTON 40: TOP 40,TOP(31): LEFT 40,LEFT(31)+50: HEIGHT 40,23: WIDTH 40,20 BUTTON 41: TOP 41,TOP(40): LEFT 41,LEFT(40)+20: HEIGHT 41,23: WIDTH 41,20 BUTTON 42: TOP 42,TOP(40): LEFT 42,LEFT(41)+20: HEIGHT 42,23: WIDTH 42,20 BUTTON 43: TOP 43,TOP(40): LEFT 43,LEFT(42)+20: HEIGHT 43,23: WIDTH 43,20 BUTTON 44: TOP 44,TOP(40): LEFT 44,LEFT(43)+20: HEIGHT 44,23: WIDTH 44,20 BUTTON 45: TOP 45,TOP(40): LEFT 45,LEFT(44)+20: HEIGHT 45,23: WIDTH 45,20 FOR i%=40 TO 45 FONT_NAME i%,"Wingdings": CAPTION i%,CHR$(191+i%): ON_CLICK i%,Deplacer NEXT i% CAPTION 44,CHR$(229): CAPTION 45,CHR$(228) SPIN 46: TOP 46,TOP(40): LEFT 46,LEFT(45)+20: WIDTH 46,40: POSITION 46,5: MIN 46,1: MAX 46,50 ALPHA 47: TOP 47,TOP(30): WIDTH 47,10: LEFT 47,LEFT(46)+40: CAPTION 47,"pixels"
OPEN_DIALOG 55: FILTER 55,"fichier image BMP ou JPG|*.bmp*.jpg" SAVE_DIALOG 56: FILTER 56,"fichier image .BMP|*.bmp" IMAGE 57 ' Texte FORM 120: HIDE 120: BORDER_SMALL 120: COLOR 120,0,255,255 CAPTION 120,"- Texte à insérer -" TOP 120,50: LEFT 120,LEFT(0)+WIDTH(0): WIDTH 120,500: HEIGHT 120,600: FONT_BOLD 120 ON_CLOSE 120,Ftexte EDIT 121: PARENT 121,120: TOP 121,5: LEFT 121,5: WIDTH 121,150 TEXT 121,"Arial": ON_CLICK 121,Chp SPIN 122: PARENT 122,120: TOP 122,TOP(121): LEFT 122,WIDTH(121)+10: WIDTH 122,45 MIN 122,6: MAX 122,255: POSITION 122,12: ON_CHANGE 122,Chp2 CHECK 123: PARENT 123,120: TOP 123,TOP(122)+3: LEFT 123,LEFT(122)+50 CAPTION 123,"G" CHECK 124: PARENT 124,120: TOP 124,TOP(123): LEFT 124,LEFT(123)+30 CAPTION 124,"I" CHECK 125: PARENT 125,120: TOP 125,TOP(123): WIDTH 125,50: LEFT 125,LEFT(124)+30 CAPTION 125,"S" CHECK 126: PARENT 126,120: TOP 126,TOP(123): WIDTH 126,55: LEFT 126,LEFT(125)+30 CAPTION 126,"Centrer" FOR i% = 123 TO 126: ON_CLICK i%,Chp2: NEXT i% pol$ = "Arial": sz% = 12 MEMO 127: PARENT 127,120: TOP 127,30: LEFT 127,0: WIDTH 127,WIDTH(120)-16 HEIGHT 127,HEIGHT(120)-70: FONT_NAME 127,pol$: FONT_SIZE 127,sz%: FONT_BOLD_OFF 127 LIST 129: PARENT 129,120: TOP 129,TOP(121)+25: LEFT 129,5: WIDTH 129,200 HEIGHT 129,HEIGHT(120)-65: FONT_NAMES_LOAD 129: ON_CLICK 129,Chp1: HIDE 129 COLOR 129,255,255,190 FOR i% = COUNT(129) TO 1 STEP -1 IF LEFT$(ITEM_READ$(129,i%),1)="@" THEN ITEM_DELETE 129,i% NEXT i% LIST 130: PARENT 130,120: HIDE 130
FORM 140: HIDE 140: BORDER_SMALL 140: COLOR 140,0,255,255: CAPTION 140,"- Aperçu -" PICTURE 141: PARENT 141,140: STRETCH_ON 141 BUTTON 142: PARENT 142,140: HEIGHT 142,20: TOP 142,HEIGHT(140)-29: LEFT 142,WIDTH(140)/2-40 CAPTION 142,"OK": ON_CLICK 142,Finaper
2D_TARGET_IS p%: DLL_ON mm$ coord$ = STRING$(8," ") btn = DLL_CALL1("GetMouseXY",ADR(coord$)): ' état boutons et coordonnées souris ofx = LEFT(0)+LEFT(p%)+8: ofy = TOP(0)+TOP(p%)+hb% ofy = TOP(0)+TOP(p%)+30+20 WHILE btn<>2: ' Boucle d'attente de clic dans la surface de dessin xd% = VAL(LEFT$(coord$,4))-ofx: yd% = VAL(RIGHT$(coord$,4))-ofy IF xd%>=0 AND yd%>=0 AND xd%<wp% AND yd%<hp%: ' souris dans le dessin CAPTION 0,"Fct="+STR$(typ)+" x= "+STR$(xd%)+" y= "+STR$(yd%) IF btn=1: ' bouton gauche enfoncé GOSUB Dessiner END_IF END_IF PAUSE 100 btn = DLL_CALL1("GetMouseXY",ADR(coord$)) END_WHILE END ' ============================================================================== Quit: TERMINATE ' ============================================================================== Type: ' Type de dessin: libre, rectangle, cercle/ellipse, ou autre (à voir)... FOR i% = 11 TO 20 IF CHECKED(i%)=1 THEN typ = i%-11: EXIT_FOR NEXT i% SELECT typ CASE 0: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): ' tracé libre CASE 1: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Trait CASE 2: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Rectangle CASE 3: 2D_PEN_DOT: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,255: ' Ellipse CASE 4: ' Remplir CASE 5: ' Texte CASE 6: ' Coller END_SELECT IF typ = 5 THEN GOSUB Texte RETURN ' ============================================================================== Couleur: ' Couleur du tracé x%=MOUSE_X_POSITION(22): y%=MOUSE_Y_POSITION(22) r%=COLOR_PIXEL_RED(22,x%,y%): g%=COLOR_PIXEL_GREEN(22,x%,y%): b%=COLOR_PIXEL_BLUE(22,x%,y%) COLOR 21,r%,g%,b%: 2D_PEN_COLOR r%,g%,b% RETURN ' ============================================================================== Dessiner: xd% = MOUSE_X_POSITION(p%): yd% = MOUSE_Y_POSITION(p%) xa%=xd%: ya%=yd%: x1%=xd%: y1%=yd% btn = 1 IF typ = 6: ' coller FILE_SAVE p%,ftmp$: PAUSE 300: ' sauvegarde état précédent CLIPBOARD_PASTE 57: 2D_IMAGE_PASTE 57,xd%,yd%: RETURN: ' coller le clipboard END_IF CLIPBOARD_COPY p% WHILE btn = 1 btn = DLL_CALL1("GetMouseXY",ADR(coord$)) x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%) IF x%<0 OR y%<0 OR x%>WIDTH(p%) OR y%>HEIGHT(p%) THEN GOTO ign CAPTION 0,"Fct="+STR$(typ)+" x= "+STR$(x%)+" y= "+STR$(y%) IF x%<>x1% OR y%<>y1% SELECT typ 2D_PEN_COLOR 0,0,0 CASE 0: ' tracé libre 2D_PEN_COLOR r%,g%,b% 2D_PEN_WIDTH POSITION(31): 2D_LINE x1%,y1%,x%,y% CASE 1: ' trait CLIPBOARD_PASTE p%: 2D_LINE xd%,yd%,x%,y% CASE 2: ' rectangle/carré CLIPBOARD_PASTE p% IF CHECKED(61) = 1 THEN y% = yd%+x%-xd%: ' carré 2D_LINE xd%,yd%,x%,yd%: 2D_POLY_TO x%,y%: 2D_POLY_TO xd%,y% 2D_POLY_TO xd%,yd% CASE 3: ' ellipse/cercle CLIPBOARD_PASTE p% rx%=(x%-xd%)/2: ry%=(y%-yd%)/2 IF CHECKED(61)=1 THEN ry%=rx% xc%=xd%+rx%: yc%=yd%+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 CASE 4: ' remplir CASE 5: ' texte CASE 6: ' coller END_SELECT x1%=x%: y1%=y% END_IF ign: PAUSE 50 END_WHILE ' bouton gauche relâché: tracé définitif IF typ = 0 IF CHECKED(62)=1 THEN 2D_LINE x%,y%,xa%,ya%: ' rebouclage tracé libre ELSE CLIPBOARD_PASTE p%: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): 2D_PEN_COLOR r%,g%,b% xa%=xd%: ya%=yd%: xf%=x%: yf%=y% SELECT typ CASE 1: GOSUB Destrait: ' trait CASE 2: GOSUB Desrec: ' rectangle/carré CASE 3: GOSUB Desell: ' ellipse/cercle CASE 4: 2D_FLOOD xa%,ya%,r%,g%,b%: ' remplir CASE 5: GOSUB Destex CASE 6: ' coller END_SELECT 2D_PEN_WIDTH 1: 2D_PEN_DOT: 2D_PEN_COLOR 0,0,255 END_IF RETURN ' ============================================================================== Destrait: 2D_LINE xa%,ya%,xf%,yf% RETURN ' ============================================================================== Desrec: IF CHECKED(61) = 1 THEN yf% = yd%+xf%-xd% 2D_LINE xa%,ya%,xf%,ya%: 2D_POLY_TO xf%,yf%: 2D_POLY_TO xa%,yf%: 2D_POLY_TO xa%,ya% RETURN ' ============================================================================== Desell: rx%=(xf%-xa%)/2: ry%=(yf%-ya%)/2 IF CHECKED(61)=1 THEN ry%=rx% xc%=xa%+rx%: yc%=ya%+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 RETURN ' ============================================================================== Destex: IF COUNT(127) = 0 THEN RETURN PRINT_TARGET_IS p%: FONT_NAME p%,pol$ FONT_BOLD_OFF p%: FONT_ITALIC_OFF p%: FONT_UNDERLINE_OFF p% IF CHECKED(123)=1 THEN FONT_BOLD p% IF CHECKED(124)=1 THEN FONT_ITALIC p% IF CHECKED(125)=1 THEN FONT_UNDERLINE p% FONT_SIZE p%,sz%: FONT_COLOR p%,r%,g%,b%: 2D_FILL_COLOR 255,255,255 x% = xa%: y% = ya% FOR i% = 1 TO COUNT(127) a$ = ITEM_READ$(127,i%) PRINT_LOCATE x%,y%: PRINT a$: y%=y%+TEXT_HEIGHT(a$,p%) NEXT i% RETURN ' ============================================================================== Deplacer: IF typ = 0 THEN RETURN: ' (tracé libre, non déplaçable) i% = NUMBER_CLICK: j% = POSITION(46) SELECT i% CASE 40: xa%=xa%-j%: xf%=xf%-j%: ' gauche CASE 41: xa%=xa%+j%: xf%=xf%+j%: ' droite CASE 42: ya%=ya%-j%: yf%=yf%-j%: ' haut CASE 43: ya%=ya%+j%: yf%=yf%+j%: ' bas CASE 44: xf%=xf%-j%: yf%=yf%-j%: ' diminuer IF typ = 5 THEN IF sz%>4 THEN sz% = sz%-1 CASE 45: xf%=xf%+j%: yf%=yf%+j%: ' augmenter IF typ = 5 THEN sz% = sz%+1 END_SELECT CLIPBOARD_PASTE p%: 2D_PEN_SOLID: 2D_PEN_WIDTH POSITION(31): 2D_PEN_COLOR r%,g%,b% SELECT typ CASE 1: GOSUB Destrait CASE 2: GOSUB Desrec CASE 3: GOSUB Desell CASE 4 CASE 5: GOSUB Destex CASE 6 END_SELECT 2D_PEN_WIDTH 1: 2D_PEN_DOT: 2D_PEN_COLOR 0,0,255 RETURN ' ============================================================================== Annuler: IF typ=6: ' annuler coller CLS: FILE_LOAD p%,ftmp$: PAUSE 300 ELSE CLIPBOARD_PASTE p%: ' retour à l'état précédent END_IF RETURN ' ============================================================================== SauvRest: i% = NUMBER_CLICK SELECT i% CASE 80: ' Ouvrir f$ = FILE_NAME$(55) IF LEN(f$)<5 THEN RETURN IF UPPER$(RIGHT$(f$,4))<>".BMP" OR UPPER$(RIGHT$(f$,4))<>".JPG" MESSAGE "Format non BMP ou JPG !"+CHR$(13)+"Chargement ignoré." ELSE FILE_SAVE p%,f$ END_IF CASE 81: ' Enregistrer f$ = FILE_NAME$(56) IF LEN(f$)<5 THEN RETURN IF UPPER$(RIGHT$(f$,4))<>".BMP" MESSAGE "Format non BMP !"+CHR$(13)+"Sauvegarde annulée." ELSE FILE_SAVE p%,f$ END_IF CASE 82: ' Aperçu FILE_SAVE p%,ftmp$ WIDTH 141,wp%/2: HEIGHT 141,hp%/2 WIDTH 140,wp%/2+16: HEIGHT 140,hp%/2+54 TOP 142,HEIGHT(141): LEFT 142,WIDTH(141)/2-40 FILE_LOAD 141,ftmp$ SHOW 140 CASE 83: ' Imprimer CLIPBOARD_COPY p% ' EXECUTE_WAIT iv$+" /clippaste /print" CASE 84: ' Quitter TERMINATE END_SELECT RETURN ' ============================================================================== Format: i% = NUMBER_CLICK SELECT i% CASE 90: ' A4 wp% = 778: hp% = wp%*297/210: HEIGHT 0,hp%+het%+hb%+8 CASE 91: ' A4 paysage wp% = 1100: hp% = 778: WIDTH 0,wp%+50: HEIGHT 0,hp%+het%+hb%+8 CASE 92: ' 1/2 A4 wp% = 778: hp% = wp%*297/420 CASE 93: ' 800x600 wp% = 800: hp% = 600: WIDTH 0,wp%+50: HEIGHT 0,hp%+het%+hb%+8 END_SELECT WIDTH p%,wp%: HEIGHT p%,hp% WIDTH 0,wp%+16: HEIGHT 0,hp%+het%+hb%+8 RETURN ' ============================================================================== Raztou: ' Effacement total i%=MESSAGE_CONFIRMATION_YES_NO("Effacer totalement le dessin ?") IF i% = 1 WIDTH p%,wp%: HEIGHT p%,wp% 2D_FILL_COLOR 255,255,255: CLS: 2D_FILL_COLOR r%,g%,b% END_IF RETURN ' ============================================================================== Finaper: HIDE 140 RETURN ' ============================================================================== Texte: LEFT 120,LEFT(0)+WIDTH(0) SHOW 120 RETURN Ftexte: HIDE 120 MARK_ON 11 RETURN ' ============================================================================== Chp: SHOW 129 RETURN Chp1: HIDE 129 pol$ = ITEM_INDEX$(129): TEXT 121,pol$: FONT_NAME 127,pol$ RETURN Chp2: IF CLICKED(126) = 1: ' centrage IF COUNT(127) = 0 THEN RETURN j% = 0 FOR i% = 1 TO COUNT(127) a$ = TRIM$(ITEM_READ$(127,i%)): IF TEXT_WIDTH(a$,130)>j% THEN j%=TEXT_WIDTH(a$,130) NEXT i% FOR i% = 1 TO COUNT(127) a$ = TRIM$(ITEM_READ$(127,i%)) WHILE TEXT_WIDTH(a$,130)<j%:a$=" "+a$+" ": END_WHILE ITEM_DELETE 127,i%: ITEM_INSERT 127,i%,RTRIM$(a$) NEXT i% ELSE FONT_BOLD_OFF 127: FONT_ITALIC_OFF 127: FONT_UNDERLINE_OFF 127 FONT_BOLD_OFF 130: FONT_ITALIC_OFF 130: FONT_UNDERLINE_OFF 130 IF CHECKED(123)=1 THEN FONT_BOLD 127: FONT_BOLD 130 IF CHECKED(124)=1 THEN FONT_ITALIC 127: FONT_ITALIC 130 IF CHECKED(125)=1 THEN FONT_UNDERLINE 127: FONT_UNDERLINE 130 sz% = POSITION(122): FONT_SIZE 127,sz%: FONT_SIZE 130,sz% END_IF RETURN ' ============================================================================== Aide: rc$=CHR$(13)+CHR$(10) a$="===== DESSIN ====="+rc$+rc$ a$=a$+"- Menu Fichier: fonctions classiques Ouvrir, Enregistrer, Aperçu, Imprimer, Quitter"+rc$ a$=a$+" NB: la fonction Imprimer n'est pas implémentée (nécessite une ressource externe)."+rc$ a$=a$+"- Menu Format: proportions A4 portrait et paysage, 1/2 A4, 800x600 pixels."+rc$ a$=a$+"- RAZ Totale: effacement total de la surface de dessin."+rc$ a$=a$+"- Annul dernier: annulation de la dernière opération (retour à l'écran précédent)."+rc$+rc$
a$=a$+"Pour dessiner: choisir d'abord la couleur et l'épaisseur du trait de dessin, le type de"+rc$ a$=a$+"figure à tracer: dessin libre, trait droit, rectangle ou carré, ellipse ou cercle, puis"+rc$ a$=a$+"cliquer l'emplacement du dessin, tracer, relâcher."+rc$ a$=a$+"Jusqu'au relâchement, le dessin provisoire sera tracé en pointillés en suivant la souris"+rc$+rc$
a$=a$+"On peut tracer des formes géométriques élémentaires. Pour les carrés et cercles (cas"+rc$ a$=a$+"particuliers des rectangles et ellipses), il faut cocher préalablement la case 'Carré/Cercle'."+rc$ a$=a$+"Pour la fonction 'Remplissage', choisir la couleur de remplissage, puis cliquer un point"+rc$ a$=a$+"à l'intérieur de la zone à remplir."+rc$ a$=a$+"Dans le cas de dessin libre, on peut forcer le rebouclage de l'arrivée sur le point de départ"+rc$ a$=a$+"en cochant la case 'Rebouclage'."+rc$ a$=a$+"La fonction dessin libre peut servir de gomme en choisissant la couleur d'effacement et"+rc$ a$=a$+"une largeur de trait suffisante."+rc$+rc$
a$=a$+"Une fois la figure tracée (relâchement du bouton souris), il est possible soit d'annuler"+rc$ a$=a$+"purement et simplement l'opération (menu 'Annul dernier'), soit de la déplacer finement"+rc$ a$=a$+"dans le dessin, d'un nombre choisi de pixels, à l'aide des boutons flèches (4 directions),"+rc$ a$=a$+"ou de la réduire (bouton flèche bas à gauche) ou agrandir (bouton flèche haut à droite)."+rc$+rc$
a$=a$+"Fonction Texte: le clic sur l'option provoque l'affichage d'une boîte à outil de texte,"+rc$ a$=a$+"qui permet de choisir la police, sa taille, ses enrichissements éventuels, puis de saisir"+rc$ a$=a$+"le texte à insérer. Il est possible après saisie du texte de le centrer sur lui-même:"+rc$ a$=a$+"le centrage est relatif (par rapport à la plus longue ligne) pour l'ensemble du texte saisi."+rc$ a$=a$+"L'insertion du texte se fera au clic souris dans la zone de dessin. La couleur du texte"+rc$ a$=a$+"sera la couleur courante."+rc$ a$=a$+"Comme pour les figures, on peut après insertion le déplacer ou le redimensionner."+rc$+rc$
a$=a$+"Collage d'un graphique: cocher d'abord l'option 'Coller', puis à l'aide d'un programme"+rc$ a$=a$+"externer 'copier' une image dans le presse-papier, puis cliquer l'emplacement récepteur"+rc$ a$=a$+"dans la zone de dessin (éviter de faire chevaucher le dessin par la fenêtre du programme"+rc$ a$=a$+"externe sous peine d'apparition d'effets indésirables). Il est prudent de faire une"+rc$ a$=a$+"sauvegarde préalable à l'opérarion de collage..." MESSAGE a$ RETURN ' ============================================================================== Un truc qui me chiffonne concernant la taille des bordures: Est-ce que sous W8 les paramètres des fenêtres Panoramic (Form) sont différents de W7 ? qui sont ceux-ci: - bandeau supérieur: 30 pixels (ou 26 pixels si Border_Small) - bordures gauche, droite et inférieure: 8 pixels Edit: modif pour faire disparaître les barres de défilement au changement de format. Et mise à jour de l'aide. ET ajout de tempos dans la fonction coller.
Dernière édition par JL35 le Jeu 26 Fév 2015 - 22:16, édité 6 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:32 | |
| Une petite SUB simple pour détecter la taille des bords et du bandeau suivant la version de Windows. Merci à Klaus. - Code:
-
dim bord%, bandeau% detection_des_dimensions_des_fenetres() print " largeur d'un bord: " + str$(bord%) print " hauteur du bandeau: " + str$(bandeau%)
END '=============================================== SUB detection_des_dimensions_des_fenetres() full_space 0 if object_exists(1)=0 memo 1 : full_space 1 bord% = (width(0)-width(1))/2 bandeau% = height(0) - height(1) - bord% delete 1 ' hide 0:' à mettre en service suivant que..... else message "La SUB detection_des_dimensions_des_fenetres() doit être applée en priorité" : terminate end_if END_SUB
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:39 | |
| On s'est croisés JC Je modifierais même un peu: - Code:
-
dim bord%, bandeau% detection_des_dimensions_des_fenetres() print " largeur d'un bord: " + str$(bord%) print " hauteur du bandeau: " + str$(bandeau%) END '=============================================== SUB detection_des_dimensions_des_fenetres() DIM_LOCAL w,h w=WIDTH(0): h=HEIGHT(0): full_space 0 memo 900 : full_space 900 bord% = (width(0)-width(900))/2 bandeau% = height(0) - height(900) - bord% delete 900: WIDTH 0,w: HEIGHT 0,h END_SUB (dans ta sub tu testes l'existence du memo, mais comme tu le supprimes à chaque passage...) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:48 | |
| Ce qui est curieux c'est que sous W8 seul le bandeau est différent (31 Pixels).
Cela explique pourquoi certains codes (créer sous W7) n'ont pas besoin d'être rectifiés pour W8.
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 13:53 | |
| S'il n'y a que ça, effectivement pas la peine de se casser la tête, autant prendre ses aises et compter 31 pixels dans tous les cas...
Je mets donc ma variable het% (ligne 14) à 31 au lieu de 30. Mais en cas de changement de format, je n'arrive pas à éviter dans tous les cas l'apparition des barres de défilement... ça dépend si on définit d'abord les dimensions du Form puis du Picture, ou l'inverse. Il suffit de tirer un peu vers le bas ou la droite pour les faire disparaître, mais ce n'est pas très joli. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 14:08 | |
| - JL35 a écrit:
- Entre parenthèses, il doit bien y avoir moyen de détecter la version de Windows sans la dll de Klaus ?
Voici une solution brute - Code:
-
execute_wait "cmd /c winver" Puis il faut faire ce qu'il faut pour en exploiter le résultat | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 14:12 | |
| Je n'avais pas cité ton nom, mais je me doutais bien qu'il y avait une solution simple et qu'elle viendrait de toi, notre savant papydall. A mettre sous le coude, ça peut servir, pour l'instant j'ai une solution rustique mais qui doit être satisfaisante.
L'inconvénient de winver c'est que le résultat est sous forme d'une fenêtre graphique, donc pas très exploitable par programme, à moins qu'il y ait un paramètre ? | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 14:19 | |
| C'est ce que j'ai appelé une solution brute ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 14:26 | |
| Il y a la commander ' ver' au lieu de ' winver' qui donne la version système sous forme numérique, qu'il faut interpréter ensuite... Ainsi pour moi ça me renvoie 6.1.7601, ce qui correspond à Windows 7, Service Pack 1. Pas très parlant, il faut avoir la table de correspondance (je l'ai, allez, je partage ! ): - Code:
-
execute_wait "Cmd.exe /c ver | clip" print clipboard_string_paste$ end Windows 1.0 1.04 Windows 2.0 2.11 Windows 3.0 3 Windows 95 4.0.950 Windows XP 5.1.2600 Windows XP Professional x64 Edition 5.2.3790 Windows Home Server 5.2.3790 Windows Server 2003 5.2.3790 Windows Server 2003, Service Pack 1 5.2.3790.1180 Windows Server 2003 5.2.3790.1218 Windows Vista, RTM (Release to Manufacturing) 6.0.6000.16386 Windows Vista 6.0.6000 / Windows Server 2008 6.0.6001 Windows Vista, Service Pack 2 / Server 2008 Sp2 6.0.6002 Windows 7, RTM (Release to Manufacturing) 6.1.7600.16385 Windows 7 6.1.7600 Windows 7, Service Pack 1 6.1.7601 Windows Server 2008 R2, RTM (Release to Manufacturing) 6.1.7600.16385 Windows 8, RTM (Release to Manufacturing) 6.2.9200.16384 Windows 8 6.2.9200 Windows Server 2012 6.2.9200 Windows 8.1 6.3.9600.16384.130821-1623 Windows Server 2012 R2 6.3.9600 Windows 10 Technical Preview 6.4.9841
Dernière édition par JL35 le Jeu 26 Fév 2015 - 14:35, édité 1 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: Dessin(x) Jeu 26 Fév 2015 - 14:33 | |
| Je connais cette commande et elle me renvoie exactement 6.1.7601, comme chez toi. Je n'ai jamais su interpréter ce résultat. Moi, je suis sous Windows 7 Edition Intégrale. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 14:36 | |
| Voilà ami papydall, tu as la réponse ci-dessus ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 15:22 | |
| Veuillez tester ce code - Code:
-
rem ============================================================================ rem Détermination de la sersion de Windows rem ============================================================================ Window_Ver() end rem ============================================================================ SUB Window_Ver() dim_local v$,v1$,v2$,w$,n v1$ = "version" execute_wait "cmd /c ver | clip" v$ = CLIPBOARD_STRING_PASTE$ n = instr(v$,v1$) v2$ = mid$(v$,n+8,3) if v2$ ="6.3" then w$ = "Windows 8.1" if v2$ ="6.2" then w$ = "Windows 8" if v2$ ="6.1" then w$ = "Windows 7" if v2$ ="6.0" then w$ = "Windows Vista" if v2$ ="5.1" then w$ = "Windows XP" if v2$ ="4.9" then w$ = "Windows ME" if v2$ ="5.0" then w$ = "Windows 2000" if v2$ ="4.1" then w$ = "Windows 98" if v2$ ="4.0" then w$ = "Windows 95"
message "Votre version est : " +w$
END_SUB rem ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 15:22 | |
| Je vois que vous avez trouvé des solutions sympas. Bon, je bricole encore dans la chambre de ma fille et je regarderais plus attentivement tout ça. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 16:29 | |
| J'ai agrandi un peu les tolérances pour faire disparaître les barres de défilement en cas de changement de format, et pour ne pas être obligé de tester la version de Windows... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 18:00 | |
| @JL35 Je viens de tester ta version de la page précédente. Il y a toujours les ascenseurs, mais je pense avoir trouvé pourquoi. Si je modifie la ligne 15 - Code:
-
hb% = 39: ' hauteur du bandeau supérieur et bordure inférieure form 0 (W8)
Là c'est bon ! (38 c'est plus bon) Je pense que hb%=39 doit se lire 31+8 (Hauteur du bandeau+hauteur du bord inférieur, d'ailleurs tu l'écris en commentaire ). @Papydall ta SUB Window_Ver() fonctionne bien, la fenêtre noir n’apparaît qu'une fraction de seconde. On peut l'utiliser l'ors d'une installation. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 18:27 | |
| @Jean Claude Je suis quand même perplexe, 30+8 (W7) ou 31+8 (W8) d'accord pour bordure normale, mais moi j'ai mis Border_Small 0, ce qui doit faire 26+8 (et sans doute 27+8 en W8) Bon, si ça marche avec 39 mettons 39, on ne va pas pinailler, au prix où est le pixel ! Papydall, tu aurais pu l'appeler Window s_Ver au lieu de Window_Ver ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dessin(x) Jeu 26 Fév 2015 - 18:33 | |
| En border_small, voici ce que donne mon petit code: - Code:
-
fenêtre normale: Largeur totale: 600 Hauteur totale: 480 mémo: Largeur utile: 584 Hauteur utile: 441 bords gauche, bas, droit: 8 titre: 31
fenêtre plein écran: Largeur totale: 1366 Hauteur totale: 768 mémo: Largeur utile: 1350 Hauteur utile: 729 bords gauche, bas, droit: 8 titre: 31
fenêtre plein écran avec menu: Largeur totale: 1366 Hauteur totale: 768 mémo: Largeur utile: 1350 Hauteur utile: 709 bords gauche, bas, droit: 8 titre: 31 menu: 20
dimensions écran: Largeur utile: 1366 Hauteur utile: 768 Donc, sous W8, pas de changement entre border_normal et border_small: bord = 8 titre = 31 menu = 20 La seule différence est la disparition des boutons Minimaliser et Maximiser | |
| | | Contenu sponsorisé
| Sujet: Re: Dessin(x) | |
| |
| | | | Dessin(x) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |