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.
Cadre pour image Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Cadre pour image Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Cadre pour image Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Cadre pour image Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Cadre pour image Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Cadre pour image Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Cadre pour image Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Cadre pour image Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Cadre pour image Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Cadre pour image Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Cadre pour image Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Cadre pour image Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Cadre pour image Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Cadre pour image Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Cadre pour image 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 :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

 

 Cadre pour image

Aller en bas 
3 participants
AuteurMessage
JL35




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

Cadre pour image Empty
MessageSujet: Cadre pour image   Cadre pour image EmptyVen 8 Juin 2018 - 14:08

Pour encadrer une image quelconque:
Code:
DIM x%,y%,e%,coef
width 0,800: height 0,640
x% = 50: y% = 40: e% = 30: ' coordonnées et épaisseur du cadre
coef = 0.75
Cadre("C:\GRAPH\JPG\goldgate.jpg",x%,y%,coef,e%,255*256*256): ' cadre rouge
END
' ==============================================================================
SUB Cadre(f$,x%,y%,coef,e%,rgb%)
  ' Affichage sur la cible 2D de l'image f$ (JPG ou BMP) entourée d'un  cadre
  ' dentelé d'épaisseur e%, couleur rgb% (65536*R+256*G+B)
  ' x%,y% sont les coordonnées du coin supérieur gauche de l'image elle-même.
  ' coef = coefficient de réduction ou d'agrandissement de l'image d'origine
  '        <1 réduction, >1 agrandissement (exemples: coef = 3/4, coef = 1.2)
  DIM_LOCAL tp%,ft$,v%(8),w%,h%,l%,p%,n%,xc%,yc%,wc%,hc%,x1%,y1%,r%,g%,b%
  ft$ = "Tempor.bmp": ' temporaire
  tp% = 920: ' objet temporaire
  IF UPPER$(FILE_EXTRACT_EXTENSION$(f$))<>".BMP"
      PICTURE tp%: LEFT tp%,2000
      FILE_LOAD tp%,f$: FILE_SAVE tp%,ft$: f$ = ft$: DELETE tp%
  END_IF
  FILEBIN_OPEN_READ 9,f$
      FILEBIN_POSITION 9,18: FILEBIN_BLOCK_READ 9,8,v%(0)
      w% = v%(0)+256*v%(1)+65536*v%(2)+16777216*v%(3)
      h% = v%(4)+256*v%(5)+65536*v%(6)+16777216*v%(7)
  FILEBIN_CLOSE 9
  IF coef <> 1
      w% = w%*coef: h% = h%*coef
      SCENE2D tp%: HIDE tp%: WIDTH tp%,w%: HEIGHT tp%,h%
      SPRITE tp%: SPRITE_FILE_LOAD tp%,f$: SPRITE_SCALE tp%,coef,coef
      SNAPSHOT tp%,ft$: f$ = ft$: DELETE tp%
  END_IF
  IF e%<(w%/50) THEN e% = w%/50
  wc% = w%+2*e%: hc% = h%+2*e%: ' enveloppe du cadre
  l% = hc%/20: ' largeur d'une dent (arbitraire)
  n% = hc%/l%: hc% = n%*l%: ' ajustage des dimensions du cadre
  n% = wc%/l%: wc% = n%*l%
  xc% = x%-(wc%-w%)/2: yc% = y%-(hc%-h%)/2
  p% = e%/3: ' profondeur des dents (moduler ?)
  2D_PEN_WIDTH 1: 2D_LINE xc%,yc%,xc%,yc%: ' coin sumérieur gauche du cadre
  FOR y1% = yc% TO yc%+hc%-l% STEP l%: ' gauche
      2D_POLY_TO xc%+p%,y1%+l%/2: 2D_POLY_TO xc%,y1%+l%
  NEXT y1%
  FOR x1% = xc% TO xc%+wc%-l% STEP l%: ' bas
      2D_POLY_TO x1%+l%/2,yc%+hc%-p%: 2D_POLY_TO x1%+l%,yc%+hc%
  NEXT x1%
  FOR y1% = yc%+hc% TO yc%+l% STEP -1*l%: ' droite
      2D_POLY_TO xc%+wc%-p%,y1%-l%/2: 2D_POLY_TO xc%+wc%,y1%-l%
  NEXT y1%
  FOR x1% = xc%+wc% TO xc%+l% STEP -1*l%: ' haut
      2D_POLY_TO x1%-l%/2,yc%+p%: 2D_POLY_TO x1%-l%,yc%
  NEXT x1%
  2D_POLY_TO xc%,yc%: ' terminer
  2D_PEN_WIDTH 1: 2D_RECTANGLE x%-1,y%-1,x%+w%+1,y%+h%+1: ' intérieur du cadre (image)
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  2D_FLOOD x%-2,y%,r%,g%,b%: ' couleur du cadre
  IMAGE tp%: FILE_LOAD tp%,f$: 2D_IMAGE_PASTE tp%,x%,y%: DELETE tp%
  IF FILE_EXISTS(ft$) = 1 THEN FILE_DELETE ft$
END_SUB
' ==============================================================================
NB: pour la sub, la position x,y et les dimensions à fournir sont celles du contenu (image).
Cadre pour image Imag10
Pour encadrer n'importe quoi, un paysage, le portrait de sa belle-mère... je précise tout de suite pour les mauvaises langues que ci-dessus, malgré mon âge certain, ce n'est  pas la mienne !

Edit 9/6: j'ai un peu modifié, les dimensions de l'image sont calculées dans la sub, c'est plus simple.
10/6: On fournit en paramètre de la sub le coefficient de réduction ou d'agrandissement de l'image encadrée par rapport à l'image fournie. Par exemple coef = 1/4, ou coef = 1.7 etc.


Dernière édition par JL35 le Dim 10 Juin 2018 - 16:16, édité 4 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyVen 8 Juin 2018 - 20:49

Salut JL35 !

Cadre pour image Image_34

J'ai préféré comme toi éviter la photo de ma belle mère, mais pas pour les mêmes raisons  Razz

lol!
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyVen 8 Juin 2018 - 21:15

Merci pour les fleurs Jean Claude, et j'ai un peu honte parce que quand je parlais de mauvaises langues j'avoue que j'ai un peu pensé à toi... Embarassed
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyVen 8 Juin 2018 - 21:25

Tiens ! bizarre, je m'en doutais un peu.
lol!
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 9 Juin 2018 - 10:09

Je me doutais que tu t'en doutais... Very Happy
J'ai un peu modifié la sub, c'est elle qui calcule les dimensions de l'image et qui l'affiche dans le cadre (image jpg ou bmp),
C'est plus simple comme ça.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 9 Juin 2018 - 13:31

Je me doutais que tu t'en doutais que je m'en doutais... Razz

Sérieusement, c'est bien plus pratique avec le calcul automatique de la taille de l'image.
J'ai pris une photo de mon appareil, mais elle sont énormes. Même réduit à 40% elle dépasse encore la taille de mon écran, mais la SUB fait le bouleau boulot quand même. cheers

Sans vouloir abuser (en réalité je m'en fout, c'est juste une formule de politesse...), çà serait super que le programme détermine lui-même la taille adéquate de l'image en fonction de l'écran et de l'encadrement.

A+ Very Happy


Dernière édition par Jean Claude le Sam 9 Juin 2018 - 17:17, édité 1 fois
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 9 Juin 2018 - 13:58

Citation :
...mais la SUB fait le bouleau quand même
euh... ça c'est pas du boulot mon ami !

Ceci dit, tu voudrais que la sub redimensionne l'image automatiquement, c'est autre chose.
Dans mon truc, c'est le cadre qui s'adapte aux dimensions de l'image, si je comprends bien tu voudrais que ce soit l'image qui s'adapte au cadre... c'est un peu plus compliqué, il faudrait connaître d'avance les proportions de l'image pour fixer les proportions du cadre...

Je pense que le mieux c'est de redimensionner l'image aux dimensions voulues avant d'appeler la sub de cadrage, c'est assez simple, il y a plusieurs méthodes même en panoramic pur, par exemple:
Code:
SUB RedimImg(f$,w%,h%,fr$)
  ' Redimensionner l'image f$ (BMP ou JPG) en w%,h%, résultat dans fr$ (BMP)
  ' Si fr$ = "", résultat dans le prese-papier
  ' Si w% = 0 ou h% = 0: redimensionnement proportionnel
  DIM_LOCAL fm$,wi%,hi%,cx,cy,op%
  fm$ = "Provimg.bmp"
  op% = 1900: ' objet provisoire
  IF UPPER$(FILE_EXTRACT_EXTENSION$(f$)) = ".JPG"
      PICTURE op%: FILE_LOAD op%,f$: FILE_SAVE op%,fm$: DELETE op%: f$ = fm$
  END_IF
  FILEBIN_OPEN_READ 1,f$
      FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
      FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
  IF h% = 0 THEN h% = w%*hi%/wi%
  IF w% = 0 THEN w% = h%*wi%/hi%
  cx = w%/wi%: cy = h%/hi%
  SCENE2D op%: HIDE op%: WIDTH op%,w%: HEIGHT op%,h%
  SPRITE op%: SPRITE_FILE_LOAD op%,f$: SPRITE_SCALE op%,cx,cy
  IF fr$ = ""
      SNAPSHOT op%,fm$
      PICTURE op%+1: FILE_LOAD op%+1,fm$: CLIPBOARD_COPY op%+1
      DELETE op%+1
  ELSE
      SNAPSHOT op%,fr$
  END_IF
  DELETE op%: IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$
END_SUB


Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 9 Juin 2018 - 17:16

C'est exactement ce qu'il faut, ensuite on encadre.

Pour l'appel de la SUB RedimImg(f$,w%,h%,fr$) on remplace w%,h% par SCREEN_X et SCREEN_Y diminué pour SCREEN_Y de la hauteur du bandeau+le bord inférieur et pour SCREEN_X des 2 bords (gauche et droite).

Merci JL35.

A+
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 9 Juin 2018 - 19:25

C'est quand même un cas particulier, de couvrir tout l'écran avec une image.
Et même dans ce cas il faut mettre un des paramètre w% ou h% = 0, si on veut que le redimensionnement respecte les proportions de l'image, sinon comme tu as dit elle a des chances d'être déformée, si ses proportions sont différentes de celles de l'écran.

Au départ je pensais plutôt à un encadrement pour par exemple une carte de voeux, ou quelque chose du même genre.
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyDim 10 Juin 2018 - 13:53

Tiens Jean Claude (ou d'autres s'il y en a que ça intéresse ! Very Happy )

On fournit maintenant à la sub (voir au début) le coefficient de réduction ou d'agrandissement de l'image, sous forme fractionnaire: paramètre coef = par exemple 1/4 (image réduite au quart), ou 2.4 (dimensions multipliées par 2,4).
Ça permet de l'ajuster exactement à ses désirs par essais successifs. (si coef=1, pas de changement).

Attention de ne pas mettre une valeur trop élevée, genre 30 ou 50, ça gèle tout !
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyLun 11 Juin 2018 - 10:37

Salut JL35,

Il faut que teste cette nouvelle fonctionnalité.

A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyMar 12 Juin 2018 - 10:46

C'est fait JL35 Very Happy

J'ai pris une photo de 1600x1200 avec un coef de 0.44.
Résultat: affichage quasi instantané (moins d'une demi-seconde). Le coef de 0.44 permet d’avoir la photo encadrée avec une occupation maximum de FORM 0 (800x640).

Bravo !  cheers

Prochaine étape: Embarassed
Définir le bon coef automatiquement en fonction de screen_x et screen_y. Razz geek

A+
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyMar 12 Juin 2018 - 13:18

Salut Jean Claude,
C'est facile à faire, mais pourquoi veux-tu absolument un cadre qui remplisse entièrement le moniteur ? c'est quand même un cas particulier... et puis comme l'image d'origine n'est généralement pas dans les mêmes proportions Hauteur/largeur que le moniteur, il y aura forcément des vides, soit à droite, soit en bas, si on ne veut pas déformer l'image pour tout remplir...

Et ton coef de 0,44 est le cas vraiment particulier d'une image 1600x1200 pour une image affichée 704x528 (1600x0.44=704, 1200x0.44=528)... on peut jouer aussi sur l'épaisseur du cadre.
Le coefficient à appliquer dépend et des dimensions de l'origine, et des dimensions à afficher.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyMar 12 Juin 2018 - 13:42

Citation :
C'est facile à faire, mais pourquoi veux-tu absolument un cadre qui remplisse entièrement le moniteur ? c'est quand même un cas particulier... et puis comme l'image d'origine n'est généralement pas dans les mêmes proportions Hauteur/largeur que le moniteur, il y aura forcément des vides, soit à droite, soit en bas, si on ne veut pas déformer l'image pour tout remplir...

En fait, je veux pouvoir encadrer une photo en utilisant le maximum d'espace sur l'écran.
Donc il faut que le programme définisse lui même la bonne largeur et hauteur de FORM 0 sans déformation de la photo.

J'ai bossé un peu dessus, mais je ne suis pas encore arrivé au bout.
Voilà ou j'en suis (Avec ton fichier photo):
Code:
DIM x%,y%,e%,coef,wmax,hmax

width 0,screen_x: height 0,screen_y
x% = 30: y% = 40: e% = 30: ' coordonnées et épaisseur du cadre
wmax=width(0) : hmax=height(0)
' message str$(wmax)+" "+str$(hmax)
' coef = 1
Cadre("C:\GRAPH\JPG\goldgate.jpg",x%,y%,coef,e%,255*256*256): ' cadre rouge
END
' ==============================================================================
SUB Cadre(f$,x%,y%,coef,e%,rgb%)
  ' Affichage sur la cible 2D de l'image f$ (JPG ou BMP) entourée d'un  cadre
  ' dentelé d'épaisseur e%, couleur rgb% (65536*R+256*G+B)
  ' x%,y% sont les coordonnées du coin supérieur gauche de l'image elle-même.
  ' coef = coefficient de réduction ou d'agrandissement de l'image d'origine
  '        <1 réduction, >1 agrandissement (exemples: coef = 3/4, coef = 1.2)
  DIM_LOCAL tp%,ft$,v%(8),w%,h%,l%,p%,n%,xc%,yc%,wc%,hc%,x1%,y1%,r%,g%,b%,coef1,coef2
  ft$ = "Tempor.bmp": ' temporaire
  tp% = 920: ' objet temporaire
  IF UPPER$(FILE_EXTRACT_EXTENSION$(f$))<>".BMP"
      PICTURE tp%: LEFT tp%,2000
      FILE_LOAD tp%,f$: FILE_SAVE tp%,ft$: f$ = ft$: DELETE tp%
  END_IF
  FILEBIN_OPEN_READ 9,f$
      FILEBIN_POSITION 9,18: FILEBIN_BLOCK_READ 9,8,v%(0)
      w% = v%(0)+256*v%(1)+65536*v%(2)+16777216*v%(3)
      h% = v%(4)+256*v%(5)+65536*v%(6)+16777216*v%(7)
  FILEBIN_CLOSE 9

coef1 = wmax/w%
coef2 = hmax/h%
coef = 0+frac(coef1+coef2)

message str$(coef)

  IF coef <> 1
      w% = w%*coef: h% = h%*coef
      SCENE2D tp%: HIDE tp%: WIDTH tp%,w%: HEIGHT tp%,h%
      SPRITE tp%: SPRITE_FILE_LOAD tp%,f$: SPRITE_SCALE tp%,coef,coef
      SNAPSHOT tp%,ft$: f$ = ft$: DELETE tp%
  END_IF
  IF e%<(w%/50) THEN e% = w%/50
  wc% = w%+2*e%: hc% = h%+2*e%: ' enveloppe du cadre
  l% = hc%/20: ' largeur d'une dent (arbitraire)
  n% = hc%/l%: hc% = n%*l%: ' ajustage des dimensions du cadre
  n% = wc%/l%: wc% = n%*l%
  xc% = x%-(wc%-w%)/2: yc% = y%-(hc%-h%)/2
  p% = e%/3: ' profondeur des dents (moduler ?)
  2D_PEN_WIDTH 1: 2D_LINE xc%,yc%,xc%,yc%: ' coin sumérieur gauche du cadre
  FOR y1% = yc% TO yc%+hc%-l% STEP l%: ' gauche
      2D_POLY_TO xc%+p%,y1%+l%/2: 2D_POLY_TO xc%,y1%+l%
  NEXT y1%
  FOR x1% = xc% TO xc%+wc%-l% STEP l%: ' bas
      2D_POLY_TO x1%+l%/2,yc%+hc%-p%: 2D_POLY_TO x1%+l%,yc%+hc%
  NEXT x1%
  FOR y1% = yc%+hc% TO yc%+l% STEP -1*l%: ' droite
      2D_POLY_TO xc%+wc%-p%,y1%-l%/2: 2D_POLY_TO xc%+wc%,y1%-l%
  NEXT y1%
  FOR x1% = xc%+wc% TO xc%+l% STEP -1*l%: ' haut
      2D_POLY_TO x1%-l%/2,yc%+p%: 2D_POLY_TO x1%-l%,yc%
  NEXT x1%
  2D_POLY_TO xc%,yc%: ' terminer
  2D_PEN_WIDTH 1: 2D_RECTANGLE x%-1,y%-1,x%+w%+1,y%+h%+1: ' intérieur du cadre (image)
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  2D_FLOOD x%-2,y%,r%,g%,b%: ' couleur du cadre
  IMAGE tp%: FILE_LOAD tp%,f$: 2D_IMAGE_PASTE tp%,x%,y%: DELETE tp%
  IF FILE_EXISTS(ft$) = 1 THEN FILE_DELETE ft$
END_SUB
' ==============================================================================



A+
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyMar 12 Juin 2018 - 16:05

Pas facile d'arriver à un résultat exact par calcul en tenant compte de tous les paramètres: dimensions des bordures de Form 0, hauteur de la barre des tâches Windows... et en plus il reste toujours une partie d'écran libre (horizontalement) si on respecte les proportions de l'image.
D'autant plus que le cadre n'a pas une largeur (épaisseur) rigoureusement fixe, elle est ajustée de quelques pixels en fonction des autres paramètres.

A mon avis le plus simple c'est de procéder par tâtonnements successifs... à moins de vouloir faire un slide-show d'une série d'images, auquel cas il faut automatiser... quoique, si toutes les images sont de mêmes dimensions...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyMar 12 Juin 2018 - 16:31

Pour le moment, je n'ai rien fait de plus car j'ai entamé des tests sur PanExpress.
Mais j'ai une idée que je vais essayer, je te tiens au courant.

A+
Revenir en haut Aller en bas
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 20 Avr 2019 - 17:50

En attendant le résultat de l'idée de Jean Claude ( Very Happy ), une autre façon d'encadrer une image, genre timbre-poste:
Code:
DIM f$,x,y,w,h,nw,cb%,cr%
f$ = "C:\GRAPH\BMP\goldgate480.bmp": image 480 x 360
FILEBIN_OPEN_READ 1,f$
    FILEBIN_POSITION 1,18: w = FILEBIN_READ(1)+256*FILEBIN_READ(1)
    FILEBIN_POSITION 1,22: h = FILEBIN_READ(1)+256*FILEBIN_READ(1)
FILEBIN_CLOSE 1
x = 30: y = 30
HEIGHT 0,h+3*y : WIDTH 0,w+3*x: BORDER_SMALL 0
PICTURE 1: WIDTH 1,2*x+w: HEIGHT 1,2*y+h
2D_TARGET_IS 1
2D_PEN_WIDTH 3: ' épaisseur trait
2D_PEN_COLOR 128,0,0: ' bordure rouge foncé
IMAGE 2: FILE_LOAD 2,f$
2D_IMAGE_PASTE 2,x,y
nw = 16: ' nombre d'ondulations sur la longueur
Cadre_ondule(x,y,w,h,nw)
cb% = 128: cr% = 65536*255+256*255+255: ' couleurs bordure et remplissage
Remplir(1,10,10,cb%,cr%)
END
' ==============================================================================
SUB Cadre_ondule(x,y,w,h,nw)
  ' Tracé d'un cadre ondulé en x,y, dimensions w x h, sur la cible 2D
  ' nw = nombre d'ondulations horizontales sur la largeur
  ' (paramètres courants: couleur, épaisseur trait, etc)
  DIM_LOCAL nh,r,s,e,x1,y1,i
  nh = 1+INT(nw*h/w): ' nombre d'ondulations en hauteur
  r = w/(2*(2*nw-1)): IF ((2*nh-1)*2*r)>h THEN nh = nh-1: ' si dépassement en hauteur
  x1 = x+r: y1 = y+r
  DEGREES
  s=270: e=0: 2D_ARC x1,y1,r,s,e: ' départ, angle haut/gauche
  x = x1: y = y1
  FOR i = 1 TO nw-1: ' haut
      x = x+2*r
      s=0: e=180: 2D_ARC x,y,r,s,e
      s=180: e=360: IF i = nw-1 THEN e=270
      x = x+2*r: 2D_ARC x,y,r,s,e
  NEXT i
  FOR i = 1 TO nh-1: ' droite
     y = y+2*r
     s=270: e=90: 2D_ARC x,y,r,s,e
     s=90: e=270: IF i = nh-1 THEN e=180
     y = y+2*r: 2D_ARC x,y,r,s,e
  NEXT i
  FOR i = 1 TO nw-1: ' bas
      x = x-2*r
      s=180: e=360: 2D_ARC x,y,r,s,e
      s=0: e=180: IF i = nw-1 THEN e = 90
      x = x-2*r: 2D_ARC x,y,r,s,e
  NEXT i
  FOR i = 1 TO nh-1: ' gauche
      y = y-2*r
      s=90: e=270: 2D_ARC x,y,r,s,e
      s=270: e=90: y = y-2*r: 2D_ARC x,y,r,s,e
  NEXT i
END_SUB
' ==============================================================================
SUB Remplir(p%,x%,y%,cb%,cr%)
  ' Dans le picture p%, à partir du point x%,y%, remplir de la couleur cr% la zone
  ' délimitée par la couleur de bordure cb% (Attention: format BGR)
  DIM_LOCAL res%
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll"
  CLIPBOARD_COPY p%
  res% = DLL_CALL0("LoadPicture"): ' image presse-papier -> image interne
  res% = DLL_CALL4("FloodfillPictureToBorderColor",x%,y%,cr%,cb%)
  res% = DLL_CALL0("SavePicture"): ' image interne -> presse-papier
  CLIPBOARD_PASTE p%
  DLL_OFF
END_SUB
' ==============================================================================
Cadre pour image Cadre10
Image quelconque insérée dans la cible 2D en x,y, dimensions w x h.

On peut moduler le nombre d'ondulations de la partie horizontale (il sera calculé en conséquence pour la partie verticale), les paramètres de trait sont les paramètres courant: épaisseur, couleur.
Pour le remplissage (détourage) externe, ce serait possible en Panoramic pur, mais extrêmement long, aussi j'ai utilisé KGF.dll (sub Remplir).

NB La largeur de l'image finale est celle de l'image d'origine, sa hauteur peut être inférieure, d'autant plus que le nombre d'ondulations est faible (avec l'ajustage pour faire coïncider les coins)..
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptySam 20 Avr 2019 - 23:31

Je réagis un peu tardivement, mais ma réflexion vaut ce qu'elle vaut:
Citation :
Pas facile d'arriver à un résultat exact par calcul en tenant compte de tous les paramètres: dimensions des bordures de Form 0, hauteur de la barre des tâches Windows
pourquoi le pas utiliser height_client et width_client ? On n'a plus aucun de ces problèmes...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image EmptyDim 21 Avr 2019 - 12:14

Bien sûr tu as raison Klaus, je disais ça il y a presque un an, depuis j'essaie d'utiliser systématiquement ces fonctions Width_Client et Height_Client qui résolvent le problème (mais qui sont apparues plus tard).
Revenir en haut Aller en bas
Contenu sponsorisé





Cadre pour image Empty
MessageSujet: Re: Cadre pour image   Cadre pour image Empty

Revenir en haut Aller en bas
 
Cadre pour image
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Cadre pour vos textes
» Création d'un cadre pour photo numérique
» Le code hexadécimal pour les image ???
» Création d'un script image pour page web
» partage de code - facteur premier

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: