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 à main levée | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Dessin à main levée Dim 27 Sep 2015 - 23:32 | |
| Une petite sub de dessin à main levée toute simple (suite au bug signalé par Klaus sur les fonctions souris). C'est vraiment rudimentaire et ça ne demande qu'à être étoffé, c'est tout simple, et il n'y a pas de timer. Avec un exemple d'appel: - Code:
-
PICTURE 1: FULL_SPACE 1 Dessin(1): ' Message "Terminé !" TERMINATE
SUB Dessin(p%) ' dessin à main levée dans le picture p% DIM_LOCAL fm%,i%,j%,xd,yd,x,y IF LABEL("Qdes")=0 THEN LABEL Qdes fm% = 900 FORM fm%: TOP fm%,TOP(p%): LEFT fm%,LEFT(p%)+WIDTH(p%)+15: WIDTH fm%,150 HEIGHT fm%,160: BORDER_SMALL fm%: FONT_NAME fm%,"Arial": FONT_BOLD fm% COLOR fm%,180,255,255: CAPTION fm%," - DESSIN -" i%=fm%+1: ALPHA i%: PARENT i%,fm%: TOP i%,5:LEFT i%,5: CAPTION i%,"Épaiss. Trait :" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)-3: LEFT i%,85: WIDTH i%,45 MIN i%,1: MAX i%,20: POSITION i%,1 i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,27: LEFT i%,5 CAPTION i%,"Couleur Trait :"+CHR$(10)+" R= G= B=" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+27: LEFT i%,2: WIDTH i%,40 MIN i%,0: MAX i%,255: POSITION i%,0 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 FOR j%=i%-2 TO i%: MIN j%,0: MAX j%,255: POSITION j%,0: NEXT j% i%=i%+1:BUTTON i%: PARENT i%,fm%: TOP i%,HEIGHT(fm%)-60: LEFT i%,WIDTH(fm%)/2-40 CAPTION i%,Quitter: ON_CLICK i%,Qdes 2D_TARGET_IS p% WHILE 2 > 1 WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE xd = MOUSE_X_POSITION(p%): yd = MOUSE_Y_POSITION(p%): ' point de départ du dessin 2D_PEN_WIDTH POSITION(fm%+2) 2D_PEN_COLOR POSITION(fm%+4),POSITION(fm%+5),POSITION(fm%+6) WHILE MOUSE_LEFT_UP(p%) = 0 x = MOUSE_X_POSITION(p%): y = MOUSE_Y_POSITION(p%) CAPTION 0, "x="+STR$(x)+" y="+STR$(y) 2D_LINE xd,yd,x,y: xd = x: yd = y: PAUSE 100 END_WHILE END_WHILE Qdes: DELETE fm% END_SUB | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 8:14 | |
| c cool ton p'tit programme avec un peut plus de fonction on peut le classé avec les grand paint et ceux du domaine public | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 28 Sep 2015 - 10:12 | |
| Whoua !... Super Sub ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 11:26 | |
| Ca fonctionne parfaitement. Bravo JL35 ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 13:06 | |
| Merci les amis ! Ça peut servir entre autres à 'détourer' une partie d'image avec du noir pur, pour en faire un sprite. Comme vous le savez certainement ( ), le noir pur est la couleur de transparence pour apposer un sprite sur un Scene_2D, pratique pour incruster une image sur une autre. Après, comme on ne peut pas faire un File_Save du résultat (dommage...), il faut faire une capture de la zone écran concernée et la sauvegarder. Par exemple: (cherchez l'erreur...) @pascal10000, la sub de dessin plus complète (avec dessin à main levée, figures géométriques, remplissages de couleurs), ça a déjà été fait par ailleurs et déposé ici, je ne sais plus trop où, en tout cas elle est à disposition. L'avantage de celle ci-dessus c'est qu'elle est simple et très courte. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 13:44 | |
| Oui c'est très bon, mais je crois que tu l'as déjà fait..... Par contre, je vais finir par me facher . Tel quel, je ne vois même pas le bouton quitter. Toujours le même problème des dimensions bandeau et bord sous W8 ou W10. Bon, vu ton grand age, je te pardonne A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 14:21 | |
| Salut Jean Claude, Oui je l'avais déjà fait (l'image ci-dessus), mais pas de cette façon (Sprite sur Scene_2D, là c'est plus facile à faire, et rapide). Quant aux bordures... ils vont finir par m'obliger à passer sous W10 ! Non, je résiste ! Tu rallonges le Form fm%, de 10 par exemple, ou plus, ça devrait aller. Bon, allez, prends plutôt la version ci-dessous, et j'ai ajouté une fonction de remplissage de zone avec une couleur donnée, c'est bien pratique (Check Fill), Check, définir la couleur de remplissage, et cliquer à l'endroit voulu - Code:
-
PICTURE 1: FULL_SPACE 1 Dessin(1): ' Message "Terminé !" TERMINATE
SUB Dessin(p%) ' dessin à main levée dans le picture p% DIM_LOCAL fm%,i%,j%,xd%,yd%,x%,y%,sp1%,sp2%,ff% IF LABEL("Qdes")=0 THEN LABEL Qdes fm% = 900 FORM fm%: TOP fm%,TOP(p%): LEFT fm%,LEFT(p%)+WIDTH(p%)+15: WIDTH fm%,150 HEIGHT fm%,220: BORDER_SMALL fm%: FONT_NAME fm%,"Arial": FONT_BOLD fm% COLOR fm%,255,255,164: CAPTION fm%," - DESSIN -" i%=fm%+1: ALPHA i%: PARENT i%,fm%: TOP i%,5:LEFT i%,5: CAPTION i%,"Épaiss. Trait :" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)-3: LEFT i%,85: WIDTH i%,45 MIN i%,1: MAX i%,20: POSITION i%,1 i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,27: LEFT i%,5 CAPTION i%,"Couleur Trait :"+CHR$(10)+" R= G= B=" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+27: LEFT i%,2: WIDTH i%,40 MIN i%,0: MAX i%,255: sp1% = i% i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255 FOR j%=sp1% TO i%: MIN j%,0: MAX j%,255: POSITION j%,0: NEXT j% i%=i%+1: CHECK i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+30: LEFT i%,5: WIDTH i%,100 CAPTION i%,"Fill, couleur :": ff% = i% i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,5 CAPTION i%," R= G= B=" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,2: WIDTH i%,40 MIN i%,0: MAX i%,255: sp2% = i% i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 FOR j%=sp2% TO i%: MIN j%,0: MAX j%,255: POSITION j%,0: NEXT j% i%=i%+1:BUTTON i%: PARENT i%,fm%: TOP i%,HEIGHT(fm%)-60: LEFT i%,WIDTH(fm%)/2-40 CAPTION i%,Quitter: ON_CLICK i%,Qdes 2D_TARGET_IS p% WHILE 2 > 1 WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE xd% = MOUSE_X_POSITION(p%): yd% = MOUSE_Y_POSITION(p%): ' point de départ du dessin 2D_PEN_WIDTH POSITION(fm%+2) 2D_PEN_COLOR POSITION(sp1%),POSITION(sp1%+1),POSITION(sp1%+2): ' couleur WHILE MOUSE_LEFT_UP(p%) = 0 x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%) CAPTION 0, "x="+STR$(x%)+" y="+STR$(y%) IF CHECKED(ff%) = 1 2D_FLOOD x%,y%,POSITION(sp2%),POSITION(sp2%+1),POSITION(sp2%+2): ' fill PAUSE 200 ELSE 2D_LINE xd%,yd%,x%,y%: xd% = x%: yd% = y%: PAUSE 50 END_IF END_WHILE END_WHILE Qdes: DELETE fm% END_SUB Signé: le vieux, le vieillard, mathusalem
Dernière édition par JL35 le Lun 28 Sep 2015 - 14:44, édité 4 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 à main levée Lun 28 Sep 2015 - 14:32 | |
| Pas mal JL35 cette petite SUB… je pourrais dessiner ta mobylette où il y est mention sur un autre topic. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin à main levée Lun 28 Sep 2015 - 15:28 | |
| Ça risque de faire un peu plus artisanal... à main levée, enfin, à souris levée... Du coup j'ai ajouté une fonction d'annulation du dernier tracé, pour le cas de dérapage dans le dessin, ou d'oubli de décocher le remplissage : - Code:
-
PICTURE 1: FULL_SPACE 1 Dessin(1): ' Message "Terminé !" TERMINATE
SUB Dessin(p%) ' dessin à main levée dans le picture p% DIM_LOCAL fm%,i%,j%,xd%,yd%,x%,y%,sp1%,sp2%,ff% IF LABEL("Annder")=0 THEN LABEL Annder IF LABEL("Qdes")=0 THEN LABEL Qdes fm% = 900 FORM fm%: TOP fm%,TOP(p%): LEFT fm%,LEFT(p%)+WIDTH(p%)+15: WIDTH fm%,150 HEIGHT fm%,250: BORDER_SMALL fm%: FONT_NAME fm%,"Arial": FONT_BOLD fm% COLOR fm%,255,255,164: CAPTION fm%," - DESSIN -": ON_CLOSE fm%,Qdes i%=fm%+1: ALPHA i%: PARENT i%,fm%: TOP i%,5:LEFT i%,5: CAPTION i%,"Épaiss. Trait :" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)-3: LEFT i%,85: WIDTH i%,45 MIN i%,1: MAX i%,20: POSITION i%,1 i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,27: LEFT i%,5 CAPTION i%,"Couleur Trait :"+CHR$(10)+" R= G= B=" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+27: LEFT i%,2: WIDTH i%,40 MIN i%,0: MAX i%,255: sp1% = i% i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255 FOR j%=sp1% TO i%: MIN j%,0: MAX j%,255: POSITION j%,0: NEXT j% i%=i%+1: CHECK i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+30: LEFT i%,5: WIDTH i%,100 CAPTION i%,"Fill, couleur :": ff% = i% i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,5 CAPTION i%," R= G= B=" i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,2: WIDTH i%,40 MIN i%,0: MAX i%,255: sp2% = i% i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+42: WIDTH i%,45 MIN i%,0: MAX i%,255: POSITION i%,0 FOR j%=sp2% TO i%: MIN j%,0: MAX j%,255: POSITION j%,0: NEXT j% i%=i%+1: BUTTON i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+35: LEFT i%,20: WIDTH i%,100 HEIGHT i%,20: CAPTION i%,"Annul dernier": ON_CLICK i%,Annder i%=i%+1:BUTTON i%: PARENT i%,fm%: TOP i%,HEIGHT(fm%)-60: LEFT i%,WIDTH(fm%)/2-40 CAPTION i%,Quitter: ON_CLICK i%,Qdes 2D_TARGET_IS p% WHILE 2 > 1 WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE CLIPBOARD_COPY p%: ' sauvegarde préalable xd% = MOUSE_X_POSITION(p%): yd% = MOUSE_Y_POSITION(p%): ' point de départ du dessin 2D_PEN_WIDTH POSITION(fm%+2) 2D_PEN_COLOR POSITION(sp1%),POSITION(sp1%+1),POSITION(sp1%+2): ' couleur WHILE MOUSE_LEFT_UP(p%) = 0 x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%) CAPTION 0, " x="+STR$(x%)+" y="+STR$(y%) IF CHECKED(ff%) = 1 2D_FLOOD x%,y%,POSITION(sp2%),POSITION(sp2%+1),POSITION(sp2%+2): ' fill ELSE 2D_LINE xd%,yd%,x%,y%: xd% = x%: yd% = y% END_IF PAUSE 50 END_WHILE END_WHILE GOTO Qdes Annder: CLIPBOARD_PASTE p% RETURN Qdes: DELETE fm% END_SUB Mais je vais peut-être en rester là, la sub toute simplette commence à grossir un peu trop à mon goût (60 lignes). | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: Dessin à main levée Mar 29 Sep 2015 - 8:36 | |
| salut, étonnamment, je n’ai que du noir quoi que je change dans la petite fenêtre a droite.
jp | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Dessin à main levée Mar 29 Sep 2015 - 10:20 | |
| C'est étonnant en effet ! j'ai repris le code tel quel ci-dessus, et j'ai bien: en changeant les valeurs dans les spin's de droite... ? Tu es sûr que tu n'as pas un écran en noir et blanc ? Blague à part, ça m'intrigue quand même cette histoire de ne pas avoir les couleurs... | |
| | | Contenu sponsorisé
| Sujet: Re: Dessin à main levée | |
| |
| | | | Dessin à main levée | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |