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
» A propos des attributs de fichier
par Oscaribout Aujourd'hui à 1:53

» Problème de math
par Marc37 Hier à 23:04

» Problème de math
par braveen Hier à 21:40

» I Love You
par papydall Hier à 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Hier à 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Comment faire un picture de n'importe quelle forme ?

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

avatar

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

MessageSujet: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 4:14

Vous avez déjà voulu faire un picture sous forme de cercle ? Pas dessiner un cercle dans un picture, mais afficher une photo un peu comme dans un médaillon, sans que le rectangle englobant le cercle n'occulte le fond qui est derrière ?

Les fonctions de gestion de fenêtres de KGF.dll permettent de faire cela ! En fait, on peut composer n'importe quelle forme, en accumulant des régions rectangulaires et/ou elliptiques, pour former une seule région qui représentera le picture. Et ces "briques" de composition n'ont même pas besoin de se toucher - elles peuvent parfaitement être disjointes...

Pour la démonstration, je fais un simple cercle, placé par-dessus un mémo, pour bien montrer l'effet visuel. Au début, le cercle s'affiche avec une couleur unié, et un bouton permet de charger n'importe quelle image BMP (photo, clip-art, ...).

Techniquement, il y a une astuce. En effet, ces fonctions ont toutes besoin d'un handle de l'objet à manipuler. Or, un objet picture de Panoramic n'a pas de handle ! Donc, je crée un objet panel (lui, il a un handle !), puis le place un picture full_space dans le panel. Et j'applique les fonctions sur le handle du panel pour obtenuir l'effet escompte:
Code:
' picture_en_forme_libre.bas

label img
dim res%, region1%, region2%, f$

memo 10 : left 10,100 : height 10,420
  font_names_load 10
 
panel 1 : top 1,50 : left 1,50 : width 1,300 : height 1,300
picture 2 : parent 2,1 : full_space 2 : color 2,255,200,200

open_dialog 3 : filter 3,"Images|*.bmp"
button 4 : caption 4,"Image" : on_click 4,img

dll_on "KGF.dll"
region2% = DLL_call5("WindowAddEllipticRegion",adr(region1%),0,0,300,300)
res% = DLL_call2("WindowRegionAsWindow",handle(1),adr(region1%))
' ici, on pourrait construire une région quelconque,
' par combinaisons de régions réctangles et/ou elliptiques
' (tête de Mickey, par exemple...), et appliquer cette région à un PANEL.
' Ainsi, le picture contenu dans le panel sera automatiquement "rogné"
' selon les limites du panel.

end

' On va charger une image dans le picture:
img:
  f$ = file_name$(3)
  if f$="_" then return
  if lower$(right$(f$,4))<>".bmp" then f$ = f$ + ".bmp"
  if file_exists(f$)=0 then return
  file_load 2,f$
  return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 11:28

C'est clairement une fonction très utile. Vu la limitation par rapport aux clics sur les sprites. Ce pseudo objets permet de les remplacer assez facilement à condition d'avoir des sprites de formes assez simples (idéalement réctangulaires ou circulaires pour des raisons de simplicité)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 13:30

Ça c'est carrément génial ! ça ouvre de sacrés horizons pour de l'incrustation photo par exemple...
Je vais essayer ça illico, merci Klaus !
(dommage, j'ai du monde aujourd'hui, pas beaucoup le temps de faire joujou...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 13:42

Tant que la possibilité est là, après pour la mise en application, ce n'est qu'une question de temps et personne n'est pressé (enfin je crois Wink )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 14:31

Merci klaus !

Très intéressant, il ne nous reste plus qu'a le mettre en pratique... drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 17:53

Tout ça est  beau.
J’ai voulu faire deux (voire plus) PICTUREs de forme circulaire pour y charger des images, mais ne n’y arrive pas : seul un seul PICTURE peut être vu à la fois.
Mettre en REM la ligne 15 ou 16, permet d’avoir l’une ou l’autre image dans le cercle

Spoiler:
 

Voici mon code:

Code:

dim res%, region1%, region2%,f$,hnd%

width 0,700 : height 0,500
panel 1    : top 1,50     : left 1,50     : width 1,300  : height 1,300
picture 2  : parent 2,1   : full_space 2  : color 2,255,200,200

panel 10   : top 10,50    : left 10,370   : width 10,300 : height 10,300
picture 20 : parent 20,10 : full_space 20 : color 20,255,200,200

f$ = "c:\users\acer\desktop"
dll_on "KGF.dll"

region2% = DLL_call5("WindowAddEllipticRegion",adr(region1%),0,0,300,300)
' Mettre en REM l'une ou l'autre de deux lignes suivantes
res% = DLL_call2("WindowRegionAsWindow",handle(1),adr(region1%))
res% = DLL_call2("WindowRegionAsWindow",handle(10),adr(region1%))

file_load 02,f$ + "Klaus.bmp"    : stretch_on 02
file_load 20,f$ + "Papydall.bmp" : stretch_on 20


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Klaus

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 18:07

Et si tu utilisais des variables region3% et region4% pour la deuxième image, de sorte à avoir un jeu de variables indépendantes ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 466
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 18:19

Bonjour à tous,

@klaus
La fonction handle_canvas(n) retourne le handle de la zone graphique d'un objet système, ça ne conviendrait pas?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 18:31

ça marche  , merci klaus

Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 18:50

Trop cool !
MERCI !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 19:09

Pour faire des pions cliquables sur une image (un damier ou un plateau de jeu par exemple), c'est très pratique Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 19:24

Code:

dim res%, region1%, region2%,region3%,region4%,f$,hnd% ,i

width 0,700 : height 0,500
caption 0,"<ESC> pour terminer ... "
panel 1    : top 1,50     : left 1,50     : width 1,300  : height 1,300
picture 2  : parent 2,1   : full_space 2  : color 2,255,200,200

panel 10   : top 10,50    : left 10,370   : width 10,300 : height 10,300
picture 20 : parent 20,10 : full_space 20 : color 20,255,200,200

f$ = "c:\users\acer\desktop"+chr$(92)
dll_on "KGF.dll"

region2% = DLL_call5("WindowAddEllipticRegion",adr(region1%),0,0,300,300)
region4% = DLL_call5("WindowAddEllipticRegion",adr(region3%),0,0,300,300)

res% = DLL_call2("WindowRegionAsWindow",handle(1),adr(region1%))
res% = DLL_call2("WindowRegionAsWindow",handle(10),adr(region3%))

file_load 02,f$ + "Klaus.bmp"    : stretch_on 02 : ' A adapter ...
file_load 20,f$ + "Papydall.bmp" : stretch_on 20 : ' ... selon les cas
repeat
   for  i  = 300 to 0 step -20 : left 2,i : top 20,i :  pause 200 : next i
   for  i  = 0 to 300 step 20  : left 2,i : top 20,i :  pause 200 : next i
until scancode = 27
terminate
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Klaus

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 20:11

@Silverman:
Citation :
La fonction handle_canvas(n) retourne le handle de la zone graphique d'un objet système, ça ne conviendrait pas
Ce n'est pas la même chose. Pour 2 raisons:
1. le canvas d'un picture est géré par Panoramic. Si je commence à triturer le canvas de mon côté, Panoramic n'en sait rien, et au prochain réaffichage de l'image (ce qui est fréquent, sous Windows !), les modifications que j'y aurais apportées seraient perdues
2. même si je modifiais le canvas de sorte à n'afficher qu'un cercle, un ellipse ou n'importe quelle autre forme, l'objet picture en tant que tel n'est pas modifié. Il prend toujours le même espace dans le rectangle qui lui est alloué. Et en cliquant en-dehors du cercle affiché, mais à l'intérieur du rectangle du picture, le clic va au picture et non aux objets placés en-dessous. Or, dans le code que j'ai proposé, essaie de cliquer juste en-dehors du cercle, dans le mémo qui est en-dessous. Tu verras que le clic va dans le mémo - le reste du picture n'est pas devenu "transparent", il est carrément coupé !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Dim 8 Nov 2015 - 22:00

Klaus, je suis en train de bricoler avec ces fonctions très intéressantes...
Une fois le panel incrusté sur l'arrière-plan (ton exemple), on peut le déplacer sans problème en faisant varier le Top et le Left du panel, ça suit.
Mais est-il possible de faire varier dynamiquement ses dimensions ? j'ai beau changer le Width et le Height du panel, ça ne change rien...

PS j'ai trouvé une solution: il faut remettre region1%=0 pour la recréer, et là ça marche.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   Lun 9 Nov 2015 - 5:44

Bravo ! Tu as trouvé !

En fait, la fonction qui affecte la région elliptique à un objet, crée une "vue" dans l'objet, un peu comme si l'on regardait cet objet par une longue-vue. Et les dimensions de cette vue ne changent pas si tu changes les dimensions de l'objet. Il faut bel et bien refaire une autre vue si nécessaire.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Comment faire un picture de n'importe quelle forme ?   

Revenir en haut Aller en bas
 
Comment faire un picture de n'importe quelle forme ?
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment faire un lien vers une autre page du site ?
» Résolu => Comment faire disparaitre la souris?
» Comment faire un genre de lotto
» comment faire un roll over "musical"
» comment faire clic droit et mon pseudo apparait

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: