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
» Gestion d'un système client-serveur.
Dessin sur un picture Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Dessin sur un picture Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Dessin sur un picture Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Dessin sur un picture Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Dessin sur un picture Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Dessin sur un picture Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Dessin sur un picture Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Dessin sur un picture Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Dessin sur un picture Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Dessin sur un picture Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Dessin sur un picture Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Dessin sur un picture Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Dessin sur un picture Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Dessin sur un picture Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Dessin sur un picture Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cartes Pokémon EV6.5 : où trouver le ...
Voir le deal

 

 Dessin sur un picture

Aller en bas 
2 participants
AuteurMessage
JL35




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

Dessin sur un picture Empty
MessageSujet: Dessin sur un picture   Dessin sur un picture EmptyMer 29 Nov 2017 - 15:14

Une petite sub (enfin, pas loin de 300 lignes quand même) pour dessiner des figures élémentaires ou apposer du texte sur un picture contenant ou non une image.

A adapter:
- dans le programme appelant, l'image contenue dans le picture
- dans la sub elle-même: le répertoire (rtm$) qui contiendra les fichiers temporaires de manoeuvre.
Je n'ai pas mis dans l'appelant la sauvegarde du résultat, mais c'est juste un exemple élémentaire, à compléter.
Code:
LABEL Quit,Dessin
WIDTH 0,660: HEIGHT 0,550: COLOR 0,180,255,255: BORDER_SMALL 0
PICTURE 1: WIDTH 1,640: HEIGHT 1,480
BUTTON 2: TOP 2,HEIGHT(1)+5: LEFT 2,WIDTH(0)/2-40
CAPTION 2,"Dessin": ON_CLICK 2,Dessin
BUTTON 3: TOP 3,TOP(2): LEFT 3,40: CAPTION 3,"Sauvegarder"
BUTTON 4: TOP 4,TOP(3): LEFT 4,WIDTH(0)-120: CAPTION 4,"Quitter": ON_CLICK 4,Quit
FILE_LOAD 1,"C:\GRAPH\JPG\Goldgate.jpg": ' image de fond
End
' ===============================================
Quit:
  TERMINATE
RETURN
Dessin:
  Despic(1)
RETURN
' ==============================================================================
SUB Despic(obj%)
  ' Dessin et texte sur l'objet obj% (picture)
  IF LABEL("Exdes") = 0 THEN LABEL Exdes
  IF LABEL("Exdes1") = 0 THEN LABEL Exdes1
  IF LABEL("Chcoul") = 0 THEN LABEL Chcoul
  IF LABEL("Chcoul1") = 0 THEN LABEL Chcoul1
  IF LABEL("Choutil") = 0 THEN LABEL Choutil
  IF LABEL("Chpol") = 0 THEN LABEL Chpol
  IF LABEL("Chpol1") = 0 THEN LABEL Chpol1
  IF LABEL("Apptxt") = 0 THEN LABEL Apptxt
  IF LABEL("Decal") = 0 THEN LABEL Decal
  IF LABEL("Desanu") = 0 THEN LABEL Desanu
  IF LABEL("Findes") = 0 THEN LABEL Findes
  DIM_LOCAL rtm$,ff%,i%,j%,st%,sp%,cl%,co%,ct%,cd%,wc%,hc%,o1%,pc%,r%,g%,b%,x%,y%,fd%,out%
  DIM_LOCAL x1%,y1%,pt%,pr%,rt%,gt%,bt%,rr%,gr%,br%,ray%,im%,fsav$,wo%,ho%,xs1%,wf%
  DIM_LOCAL f2d$,ftx$,pol$,sz%,ed%,fa%,lp%,a$,s2d%,pic%,ck%
  wo% = WIDTH(obj%): ho% = HEIGHT(obj%): ' dimensions de l'objet cible
  rtm$ = "Z:": ' <======= Répertoire des fichiers provisoires
  fsav$ = rtm$+"Fsave.bmp"
  f2d$ = rtm$+"S2d.bmp"
  ftx$ = rtm$+"Tx.bmp"
  ff% = 850
  FORM ff%: BORDER_SMALL ff%: TOP ff%,TOP(obj%): LEFT ff%,LEFT(obj%)+WIDTH(obj%)+20
            WIDTH ff%,300: HEIGHT ff%,370: FONT_BOLD ff%: COLOR ff%,64,255,255
            ON_CLOSE ff%,Findes: CAPTION ff%,"     -   OUTILS   DE   DESSIN   -"
            wf% = WIDTH_CLIENT(ff%)
  im% = ff%+1: IMAGE im%
  ' ====================
  cl%=im%+1: CONTAINER cl%: PARENT cl%,ff%: TOP cl%,0
           WIDTH cl%,wf%: HEIGHT cl%,90: CAPTION cl%,"COULEURS :"
           COLOR cl%,255,255,164
  i%=cl%+1: PICTURE i%: PARENT i%,cl%: TOP i%,15: LEFT i%,2: WIDTH i%,WIDTH(cl%)-4
           HEIGHT i%,40: 2D_TARGET_IS i%: wc% = WIDTH(i%)/8: hc% = HEIGHT(i%)/2: pc% = i%
           2D_FILL_COLOR 0,0,0: 2D_RECTANGLE 0,0,wc%,hc%: ' Noir
           2D_FILL_COLOR 0,0,128: 2D_RECTANGLE wc%,0,2*wc%,hc%: ' Bleu
           2D_FILL_COLOR 0,128,0: 2D_RECTANGLE 2*wc%,0,3*wc%,hc%: ' Vert
           2D_FILL_COLOR 0,128,128: 2D_RECTANGLE 3*wc%,0,4*wc%,hc%: ' Cyan
           2D_FILL_COLOR 128,0,0: 2D_RECTANGLE 4*wc%,0,5*wc%,hc%: ' Rouge
           2D_FILL_COLOR 128,0,128: 2D_RECTANGLE 5*wc%,0,6*wc%,hc%: ' Magenta
           2D_FILL_COLOR 128,64,128: 2D_RECTANGLE 6*wc%,0,7*wc%,hc%: ' Brun
           2D_FILL_COLOR 192,192,192: 2D_RECTANGLE 7*wc%,0,8*wc%,hc%: ' Blanc
           2D_FILL_COLOR 128,128,128: 2D_RECTANGLE 0,hc%,wc%,2*hc%: ' Gris
           2D_FILL_COLOR 0,0,255: 2D_RECTANGLE wc%,hc%,2*wc%,2*hc%: ' Bleu clair
           2D_FILL_COLOR 0,255,0: 2D_RECTANGLE 2*wc%,hc%,3*wc%,2*hc%: ' Vert clair
           2D_FILL_COLOR 0,255,255: 2D_RECTANGLE 3*wc%,hc%,4*wc%,2*hc%: ' Cyan clair
           2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 4*wc%,hc%,5*wc%,2*hc%: ' Rouge clair
           2D_FILL_COLOR 255,0,255: 2D_RECTANGLE 5*wc%,hc%,6*wc%,2*hc%: ' Magenta clair
           2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 6*wc%,hc%,7*wc%,2*hc%: ' Jaune
           2D_FILL_COLOR 255,255,255: 2D_RECTANGLE 7*wc%,hc%,8*wc%,2*hc%: ' Blanc intense
           ON_CLICK pc%,Chcoul
  i%=i%+1: ALPHA i%: PARENT i%,cl%: TOP i%,TOP(i%-1)+42: LEFT i%,2
           CAPTION i%,"Couleur"+CHR$(10)+"   trait:"
  pt%=i%+1: PICTURE pt%: PARENT pt%,cl%: TOP pt%,TOP(i%)+3: LEFT pt%,50: ' couleur trait
           WIDTH pt%,35: HEIGHT pt%,22: COLOR pt%,0,0,0
  i%=pt%+1: ALPHA i%: PARENT i%,cl%: TOP i%,TOP(i%-2): LEFT i%,LEFT(pt%)+40
            CAPTION i%,"Épaiss."+CHR$(10)+"  trait:"
  st%=i%+1: SPIN st%: PARENT st%,cl%: TOP st%,TOP(pt%): LEFT st%,LEFT(i%)+45: WIDTH st%,40
            MIN st%,1: MAX st%,20: POSITION st%,1
  i%=st%+1: ALPHA i%: PARENT i%,cl%: TOP i%,TOP(i%-2): LEFT i%,LEFT(i%-1)+50
            CAPTION i%,"Couleur"+CHR$(10)+"Rempliss."
  pr%=i%+1: PICTURE pr%: PARENT pr%,cl%: TOP pr%,TOP(pt%): LEFT pr%,LEFT(i%)+55: ' couleur de remplissage
           WIDTH pr%,WIDTH(pt%): HEIGHT pr%,HEIGHT(pt%): COLOR pr%,192,192,192
           ON_CLICK pt%,Chcoul1: ON_CLICK pr%,Chcoul1
  ' ====================
  co%=pr%+1: CONTAINER co%: PARENT co%,ff%: TOP co%,TOP(cl%)+HEIGHT(cl%)+3
           WIDTH co%,wf%: HEIGHT co%,60: CAPTION co%,"OUTILS :"
           COLOR co%,255,255,164
           out% = 1: wc% = WIDTH(co%)/9
  i%=co%+1: PICTURE i%: PARENT i%,co%: TOP i%,18: LEFT i%,4: WIDTH i%,wc%: ' Point
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2
           2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 3: 2D_CIRCLE wc%/2,wc%/2,2
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Trait
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_LINE 5,wc%-7,wc%-5,7
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Rectangle vide
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_RECTANGLE 5,8,wc%-5,wc%-8
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Rectangle plein
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_FILL_COLOR 192,192,192: 2D_RECTANGLE 5,8,wc%-5,wc%-8
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Cercle vide
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_CIRCLE wc%/2,wc%/2,wc%/3
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Cercle plein
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_FILL_COLOR 192,192,192: 2D_CIRCLE wc%/2,wc%/2,wc%/3
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Remplissage
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           2D_PEN_WIDTH 2: 2D_LINE 8,4,wc%-4,10: 2D_POLY_TO wc%-8,wc%-10
           2D_POLY_TO 4,wc%-16: 2D_POLY_TO 8,4: 2D_LINE wc%-6,wc%-16,5,wc%-16
           2D_POLY_TO 5,wc%-5: 2D_PEN_WIDTH 3: 2D_POLY_TO 16,wc%-5
  i%=i%+1: PICTURE i%: PARENT i%,co%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+wc%+3: ' Texte
           HEIGHT i%,wc%: 2D_TARGET_IS i%: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,wc%,wc%
           PRINT_TARGET_IS i%: FONT_BOLD i%: FONT_SIZE i%,12: PRINT_LOCATE 1,5
           PRINT "Txt": 2D_FILL_OFF: 2D_RECTANGLE 1,1,wc%,wc%
           FOR j% = co%+1 TO i%: ON_CLICK j%,Choutil: NEXT j%
  ' ====================
  ct%=i%+1: CONTAINER ct%: PARENT ct%,ff%: TOP ct%,TOP(co%)+HEIGHT(co%)+3
           WIDTH ct%,wf%: HEIGHT ct%,90: CAPTION ct%,"TEXTE (couleur trait/couleur fond) :"
           COLOR ct%,255,255,164
  i%=ct%+1: EDIT i%: PARENT i%,ct%: TOP i%,15: WIDTH i%,wf%: HEIGHT i%,25
           pol$ = "Arial": FONT_NAME i%,pol$: FONT_SIZE i%,12
  i%=i%+1: ALPHA i%: PARENT i%,ct%: TOP i%,TOP(i%-1)+34: CAPTION i%,"Police:"
  i%=i%+1: EDIT i%: PARENT i%,ct%: TOP i%,TOP(i%-1)-4: LEFT i%,40: WIDTH i%,2*wf%/3
           FONT_SIZE i%,10: TEXT i%,pol$: ON_CLICK i%,Chpol: ed%=i%: ' police
  i%=i%+1: SPIN i%: PARENT i%,ct%: TOP i%,TOP(i%-1): WIDTH i%,50
           LEFT i%,LEFT(i%-1)+WIDTH(i%-1)+4: MIN i%,4: MAX i%,255: POSITION i%,12
  i%=i%+1: CHECK i%: PARENT i%,ct%: TOP i%,TOP(ed%)+25: LEFT i%,20: CAPTION i%,"G": ck%=i%
  i%=i%+1: CHECK i%: PARENT i%,ct%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+35: CAPTION i%,"I"
           FONT_ITALIC i%
  i%=i%+1: CHECK i%: PARENT i%,ct%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+35: CAPTION i%,"S"
           FONT_UNDERLINE i%
  i%=i%+1: CHECK i%: PARENT i%,ct%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+50
           WIDTH i%,140: CAPTION i%,"Fond transparent": MARK_ON i%
           FOR j% = ck% TO i%: FONT_SIZE j%,10: NEXT j%
  fa%=i%+1: FORM fa%: HIDE fa%: BORDER_HIDE fa%: WIDTH fa%,180: TOP fa%,TOP(ff%)+TOP(ct%)+95
           LEFT fa%,LEFT(ff%)+LEFT(ed%)+8: HEIGHT fa%,500
  lp%=fa%+1: LIST lp%: PARENT lp%,fa%: FULL_SPACE lp%: ON_CLICK lp%,Chpol1
  i%=lp%+1: DLIST i%: FONT_NAMES_LOAD i%
           FOR j% = 1 TO COUNT(i%)
               a$ = ITEM_READ$(i%,j%): IF LEFT$(a$,1)<>"@" THEN ITEM_ADD lp%,a$
           NEXT j%
           DELETE i%: i%=i%-1
  i%=i%+1: SCENE2D i%: HIDE i%: WIDTH i%,wo%: HEIGHT i%,ho%: s2d%=i%
           SPRITE i%
  i%=i%+1: PICTURE i%: HIDE i%: pic% = i%
  ' ====================
  cd%=i%+1: CONTAINER cd%: PARENT cd%,ff%: TOP cd%,TOP(ct%)+HEIGHT(ct%)+3
           WIDTH cd%,wf%: HEIGHT cd%,48: CAPTION cd%,"DÉCALAGE :"
           COLOR cd%,255,255,164
  i%=cd%+1: BUTTON i%: PARENT i%,cd%: TOP i%,16: WIDTH i%,25: LEFT i%,30: CAPTION i%,CHR$(231)
  i%=i%+1: BUTTON i%: PARENT i%,cd%: TOP i%,TOP(i%-1): WIDTH i%,25: LEFT i%,LEFT(i%-1)+30
           CAPTION i%,CHR$(232)
  i%=i%+1: BUTTON i%: PARENT i%,cd%: TOP i%,TOP(i%-1): WIDTH i%,25: LEFT i%,LEFT(i%-1)+30
           CAPTION i%,CHR$(233)
  i%=i%+1: BUTTON i%: PARENT i%,cd%: TOP i%,TOP(i%-1): WIDTH i%,25: LEFT i%,LEFT(i%-1)+30
           CAPTION i%,CHR$(234)
           FOR j% = cd%+1 TO i%
               FONT_NAME j%,"Wingdings": FONT_SIZE j%,12: ON_CLICK j%,Decal
           NEXT j%
  sp%=i%+1: SPIN sp%: PARENT sp%,cd%: TOP sp%,TOP(sp%-1)+2: LEFT sp%,LEFT(sp%-1)+40
            WIDTH sp%,40: MIN sp%,1: MAX sp%,100: POSITION sp%,1
  i%=sp%+1: ALPHA i%: PARENT i%,cd%: TOP i%,TOP(i%-1)+2: LEFT i%,LEFT(i%-1)+45: CAPTION i%,"pixel(s)"
  ' ====================
  i%=i%+1: BUTTON i%: PARENT i%,ff%: TOP i%,TOP(cd%)+HEIGHT(cd%)+5: LEFT i%,30
           WIDTH i%,90: CAPTION i%,"Annul dernier": ON_CLICK i%,Desanu
  i%=i%+1: BUTTON i%: PARENT i%,ff%: TOP i%,TOP(i%-1): LEFT i%,wf%-105
           CAPTION i%,"Fermer": ON_CLICK i%,Findes
  
  2D_TARGET_IS obj%: x1% = -1: y1% = -1: FILE_SAVE obj%,fsav$
  ON_CLICK obj%,Exdes
  WHILE fd% = 0: PAUSE 50: END_WHILE
  2D_TARGET_IS 0: PRINT_TARGET_IS 0: IF FILE_EXISTS(fsav$) = 1 THEN FILE_DELETE fsav$
  DELETE s2d%: DELETE pic%: DELETE im%: DELETE fa%: DELETE ff%
  EXIT_SUB
'                             =========== S/P ===========
Exdes:
  2D_TARGET_IS obj%
  2D_PEN_WIDTH POSITION(st%)
  rt%=COLOR_PIXEL_RED(pt%,5,5): gt%=COLOR_PIXEL_GREEN(pt%,5,5): bt%=COLOR_PIXEL_BLUE(pt%,5,5)
  rr%=COLOR_PIXEL_RED(pr%,5,5): gr%=COLOR_PIXEL_GREEN(pr%,5,5): br%=COLOR_PIXEL_BLUE(pr%,5,5)
  2D_PEN_COLOR rt%,gt%,bt%
  x% = MOUSE_X_LEFT_DOWN(obj%): y% = MOUSE_Y_LEFT_DOWN(obj%)
  CAPTION 0,"X1= "+STR$(x1%)+"  Y1= "+STR$(y1%)+"   X2= "+STR$(x%)+"  Y2= "+STR$(y%)
  2D_IMAGE_COPY im%,0,0,wo%,ho%
  IF out% = 1 THEN 2D_IMAGE_COPY im%,0,0,wo%,ho%: 2D_LINE x%,y%,x%,y%: xs1% = x%: x1%=-1: RETURN: ' Point
  IF out% = 7 THEN 2D_FLOOD x%,y%,rr%,gr%,br%: RETURN: ' Remplissage
  IF out% = 8 THEN GOSUB Apptxt: x1% = -1: RETURN
  IF x1% = -1 THEN x1% = x%: y1% = y%: RETURN: ' Point de départ, coin rectangle ou centre cercle
Exdes1:
  2D_IMAGE_COPY im%,0,0,wo%,ho%: ' sauvegarde préalable
  IF out% = 1 THEN 2D_IMAGE_COPY im%,0,0,wo%,ho%: 2D_LINE x%,y%,x%,y%: xs1% = x%: x1%=-1: RETURN: ' Point
  IF out% = 2 THEN 2D_LINE x1%,y1%,x%,y%: xs1% = x1%: x1% = -1: RETURN
  IF out% = 8 THEN GOSUB Apptxt: x1% = -1: RETURN: ' insertion texte
  IF out% = 3 OR out% = 5: ' rectangle ou cercle vides
      2D_FILL_OFF
  ELSE
      2D_FILL_COLOR rr%,gr%,br%: 2D_FILL_ON : ' idem, pleins
  END_IF
  IF out% = 3 OR out% = 4
      2D_RECTANGLE x1%,y1%,x%,y%
  ELSE
      ray% = SQR(POWER(x%-x1%,2)+POWER(y%-y1%,2))
      2D_CIRCLE x1%,y1%,ray%
  END_IF
  xs1% = x1%: x1% = -1
RETURN
' --------------------
Chcoul:
  x% = MOUSE_X_LEFT_DOWN(pc%): y% = MOUSE_Y_LEFT_DOWN(pc%)
  r%=COLOR_PIXEL_RED(pc%,x%,y%): g%=COLOR_PIXEL_GREEN(pc%,x%,y%): b%=COLOR_PIXEL_BLUE(pc%,x%,y%)
RETURN
' --------------------
Chcoul1:
  i% = NUMBER_CLICK: COLOR i%,r%,g%,b%
  IF i% = pt%: ' couleur trait
      2D_PEN_COLOR r%,g%,b%
  ELSE
      2D_FILL_COLOR r%,g%,b%
  END_IF
RETURN
' --------------------
Choutil:
  ' outil out% = 1 à 8
  i% = NUMBER_CLICK
  j% = co%+out%: 2D_TARGET_IS j%: 2D_PEN_COLOR 0,0,0: 2D_PEN_WIDTH 2: ' ancien outil
  2D_FILL_OFF: 2D_RECTANGLE 1,1,wc%,wc%
  out% = i%-co%: 2D_TARGET_IS i%: 2D_PEN_COLOR 255,0,0: 2D_PEN_WIDTH 2: ' nouvel outil
  2D_FILL_OFF: 2D_RECTANGLE 1,1,wc%,wc%
  2D_TARGET_IS obj%
RETURN
' --------------------
Chpol:
  SHOW fa%
RETURN
' --------------------
Chpol1:
  TEXT ed%,ITEM_INDEX$(lp%): FONT_NAME ct%+1,TEXT$(ed%)
  HIDE fa%
RETURN
' --------------------
Apptxt:
  ' Apposition du texte
  IF CHECKED(ck%+3) = 0: ' Texte sur fond de couleur (= couleur de remplissage)
      PRINT_TARGET_IS obj%: FONT_NAME obj%,TEXT$(ed%): FONT_SIZE obj%, POSITION(ed%+1)
      FONT_COLOR obj%,rt%,gt%,bt%
      FONT_BOLD_OFF obj%: FONT_ITALIC_OFF obj%: FONT_UNDERLINE_OFF obj%
      IF CHECKED(ck%) = 1 THEN FONT_BOLD obj%
      IF CHECKED(ck%+1) = 1 THEN FONT_ITALIC obj%
      IF CHECKED(ck%+2) = 1 THEN FONT_UNDERLINE obj%
      2D_TARGET_IS obj%: 2D_FILL_COLOR rr%,gr%,br%: ' couleur de fond
      PRINT_LOCATE x%,y%: PRINT TEXT$(ct%+1)
  ELSE
      ' Texte sur fond transparent
      FILE_SAVE obj%,f2d$: FILE_LOAD s2d%,f2d$: ' -> Scene2d
      2D_TARGET_IS pic%: COLOR pic%,0,0,0: CLS
      PRINT_TARGET_IS pic%: FONT_NAME pic%,TEXT$(ed%): FONT_SIZE pic%, POSITION(ed%+1)
      FONT_COLOR pic%,rt%,gt%,bt%: IF rt%=0 AND gt%=0 AND bt%=0 THEN FONT_COLOR pic%,9,9,9
      FONT_BOLD_OFF pic%: FONT_ITALIC_OFF pic%: FONT_UNDERLINE_OFF pic%
      IF CHECKED(ck%) = 1 THEN FONT_BOLD pic%
      IF CHECKED(ck%+1) = 1 THEN FONT_ITALIC pic%
      IF CHECKED(ck%+2) = 1 THEN FONT_UNDERLINE pic%
      a$ = TEXT$(ct%+1): i% = TEXT_WIDTH(a$,pic%): j% = TEXT_HEIGHT(a$,pic%)
      WIDTH pic%,i%: HEIGHT pic%,j%: 2D_FILL_COLOR 0,0,0: PRINT a$: FILE_SAVE pic%,ftx$
      SPRITE_FILE_LOAD s2d%,ftx$: FILE_DELETE ftx$
      SPRITE_POSITION s2d%,x%,y%
      SNAPSHOT s2d%,f2d$
      FILE_LOAD obj%,f2d$
      FILE_DELETE f2d$
      2D_TARGET_IS obj%
  END_IF
RETURN
' --------------------
Decal:
  ' décalage de la dernière insertion
  i% = NUMBER_CLICK
  j% = POSITION(sp%): ' nb de pixels de décalage
  x1% = xs1%
  IF i% = cd%+1 THEN x1% = x1%-j%: x% = x%-j%
  IF i% = cd%+2 THEN x1% = x1%+j%: x% = x%+j%
  IF i% = cd%+3 THEN y1% = y1%-j%: y% = y%-j%
  IF i% = cd%+4 THEN y1% = y1%+j%: y% = y%+j%
  2D_IMAGE_PASTE im%,0,0
  GOSUB Exdes1
RETURN
' --------------------
Desanu:
  2D_TARGET_IS obj%
  2D_IMAGE_PASTE im%,0,0
RETURN
' --------------------
Findes:
  fd% = 1
RETURN
' --------------------
END_SUB
' ==============================================================================
La boîte à outils de dessin:
Dessin sur un picture Bao10
Il n'y a pas non plus de mode d'emploi intégré, mais c'est assez simple:
- choisir les couleurs (clic d'abord la couleur, puis l'élément couleur trait ou couleur remplissage), et l'épaisseur de trait
- cliquer le type d'outil: trait, rectangle ou cercle vide ou plein, remplissage, texte.
- cliquer successivement dans le picture le point de départ, puis le point d'arrivée (trait, rectangle), ou le centre et un point de la périphérie   (cercle), ou un point de la zone à remplir.
- pour du texte (une seule ligne), écrire le texte dans l'edit, choisir la police (clic), la taille, les enrichissements, et le type de fond
 Le texte sera de la couleur du trait, et le fond éventuel (si non transparent) de la couleur de remplissage
 Puis clic le point d'insertion dans le picture (coin haut gauche)
- Une fois la figure tracée, il est possible de:
 . Annuler l'insertion ('Annul dernier'), pour recommencer ou non avec d'autres paramètres.
 . La décaler d'un nombre donné de pixels dans les quatre directions, plusieurs fois si nécessaire.

Un point (outil 'point') est apposé immédiatement au clic, mais ne sera visible que s'il est suffisamment gros (fonction de l'épaisseur de trait).
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Dessin sur un picture Empty
MessageSujet: Re: Dessin sur un picture   Dessin sur un picture EmptyMer 29 Nov 2017 - 20:38

Bonjour à tous,
De retour de Bordeaux où je viens de marier mon petit dernier (32 ans quand même), je reprends le fil des discussions sur le forum.

@JL35,
Tout d'abord, je te remercie d'avoir pensé à la taille du bandeau et des bords de l'outil dessin. Cette fois-ci, je n'ai pas eu besoin de rectifier le code (Sauf rem$, comme tu l'as indiqué).
Pour l'image de fond, on a plutôt intérêt à la redimensionner à la taille du PICTURE.
Sinon ce programme fonctionne exactement comme tu l'as décrit dans ton message.

Un seul regret, on ne peut pas sélectionner une figure, déjà dessinée, pour la retravailler.

Bravo pour pour ce code.

A+
Revenir en haut Aller en bas
JL35




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

Dessin sur un picture Empty
MessageSujet: Re: Dessin sur un picture   Dessin sur un picture EmptyMer 29 Nov 2017 - 21:18

Bonsoir Jean Claude,
et d'abord merci pour tes commentaires.
En ce qui concerne les retours arrière, j'y ai bien pensé, mais ça voudrait dire qu'il faudrait mémoriser chaque action effectuée, et ça pourrait devenir très lourd à archiver et à gérer. Là j'ai voulu faire un truc tout simple, et on n'a qu'un seul droit à l'erreur (annuler la dernière action).
Et pour l'image de fond, je dirais qu'on a intérêt à dimensionner le picture aux dimensions de l'image !

J'ai ajouté des HINT sur les outils en guise de mode d'emploi, mais je n'ai pas encore répercuté là-haut.

Et tous mes voeux pour ton fils (qui est quand même un grand garçon) et son épouse !

***** A propos de la commande HINT *****

Je voulais faire une intervention dans la rubrique 'Aide', mais je vois que le sujet a déjà été évoqué, notamment par l'ami papydall, et que le problème posé n'a pas eu de suite.

En effet, la durée d'affichage d'un HINT est d'à peine 3 secondes, ce qui est trop court quand le texte est un peu long, et notamment qu'il comporte plusieurs lignes comme dans mon cas, ce qui ne laisse pas le temps de le lire en entier, et c'est un peu agaçant de devoir le faire réafficher plusieurs fois !

Dommage qu'on ne puisse pas moduler cette durée d'affichage (ou à la rigueur qu'elle soit modulée automatiquement en fonction de la longueur du texte).
Ou mieux peut-être, que le texte reste affiché tant que le curseur reste sur l'objet (ce que je croyais au départ)..
Revenir en haut Aller en bas
Contenu sponsorisé





Dessin sur un picture Empty
MessageSujet: Re: Dessin sur un picture   Dessin sur un picture Empty

Revenir en haut Aller en bas
 
Dessin sur un picture
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Exemple de dessin dans un picture chargé
» Boîte à outils de dessin dans un picture
» Dessin sur A4
» Dessin d'arc
» Dessin

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: