cs_pulpito
Messages postés2Date d'inscriptionmardi 13 septembre 2005StatutMembreDernière intervention 5 avril 2010
-
20 nov. 2005 à 09:31
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 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 ?
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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...).
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...