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
» Bataille navale SM
Pour coincer la bulle Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Pour coincer la bulle Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Pour coincer la bulle Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Pour coincer la bulle Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Pour coincer la bulle Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Pour coincer la bulle Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Pour coincer la bulle Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Pour coincer la bulle Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Pour coincer la bulle Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Pour coincer la bulle Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Pour coincer la bulle Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Pour coincer la bulle Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Pour coincer la bulle Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Pour coincer la bulle Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Pour coincer la bulle Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal

 

 Pour coincer la bulle

Aller en bas 
3 participants
AuteurMessage
JL35




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

Pour coincer la bulle Empty
MessageSujet: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 17:51

Promis juré je n'ai pas copié sur Klaus...
Quelque chose de beaucoup moins sophistiqué que ce qu'a fait l'ami Klaus, pour désigner et commenter un point précis d'une image (ici dans un picture): un cadre avec un texte et une flèche vers le point, sous la forme d'une sub.
Code:
DIM txt$,x%,y%,pos%,typ%,rc$,x2%,y2%
rc$ = CHR$(13)+CHR$(10)
width 0,660: height 0,520: border_small 0
PICTURE 1: WIDTH 1,640: HEIGHT 1,480
FILE_LOAD 1,"C:\GRAPH\JPG\goldgate.jpg": ' image 640 x 480 (exemple)
txt$ = "San Francisco: pont du Golden Gate"+rc$+"qui relie la baie au Pacifique."
typ% = 1: pos% = 4: x% = 250: y% = 100: ' rectangle arrondi
Bulle(1,x%,y%,pos%,typ%,txt$)
txt$ = "Ceci est"+rc$+"un petit voilier"
typ% = 3: pos% = 8: x% = 530: y% = 360: ' ellipse
Bulle(1,x%,y%,pos%,typ%,txt$)
txt$ = "Mille sabords !"+rc$+"Y a-t'il quelqu'un"+rc$+"à bord ?"
typ% = 1: pos% = 3: x% = 565: y% = 270: ' cercle
Bulle(1,x%,y%,pos%,typ%,txt$)
x% = 320: y% = 240: typ% = 1: ' différentes positions
pos% = 1: x% = 200: y% = 240: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 2: x% = 200: y% = 220: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 3: x% = 220: y% = 220: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 4: x% = 240: y% = 220: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 5: x% = 240: y% = 240: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 6: x% = 240: y% = 260: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 7: x% = 220: y% = 260: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
pos% = 8: x% = 200: y% = 260: Bulle(1,x%,y%,pos%,typ%,"- "+STR$(pos%)+" -")
END
' ====================
SUB Bulle(p%,x%,y%,pos%,typ%,txt$)
  ' Apposer un texte txt$ en forme de bulle sur le picture p%
  ' typ% = 0: rectangle, = 1: rectangle arrondi, = 2: cercle, = 3: ellipse
  ' NB: rectangle coins arrondis non codé :
  ' Flèche pointant en x%,y%
  ' pos% = position de la bulle par rapport au point cible x%,y%
  '   =1 à gauche, =2 en haut à gauche, =3 au dessus à gauche, =4 en haut à droite
  '   =5 à droite, =6 en bas à droite,  =7 au dessous,         =8 en bas à gauche
  ' A moduler: couleurs de trait et de fond, épaisseur trait, taille texte, etc.
  DIM_LOCAL rc$,i%,k%,nl%,tx$(10),wt%,hl%,ht%,wb%,hb%,xb%,yb%,d%,x1%,y1%,ra%,xc%,yc%
  DIM_LOCAL an%,a1%,a2%,a%,ol%,oh%,et%
  rc$ = CHR$(13)+CHR$(10)
  2D_TARGET_IS p%: PRINT_TARGET_IS p%: FONT_SIZE p%,10: ' police/taille à moduler
  k% = INSTR(txt$,rc$): wt% = 0
  WHILE k% > 0
      nl% = nl%+1: tx$(nl%) = LEFT$(txt$,k%-1): txt$ = RIGHT_POS$(txt$,k%+2)
      i% = TEXT_WIDTH(tx$(nl%),p%): IF i% > wt% THEN wt% = i%
      k% = INSTR(txt$,rc$)
  END_WHILE
  nl% = nl%+1: tx$(nl%) = txt$
  i% = TEXT_WIDTH(tx$(nl%),p%): IF i% > wt% THEN wt% = i%
  hl% = TEXT_HEIGHT(tx$(1),p%): ht% = hl%*nl%: ' hauteur totale du texte
  wb% = wt%+20: hb% = ht%+10: ' dimensions du cadre extérieur
  IF typ% = 2 THEN i% = MAX(wb%,hb%): wb% = i%: hb% = i%: ' cercle
  d% = 40: ' longueur du segment flèche
  SELECT pos%
      CASE 1: xb% = x%-wb%-d%: yb% = y%-hb%/2
      CASE 2: xb% = x%-wb%-d%: yb% = y%-hb%-d%
      CASE 3: xb% = x%-wb%/2: yb% = y%-hb%-d%
      CASE 4: xb% = x%+d%: yb% = y%-hb%-d%
      CASE 5: xb% = x%+d%: yb% = y%-hb%/2
      CASE 6: xb% = x%+d%: yb% = y%+d%
      CASE 7: xb% = x%-wb%/2: yb% = y%+d%
      CASE 8: xb% = x%-wb%-d%: yb% = y%+d%
  END_SELECT
  xc% = xb%+wb%/2: yc% = yb%+hb%/2: ' centre de la bulle
  ' Tracé de la flèche
  IF xc% = x% THEN xc% = xc%+1
  IF yc% = y% THEN yc% = yc%+1
  2D_PEN_WIDTH 3: 2D_PEN_COLOR 255,0,0: 2D_LINE xc%,yc%,x%,y%: ' Tracé de l'axe de la flèche
  DEGREES
  an% = ATN((y%-yc%)/(x%-xc%)): ' inclinaison de l'axe de la flèche
  d% = 15: a% = 30: ' longueur et écartement (angle) des ailes de la flèche
  a1% = an%-a%: a2% = an%+a%
  IF x%>xc% AND y%<yc% THEN a1% = a1%+180: a2% = a2%+180
  IF x%>xc% AND y%>yc% THEN a1% = a1%+180: a2% = a2%-180
  x1% = d%*COS(a1%)+x%: y1% = d%*SIN(a1%)+y%: 2D_LINE x%,y%,x1%,y1%
  x1% = d%*COS(a2%)+x%: y1% = d%*SIN(a2%)+y%: 2D_LINE x%,y%,x1%,y1%
  2D_FILL_COLOR 255,255,0: ' couleur de fond
  et% = 3: 2D_PEN_WIDTH et%: ' épaisseur et couleur de trait
  SELECT typ%
      CASE 0: 2D_RECTANGLE xb%,yb%,xb%+wb%,yb%+hb%
      CASE 1: ra% = 8: ' rectangle coins arrondis, rayon arbitraire de l'arrondi
              2D_PEN_COLOR 255,255,0: 2D_RECTANGLE xb%+et%-2,yb%+ra%-1,xb%+wb%-et%+3,yb%+hb%-ra%+1
              2D_RECTANGLE xb%+2*et%-2,yb%+et%-1,xb%+wb%-2*et%+3,yb%+hb%-et%+2
              2D_PEN_COLOR 255,0,0
              xc% = xb%+ra%: yc% = yb%+ra%: 2D_POLY_FROM xb%,yb%+ra%
              FOR a% = 180 TO 270 STEP 45: 2D_POLY_TO xc%+ra%*COS(a%),yc%+ra%*SIN(a%): NEXT a%
              2D_POLY_TO xb%+wb%-ra%,yb%
              xc% = xb%+wb%-ra%
              FOR a% = 270 TO 360 STEP 45: 2D_POLY_TO xc%+ra%*COS(a%),yc%+ra%*SIN(a%): NEXT a%
              2D_POLY_TO xb%+wb%,yb%+hb%-ra%
              yc% = yb%+hb%-ra%
              FOR a% = 0 TO 90 STEP 45: 2D_POLY_TO xc%+ra%*COS(a%),yc%+ra%*SIN(a%): NEXT a%
              2D_POLY_TO xb%+ra%,yb%+hb%
              xc% = xb%+ra%
              FOR a% = 90 TO 180 STEP 45: 2D_POLY_TO xc%+ra%*COS(a%),yc%+ra%*SIN(a%): NEXT a%
              2D_POLY_TO xb%,yb%+ra%
      CASE 2: 2D_CIRCLE xc%,yc%,wb%/2
      CASE 3: wb% = wb%*12/10: hb% = hb%*12/10
              DLL_ON "gdi32.dll": k% = HANDLE_CANVAS(p%)
              i% = DLL_CALL5("Ellipse",k%,xb%,yb%,xb%+wb%,yb%+hb%)
              DLL_OFF
  END_SELECT
  x% = xb%+(wb%-wt%)/2: y% = yb%+(hb%-ht%)/2: ' centrage du texte
  FOR i% = 1 TO nl%: PRINT_LOCATE x%,y%: PRINT tx$(i%): y% = y%+hl%: NEXT i%
END_SUB
' ====================
Pour coincer la bulle Golden11
Le rectangle/bulle se dimensionne automatiquement en fonction du texte inclus.
On peut faire partir la flèche des 4 coins, ou du haut ou du bas de la bulle.
Pour modifier les paramètres annexes: police, taille, couleur, enrichissements, couleur du fond, épaisseur du trait, il faut intervenir dans le code, je ne l'ai pas mis dans les paramètres d'appel à la sub pour ne pas compliquer, mais tout est possible.
Et tout en Panoramic.

Il serait facile d'envisager d'autres formes d'enveloppe un peu plus artistiques que le rectangle, cercle ou ellipse par exemple, avec un paramètre supplémentaire...

Edit: petite simplification de la sub.
Edit 7/4: ajout des rectangles à coins arrondis, ellipses et cercles. Ça complique un peu, mais bon, qui peut le plus peut le moins.


Dernière édition par JL35 le Sam 8 Avr 2017 - 15:13, édité 5 fois
Revenir en haut Aller en bas
papydall

papydall


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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 18:40

Spoiler:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 20:15

@Papydall,
A priori, tu as compris le fonctionnement du programme de JL35 et surtout tu lui a trouvé une utilité. Razz

@JL35,
Sauf erreur tu as déjà publié ce code, qu'elles sont les nouveautés ?

A+
Revenir en haut Aller en bas
JL35




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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 20:16

Bel exemple d'application, en effet ! (enfin... je devrais plutôt dire sans effets...)

Bonsoir Jean Claude... j'ai déjà publié ça moi ? je viens juste de l'écrire...
Et je ne me souviens pas d'avoir déjà fait la même chose... scratch
Est-ce que je radote sans m'en rendre compte ? En tout cas, ni sur le forum ni chez moi je ne trouve rien de semblable...

Par contre l'image de fond, oui, je m'en sers tout le temps !
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 21:09

J'ai pourtant l'impression que tu avais déjà fait quelque-chose de similaire scratch
J’essaierais de retrouver. Mais tu as peut-être raison, c'est l'image qui ma "enduit d'erreur" ! Very Happy

Bravo quand même, c'est du 100% Panoramic sous forme de SUB. cheers

A+
Revenir en haut Aller en bas
JL35




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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 21:58

J'ai déjà fait du texte sur image sous diverses formes, peut-être même dans un cadre, mais pas avec la flèche, je ne crois pas du moins (pas facile de faire la pointe de flèche...).
J'ai déjà fait de la moto aussi (autrefois, très occasionnellement), mais pas comme papydall, sans passager(e), et c'est pas le pilote le mieux placé. Enfin, il vaut mieux qu'il regarde la route...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyJeu 6 Avr 2017 - 22:23

Exact ! c'est du texte dans un encadré et dans la photo que tu avais déjà publié.

question moto: comme disais ma grand mère, "Ah! ces jeunes, y s'ont rien à se foutre sur le cul, mais ils se payent des grosse motos"
lol!


Dernière édition par Jean Claude le Ven 7 Avr 2017 - 18:53, édité 1 fois
Revenir en haut Aller en bas
JL35




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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptyVen 7 Avr 2017 - 16:42

J'ai ajouté les rectangles arrondis, cercles et ellipses.
Ça remplace le code antérieur.
Pour le code postérieur, voir plutôt avec papydall Very Happy
Revenir en haut Aller en bas
JL35




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

Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle EmptySam 8 Avr 2017 - 15:14

Petits ajouts.
Revenir en haut Aller en bas
Contenu sponsorisé





Pour coincer la bulle Empty
MessageSujet: Re: Pour coincer la bulle   Pour coincer la bulle Empty

Revenir en haut Aller en bas
 
Pour coincer la bulle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pour coincer la bulle
» Zik à bulles pour coincer la bulle en musique!
» Pour mes petits-enfants et pour les vôtres
» Bulle de texte sur image
» Aide-mémoire des mots-clés Panoramic

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: