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
» StratégoV8 et V9
par Minibug Aujourd'hui à 1:10

» Rotation d'une image d'un angle quelconque
par JL35 Hier à 23:02

» GRID_LOAD
par Jean Claude Hier à 21:04

» HVIEWER
par Yannick Hier à 20:31

» KGF_dll - nouvelles versions
par Klaus Mar 16 Jan 2018 - 21:28

» Déformation d'image en trapèze
par mindstorm Mar 16 Jan 2018 - 21:06

» Mah-Jong américain
par Jean Claude Lun 15 Jan 2018 - 19:37

» Problème avec Deepl
par Klaus Lun 15 Jan 2018 - 0:34

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Dessin sur un picture

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



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

MessageSujet: Dessin sur un picture   Mer 29 Nov 2017 - 17: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:
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
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Dessin sur un picture   Mer 29 Nov 2017 - 22: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
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Dessin sur un picture   Mer 29 Nov 2017 - 23: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
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Dessin sur un picture   

Revenir en haut Aller en bas
 
Dessin sur un picture
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...
» Taille des polices pour Print dans un Picture
» Création de boutons avec images et textes dessinés
» Objet PICTURE
» [Résolu] sprite 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: