Image ronde

Messages postés
2
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
5 avril 2010
- - Dernière réponse : jlen100
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
- 21 nov. 2005 à 08:30
Faire une fenêtre ronde, il y a un exemple sur le site qui est parfait, mais faire simplement un TImage rond, quelqu'un aurait il une idée pour le realiser ?
Afficher la suite 

7 réponses

Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
0
Merci
salut,

je ne pense pas que cela soit possible:

un TImage doit posseder les propriété Left et Top qui correspondent à
l'angle supérieur gauche or un cercle par définition n'a pas d'angle.

Tu peux résoudre ton problème en mettant la prorpiété transparent à true.

@+

jlen
Commenter la réponse de jlen100
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
1
0
Merci
Tuto sur les régions en delphi, dans la section Tutoriels.
Commenter la réponse de DeltaFX
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
0
Merci
sans vouloir contredire JLen100 dont les conseils sont toujours
precieux, il fait toute fois une erreur en declarant trop vite que
Left,Top correspond a l'angle superieur gauche d'une forme ...



faux donc, car Left,Top correspond a l'intersection des droite
perpendiculaire qui parte respectivement du premier point du somment
d'un objet (top) et du premier point a gauche d'un objet (left).



toute forme tiens dans un carré (ou plutot un rectangle) invisible. un cercle egalement.

bien que l'on puisse egalement partir du centre du cercle pour en definir sa position mais ce n'est pas vraiment pratique.



mais bon, la ça tiens plus de la geometrie que de delphi.



pour donner une forme precise a un TForm, grace a un masque Bitmap, il
existe un composant present dans le pack Jedi (chercher Jedi-VCL sur
google).

je n'ai pas encore tester ce composant mais d'aprés ce que j'en sais,
il permet tout simplement de gerer un masque pour un TForm et donc lui
donner une forme fantaisiste a souhait comme pour winamp ou d'autre
player multimedia qui exploite a fond ce genre de procédé.

Attention toute fois, ce masque permet simplement de donner la nouvelle
forme a TForm, il faudrat donc egalement créer le skin complet qui
viendras ensuite par dessus.



Le pack Jedi est assé gros, il regroupe divers composants sur une bonne dizaines de pages (dans la palette de composants).

celui qui nous interresse ce trouve dans la page Jv Application - Forms et ensuite le composant JvTransparentForm.



mais comme le dit DeltaFX, regarde le tuto sur les regions, cela ne peut etre que benefique pour tes competences.
Commenter la réponse de f0xi
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
0
Merci
là foxi je trouve que tu chipotes un peu sur ma définition:

sachant que tout objet tient dans un rectangle définit par convention
pour origine l'angle superieur de coordonnées top et left de largeur
width et de hauteur height ma définition est parfaitement correcte.

maintenant on peut effectivement effectuer un transfert d'origine au
centre du cercle mais cela ne change pas que de l'objet sera géré sur
la totalité de sa surface (height*width);

Si l'on veut que la souris ne réagisse que sur ce qu'on pourrait appeler la
surface active (par exemple un cercle mais ce n'est pas limitatif) on
doit redéfinir la région active et vérifier si la souris entre ou est
dans cette région et appeler cette routine dans chacun des évènements
uitlisés pour determiner si l'on doit ou non exécuter l'évènement.

cela ce complique quand plusieurs objets utilisent les mêmes régions inactives (par exemple cercles tangents en quiconce).

je ne connais pas Jedi-VCL

@+

jlen
Commenter la réponse de jlen100
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
1
0
Merci
Jlen, dans le cas où tu crées une région et que tu fais un SetWindowRgn avec les handles de l'appli et de la région, tu dis à windows de limité "l'existence" de la form à cette région. Donc tout évenement genre clickup/down/roulette marchera comme sur une form rectangulaire.

Apres, si tu utilises des régions pour du dessin, des vrai/faux boutons, il est obligatoire de tester si le point est dans telle ou telle région, donc si 12000 regions ca veut dire au pire 12000 tests 'if PtInRegion" donc un temps de réaction pas rapide rapide. Apres y a des ruses, genre des test sur les boites englobantes etc etc etc.

gnh !
Commenter la réponse de DeltaFX
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
0
Merci
AAAH! oui desolé de chipoté pour si peu ... excuse moi JLen ça n'avait pas pour but de t'embetter ... (oh et puis si un peu ^^)



Par contre je suis surpris que tu ne connaissent pas les composants
Jedi qui est certainement l'une des plus riche bibliotheque de
composants gratuit pour delphi ...

mais Jedi-project ne s'arretent pas la vus qu'il font egalement la
traduction d'headers C/C++ vers Delphi (avec niveau de certification en
plus ect...).

jette un oeuil en tout cas ... http://www.delphi-jedi.org/



pour DeltaFX qui souleve un probleme de "focus" (pas faux cul hein!)
avec les regions, j'ai remarquer que si on definis des zones
transparante (avec la propriétée TransparentColor de TForm) et bien la
souris n'est plus detectée dans les zones transparente ...

ça fait longtemps que j'ai aps fait ça donc a confirmer...
Commenter la réponse de f0xi
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
0
Merci
pulpito vas voir ce tuto sur les regionshttp://zewaren.developpez.com/delphi/regions/
Commenter la réponse de jlen100