FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de math
par papydall Aujourd'hui à 1:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Dessin à main levée

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Dessin à main levée   Lun 28 Sep 2015 - 0: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
pascal10000

avatar

Nombre de messages : 536
Localisation : Troyes
Date d'inscription : 05/02/2011

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 9: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 28 Sep 2015 - 11:12

Whoua !...

Super Sub !
cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 12:26

Ca fonctionne parfaitement. Bravo JL35 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 14: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 ( Smile ), 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5040
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 14: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 confused Evil or Very Mad Twisted Evil .
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 Very Happy geek

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 15: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... Evil or Very Mad 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 - 15:44, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 15:32

Pas mal JL35 cette petite SUB… je pourrais dessiner ta mobylette où il y est mention sur un autre topic. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Dessin à main levée   Lun 28 Sep 2015 - 16: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).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jpcr

avatar

Nombre de messages : 276
Age : 50
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

MessageSujet: Re: Dessin à main levée   Mar 29 Sep 2015 - 9:36

salut, étonnamment, je n’ai que du noir quoi que je change dans la petite fenêtre a droite.

jp
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Dessin à main levée   Mar 29 Sep 2015 - 11: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 ? Very Happy

Blague à part, ça m'intrigue quand même cette histoire de ne pas avoir les couleurs... scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Dessin à main levée   

Revenir en haut Aller en bas
 
Dessin à main levée
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ce n'est plus seulement un dessin...
» Les accords main gauche sur le FR5 ou 7
» midi et main gauche
» [Résolu] sprite dessin
» Réglage Individuel des Registres main gauche

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: