FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Dessins élémentaires Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Dessins élémentaires Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Dessins élémentaires Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Dessins élémentaires Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Dessins élémentaires Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Dessins élémentaires Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Dessins élémentaires Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Dessins élémentaires Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Dessins élémentaires Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Dessins élémentaires Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Dessins élémentaires Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Dessins élémentaires Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Dessins élémentaires Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Dessins élémentaires Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Dessins élémentaires Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Dessins élémentaires

Aller en bas 
2 participants
AuteurMessage
JL35




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

Dessins élémentaires Empty
MessageSujet: Dessins élémentaires   Dessins élémentaires EmptyLun 29 Jan 2018 - 15:25

Une autre petite sub pour dessiner rapidement des figures élémentaires sur un picture (contenant ou non une image).
Figures de base: trait, rectangle, cercle.
On peut choisir soit une des 16 couleurs de base, soit une couleur quelconque définie par R,G,B.
Pour le remplissage de zones entourées d'une couleur donnée, j'ai fait appel à une fonction de KGF.dll de l'ami Klaus, je ne sais pas faire en Panoramic pur (si la zone n'est pas de couleur uniforme).
Il faut donc ajuster le chemin de Kgf.dll en tête de la sub.
Il n'y a qu'un seul droit à l'erreur (annuler la dernière figure tracée).
Code:
dim f$: f$ = "c:\graph\jpg\goldgate.jpg"
width 0,660: height 0,520: border_small 0
picture 1: width 1,640: height 1,480: file_load 1,f$
DesPic(1)
END
' ==============================================================================
SUB DesPic(p%)
  ' Dessin de formes élémentaires sur le picture p%
  IF LABEL("Clk") = 0 THEN LABEL Clk
  IF LABEL("Anud") = 0 THEN LABEL Anud
  IF LABEL("Typf") = 0 THEN LABEL Typf
  IF LABEL("Colf") = 0 THEN LABEL Colf
  IF LABEL("Hlp") = 0 THEN LABEL Hlp
  IF LABEL("Qqit") = 0 THEN LABEL Qqit
  DIM_LOCAL fm%,co%,cf%,fig%,ff%,x%,y%,x1%,y1%,ct%,cc%,sp%,ry%,i%,j%,k%,r%,g%,b%,sc%,bc%
  DIM_LOCAL rt%,gt%,bt%,rf%,gf%,bf%,pm%,kgf$,a$,cr$
  kgf$ = "C:\PANORAMIC\KGF\KGF.dll": ' <==== A AJUSTER =========================
  cr$ = CHR$(13)+CHR$(10)
  fm% = 900
  FORM fm%: BORDER_SMALL fm%: LEFT fm%,WIDTH(0): WIDTH fm%,220: HEIGHT fm%,210
            ON_CLOSE fm%,Qqit: CAPTION fm%,"         -   OUTILS   DE   DESSIN   -"
            FONT_BOLD fm%: COLOR fm%,190,255,255
  i%=fm%+1: CONTAINER_OPTION i%: PARENT i%,fm%: WIDTH i%,WIDTH_CLIENT(fm%)
            HEIGHT i%,55: COLOR i%,255,255,128: co% = i%
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,5: LEFT i%,5: CAPTION i%,"Trait"
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,20: LEFT i%,5: CAPTION i%,"Rectangle vide"
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,35: LEFT i%,5: CAPTION i%,"Rectangle plein"
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,5: LEFT i%,110: CAPTION i%,"Cercle vide"
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,20: LEFT i%,110: CAPTION i%,"Cercle plein"
  i%=i%+1: OPTION i%: PARENT i%,co%: TOP i%,35: LEFT i%,110: CAPTION i%,"Remplissage"
           FOR j% = co%+1 TO i%: ON_CLICK j%,Typf: NEXT j%
           MARK_ON co%+1: fig% = 1: ' trait
  i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,HEIGHT(co%)+5: LEFT i%,5: CAPTION i%,"Ép. trait:"
  i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,5: WIDTH i%,45: sp% = i%
           MIN sp%,1: MAX sp%,20: POSITION sp%,1
  i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,TOP(i%-2): LEFT i%,65: CAPTION i%,"Coul. trait"
  i%=i%+1: PICTURE i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,LEFT(i%-1)+5
           WIDTH i%,50: HEIGHT i%,22: 2D_FILL_COLOR 0,0,0: COLOR i%,0,0,0
           ON_CLICK i%,Colf: ct%=i%
  i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,TOP(i%-2): LEFT i%,135: CAPTION i%,"Coul. rempl."
  i%=i%+1: PICTURE i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+15: LEFT i%,LEFT(i%-1)+5
           WIDTH i%,50: HEIGHT i%,22: COLOR i%,255,255,255: ON_CLICK i%,Colf: cf% = i%
  i%=i%+1: PICTURE i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+25: LEFT i%,4: WIDTH i%,WIDTH(co%)-8
           HEIGHT i%,20: k% = WIDTH(co%)/16: 2D_TARGET_IS i%: 2D_FILL_ON
           FOR j% = 0 TO 15
               SELECT j%
                   CASE 0: 2D_FILL_COLOR 0,0,0:        ' Noir
                   CASE 1: 2D_FILL_COLOR 0,0,128:      ' Bleu
                   CASE 2: 2D_FILL_COLOR 0,128,0:      ' Vert
                   CASE 3: 2D_FILL_COLOR 0,128,128:    ' Cyan
                   CASE 4: 2D_FILL_COLOR 128,0,0:      ' Rouge
                   CASE 5: 2D_FILL_COLOR 128,0,128:    ' Magenta
                   CASE 6: 2D_FILL_COLOR 128,64,0:     ' Brun
                   CASE 7: 2D_FILL_COLOR 192,192,192:  ' Blanc
                   CASE 8: 2D_FILL_COLOR 128,128,128:  ' Gris
                   CASE 9: 2D_FILL_COLOR 0,0,255:      ' Bleu clair
                   CASE 10: 2D_FILL_COLOR 0,255,0:     ' Vert clair
                   CASE 11: 2D_FILL_COLOR 0,255,255:   ' Cyan clair
                   CASE 12: 2D_FILL_COLOR 255,0,0:     ' Rouge clair
                   CASE 13: 2D_FILL_COLOR 255,0,255:   ' Magenta clair
                   CASE 14: 2D_FILL_COLOR 255,255,0:   ' Jaune
                   CASE 15: 2D_FILL_COLOR 255,255,255: ' Blanc intense
               END_SELECT
               2D_RECTANGLE j%*k%,0,(j%+1)*k%+1,19
           NEXT j%
           ON_CLICK i%,Colf
  i%=i%+1: ALPHA i%: PARENT i%,fm%: TOP i%,TOP(i%-1)+27: LEFT i%,1
           CAPTION i%,"R=              G=               B="
  i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1)-3: LEFT i%,15: WIDTH i%,45: sc% = i%
  i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,75: WIDTH i%,45
  i%=i%+1: SPIN i%: PARENT i%,fm%: TOP i%,TOP(i%-1): LEFT i%,135: WIDTH i%,45
           FOR j%=i%-2 TO i%: MIN i%,0: MAX i%,255: POSITION i%,0: NEXT j%
  i%=i%+1: BUTTON i%: PARENT i%,fm%: TOP i%,TOP(i%-1)-2: WIDTH i%,25: LEFT i%,LEFT(i%-1)+43
           CAPTION i%,"OK": ON_CLICK i%,Colf: bc%=i%
  i%=i%+1: BUTTON i%: PARENT i%,fm%: TOP i%,HEIGHT_CLIENT(fm%)-25: LEFT i%,3: WIDTH i%,25
           CAPTION i%,"?": FONT_SIZE i%,11: ON_CLICK i%,Hlp
  i%=i%+1: BUTTON i%: PARENT i%,fm%: TOP i%,TOP(i%-1)
           LEFT i%,LEFT(i%-1)+30: WIDTH i%,90: CAPTION i%,"Annul dernier": ON_CLICK i%,Anud
  i%=i%+1: BUTTON i%: PARENT i%,fm%: TOP i%,TOP(i%-1)
           LEFT i%,LEFT(i%-1)+95: CAPTION i%,"Quitter": ON_CLICK i%,Qqit
  i%=i%+1: PICTURE i%: PARENT i%,fm%: HIDE i%: pm%=i%: ' picture de manoeuvre
  2D_TARGET_IS p%
  WHILE ff% = 0
    IF MOUSE_LEFT_DOWN(p%) = 1
      x1% = MOUSE_X_POSITION(p%): y1% = MOUSE_Y_POSITION(p%)
      2D_FILL_OFF: 2D_PEN_WIDTH POSITION(sp%)
      CLIPBOARD_COPY p%
      rt% = COLOR_PIXEL_RED(ct%,2,2): gt% = COLOR_PIXEL_GREEN(ct%,2,2)
      bt% = COLOR_PIXEL_BLUE(ct%,2,2): 2D_PEN_COLOR rt%,gt%,bt%
      rf% = COLOR_PIXEL_RED(cf%,2,2): gf% = COLOR_PIXEL_GREEN(cf%,2,2)
      bf% = COLOR_PIXEL_BLUE(cf%,2,2): 2D_FILL_COLOR rf%,gf%,bf%
      WHILE MOUSE_LEFT_UP(p%) = 0
        x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
        CLIPBOARD_PASTE p%
        2D_FILL_OFF
        SELECT fig%
           CASE 1: j% = SCANCODE: SCANCODE = 0
                   IF j% = 160 AND x%<>x1% AND y%<>y1%: ' Maj gauche enfoncé
                       j% = ABS(y%-y1%)/ABS(x%-x1%)
                       IF j% > 1: ' angle >45°: -> verticale
                           x% = x1%
                       ELSE: ' horizontale
                           y% = y1%
                       END_IF
                   END_IF
                   2D_LINE x1%,y1%,x%,y%
           CASE 2: 2D_RECTANGLE x1%,y1%,x%,y%: ' rectangle vide
           CASE 3: 2D_FILL_ON: 2D_FILL_COLOR rf%,gf%,bf%
                   2D_RECTANGLE x1%,y1%,x%,y%: ' rectangle plein
           CASE 4: ry% = SQR((x%-x1%)*(x%-x1%)+(y%-y1%)*(y%-y1%)): ' cercle vide
                   2D_CIRCLE x1%,y1%,ry%
           CASE 5: ry% = SQR((x%-x1%)*(x%-x1%)+(y%-y1%)*(y%-y1%)): ' cercle plein
                   2D_FILL_ON: 2D_FILL_COLOR rf%,gf%,bf%
                   2D_CIRCLE x1%,y1%,ry%
           CASE 6: i% = 65536*bf%+256*gf%+rf%: ' couleur de remplissage (BGR)
                   j% = 65536*bt%+256*gt%+rt%: ' couleur de trait
                   CLIPBOARD_PASTE pm%
                   DLL_ON kgf$
                     k% = DLL_CALL0("LoadPicture"): ' presse-papier -> image interne
                     k% = DLL_CALL4("FloodfillPictureToBorderColor",x%,y%,i%,j%)
                     k% = DLL_CALL0("SavePicture"): ' image interne -> presse-papier
                   DLL_OFF
                   CLIPBOARD_PASTE p%
                   CLIPBOARD_COPY pm%: ' restore le clip pour annul éventuel
          END_SELECT
          PAUSE 50
      END_WHILE
    END_IF
  END_WHILE
  2D_TARGET_IS 0: DELETE fm%: EXIT_SUB
' ------------------------------------------------------------------------------
Clk:
  WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE
  x1% = MOUSE_X_POSITION(p%): y1% = MOUSE_Y_POSITION(p%)
  2D_FILL_OFF: 2D_PEN_WIDTH POSITION(sp%)
  CLIPBOARD_COPY p%
  rt% = COLOR_PIXEL_RED(ct%,2,2): gt% = COLOR_PIXEL_GREEN(ct%,2,2)
  bt% = COLOR_PIXEL_BLUE(ct%,2,2): 2D_PEN_COLOR rt%,gt%,bt%
  rf% = COLOR_PIXEL_RED(cf%,2,2): gf% = COLOR_PIXEL_GREEN(cf%,2,2)
  bf% = COLOR_PIXEL_BLUE(cf%,2,2): 2D_FILL_COLOR rf%,gf%,bf%
  WHILE MOUSE_LEFT_UP(p%) = 0
      x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
      CLIPBOARD_PASTE p%
      2D_FILL_OFF
      SELECT fig%
         CASE 1: 2D_LINE x1%,y1%,x%,y%
         CASE 2: 2D_RECTANGLE x1%,y1%,x%,y%: ' rectangle vide
         CASE 3: 2D_FILL_ON: 2D_FILL_COLOR rf%,gf%,bf%
                 2D_RECTANGLE x1%,y1%,x%,y%: ' rectangle plein
         CASE 4: ry% = SQR((x%-x1%)*(x%-x1%)+(y%-y1%)*(y%-y1%)): ' cercle vide
                 2D_CIRCLE x1%,y1%,ry%
         CASE 5: ry% = SQR((x%-x1%)*(x%-x1%)+(y%-y1%)*(y%-y1%)): ' cercle plein
                 2D_FILL_ON: 2D_FILL_COLOR rf%,gf%,bf%
                 2D_CIRCLE x1%,y1%,ry%
         CASE 6: i% = 65536*bf%+256*gf%+rf%: ' couleur de remplissage (BGR)
                 j% = 65536*bt%+256*gt%+rt%: ' couleur de trait
                 CLIPBOARD_PASTE pm%
                 DLL_ON kgf$
                   k% = DLL_CALL0("LoadPicture"): ' presse-papier -> image interne
                   k% = DLL_CALL4("FloodfillPictureToBorderColor",x%,y%,i%,j%)
                   k% = DLL_CALL0("SavePicture"): ' image interne -> presse-papier
                 DLL_OFF
                 CLIPBOARD_PASTE p%
                 CLIPBOARD_COPY pm%: ' pour annul éventuel
      END_SELECT
      PAUSE 50
  END_WHILE
  GOTO Clk
RETURN
' ------------------------------------------------------------------------------
Anud:
  ' Annuler la dernière opération
  CLIPBOARD_PASTE p%
RETURN
' ------------------------------------------------------------------------------
Typf:
  k% = NUMBER_CLICK: fig% = k%-co%: ' type de figure
RETURN
' ------------------------------------------------------------------------------
Colf:
  k% = NUMBER_CLICK
  IF k% = ct%: ' couleur trait
      cc% = 1
  ELSE
      IF k% = cf%: ' couleur de remplissage
          cc% = 2
      ELSE: ' couleur choisie
          IF k% = bc%: ' bouton OK, couleur personnalisée
              r% = POSITION(sc%): g% = POSITION(sc%+1): b% = POSITION(sc%+2)
          ELSE
              i% = MOUSE_X_POSITION(cf%+1): j% = MOUSE_Y_POSITION(cf%+1)
              r% = COLOR_PIXEL_RED(cf%+1,i%,j%): g% = COLOR_PIXEL_GREEN(cf%+1,i%,j%)
              b% = COLOR_PIXEL_BLUE(cf%+1,i%,j%)
              POSITION sc%,r%: POSITION sc%+1,g%: POSITION sc%+2,b%
          END_IF
          IF cc% = 1: ' couleur trait
              rt%=r%: gt%=g%: bt%=b%: COLOR ct%,rt%,gt%,bt%
          ELSE: ' couleur fond
              IF cc% = 2 THEN rf%=r%: gf%=g%: bf%=b%: COLOR cf%,rf%,gf%,bf%
          END_IF
          cc% = 0
      END_IF
  END_IF
RETURN
' ------------------------------------------------------------------------------
Hlp:
  a$ = " - TRACÉ  DE  FIGURES   ÉLÉMENTAIRES -"+cr$
  a$=a$+"    ========================="+cr$+cr$
  a$=a$+"- Cocher le type de figure à tracer"+cr$+cr$
  a$=a$+"- Choisir l'épaisseur du tracé (1 à 20 pixels)"+cr$+cr$
  a$=a$+"- Choisir la couleur du tracé et la couleur de remplissage :"+cr$
  a$=a$+"  . Couleur standard: cliquer la couleur actuelle, puis la couleur désirée."+cr$
  a$=a$+"  . Couleur personnalisée: entrer les valeurs R,G,B, cliquer la couleur"+cr$
  a$=a$+"     actuelle, puis 'OK'."+cr$+cr$
  a$=a$+"NB:"+cr$
  a$=a$+" - Tracé de ligne: touche 'Maj' gauche enfoncée pour une ligne"+cr$
  a$=a$+"        parfaitement horizontale ou verticale."+cr$
  a$=a$+" - Remplissage: la zone cliquée entourée par la couleur de trait est remplie"+cr$
  a$=a$+"        par la couleur de remplissage."+cr$
  a$=a$+" - Il est possible d'annuler la dernière opération (une seule fois)."
  MESSAGE a$
RETURN
' ------------------------------------------------------------------------------
Qqit:
  ff% = 1: : 2D_TARGET_IS 0: DELETE fm%: EXIT_SUB
RETURN
END_SUB
' ==============================================================================
Dessins élémentaires Gold10
Revenir en haut Aller en bas
papydall

papydall


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

Dessins élémentaires Empty
MessageSujet: Re: Dessins élémentaires   Dessins élémentaires EmptyMar 30 Jan 2018 - 3:35

JL35 a écrit:
Une autre petite sub pour dessiner rapidement des figures élémentaires sur un picture

On parle la même langue mais pas le même langage !
Une SUB d’environ 220 lignes de code dont chaque ligne contient souvent plusieurs instructions n’est pas si petite que ça, à mon humble avis !

Le titre du sujet est : « Dessins élémentaires » c’est bien « Elémentaire mon cher Watson »

Je te remercie, cher ami, pour le partage de ce code dont chacun peut arranger selon ses goûts et ses besoins.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Dessins élémentaires Empty
MessageSujet: Re: Dessins élémentaires   Dessins élémentaires EmptyMar 30 Jan 2018 - 12:58

C'est évidemment fait dans cet esprit, à ne pas prendre tel quel, mais adapter à ses goûts et ses besoins.
Et c'est l'intérêt d'une sub (même avec un léger embonpoint): c'est une boîte noire, avec des paramètres en entrée et un résultat en sortie, peu importe ce qu'il y a à l'intérieur.
Voilà, mon ami Sherlock !
Revenir en haut Aller en bas
Contenu sponsorisé





Dessins élémentaires Empty
MessageSujet: Re: Dessins élémentaires   Dessins élémentaires Empty

Revenir en haut Aller en bas
 
Dessins élémentaires
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» BAO de dessin de figures élémentaires
» Notions élémentaires de binaire et hexa

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: