Image ronde

cs_pulpito Messages postés 2 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 5 avril 2010 - 20 nov. 2005 à 09:31
jlen100 Messages postés 1606 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 ?

7 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 nov. 2005 à 10:03
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
0
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
20 nov. 2005 à 14:20
Tuto sur les régions en delphi, dans la section Tutoriels.
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 nov. 2005 à 21:07
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.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 nov. 2005 à 21:51
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
20 nov. 2005 à 23:12
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 !
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 nov. 2005 à 04:40
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...
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
21 nov. 2005 à 08:30
pulpito vas voir ce tuto sur les regionshttp://zewaren.developpez.com/delphi/regions/
0
Rejoignez-nous