cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
25 mars 2005 à 22:57
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 2014
-
30 mars 2005 à 18:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 mars 2005 à 18:11
Si j' ai bien compris, tu connaissais pas Empty c' est ça?
Au fait, la transparence sera surtout utile pour TbmpPaintbox ! Mais, on pourra faire de même avec un TBmpPanel (pour ceux qui utilisent XPManifest et l' option parentBackground) et même, sans l' attribuer d' image, rendre le panel transparent (qui n' a jamais voulu que son panel soit transparent) même sous Win95/98 !!!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 mars 2005 à 18:06
C' est à cause des themes qui font de zolis dégradés !!!
Ou alors si tu mets ton compo sur mon compo de degradé par ex., je voudrais définir une couleur de transparence!
Voilà comment faire :
BmpPanel1.Bmp.Transparent := true;
BmpPanel1.Bmp.TransparentColor := clFuchsia;
dgradPanel1.Canvas.Draw(10, 10, BmpPanel1.Bmp);
ou alors dgradPanel1.Canvas.StretchDraw(classes.Rect(10, 10, 100, 100), BmpPanel1.Bmp);
Donc Kenavo, je crois que tu vas devoir faire autrement que brush.bitmap dans le cas où tu voudrais faire de la transparence.
A surveiller donc la prochaine version de mon Pack :)
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 30 mars 2005 à 17:58
Empty ! On en apprend tous les jour ! Merci Mauricio !
Je viens de charger ton pack complet, je n'avais que le début (dgradPanel et dgradPaintBox).
Tu veux faire des transparences où ? Dans ton BmpPanel ?
Ken@vo
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 mars 2005 à 16:34
Ok, merci pour ces explications.
J' utilise BrushCopy pour rendre transparent une couleur au choix de l' utilisateur. Mais, celle-ci est remplacée par la couleur du brush alors que je voulais qu' elle soit vraiment transparente(Themes oblige); t' as une idée toi? J' ai essayé copyRect (en changeant copyMode) mais ce satané copyMode est dûr de dompter !!!
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 30 mars 2005 à 15:44
Ah ben oui ! Deux fois ! Une de trop ! La première manque de portée et n'a plus son utilité. Allez zou, correction !
On ne peut pas cacher une propriété héritée (vois les dernières lignes dans l'aide sur "Visibilité des membres de classe". Pour ton TdgradPanel, il aurait fallu partir de TCustomPanel et non pas de Panel (comme je l'ai fait ici), et pour le TdgradPaintbox, partir de TGraphicControl. Tu peux alors choisir les propriétés que tu désires rendre visibles.
Ken@vo
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 mars 2005 à 14:46
Pourquoi dans le paint tu fais au debut:
if (fBitmap.Width > 0) and (Bitmap.Height > 0) then
Brush.Bitmap := fBitmap;
with Canvas do
begin
Brush.Color := Color;
//Si les dimensions du bitmap ne sont pas nulles
// on affecte celui-ci à la brosse
if (fBitmap.Width > 0) and (Bitmap.Height > 0) then
Brush.Bitmap := fBitmap;
Comme tu peux le voir, j' ai fait un compo dans le même genre (cf source pack compo). Ta méthode est bien plus rapide (grâce à brush.bitmap) même si j' essaye de rendre le Panel transparent pour une couleur lorsque l' on utilise les thèmes de Windows ...
Au fait, comment peut-on cacher de l' object Inspector une propriété héritée que l' on a pas besoin ???
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 29 mars 2005 à 08:57
ManChester, tu trouve que j'ai pas assez l'air fondu comme ça ?!...
D'après l'aide :
La propriété Bitmap désigne un objet TBitmap contenant une image bitmap. Si Bitmap n'est pas vide, l'image bitmap (et non la propriété Style) définit le motif du pinceau. Si la taille de l'image est supérieure à huit pixels par huit pixels, seule la zone huit-sur-huit du coin supérieur gauche est utilisée.
Mais ça marche très bien avec un bitmap de plus de huit pixels de coté. Il semblerait que l'aide n'ait pas été mise à jour depuis Delphi 1 où cette limite de 8 x 8 pixels est effective.
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 26 mars 2005 à 15:12
Oui, excellent, astuce dèja conue mais bon.... excellent quand meme.
Tu nous fais le meme avec effet de "fondu" et transparance en temps réel ? (joke)
Bon Coding....
ManChesTer.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 25 mars 2005 à 22:57
Excellent, tout simplement excellent.
Bravo Kenavo.
30 mars 2005 à 18:11
Au fait, la transparence sera surtout utile pour TbmpPaintbox ! Mais, on pourra faire de même avec un TBmpPanel (pour ceux qui utilisent XPManifest et l' option parentBackground) et même, sans l' attribuer d' image, rendre le panel transparent (qui n' a jamais voulu que son panel soit transparent) même sous Win95/98 !!!
30 mars 2005 à 18:06
Ou alors si tu mets ton compo sur mon compo de degradé par ex., je voudrais définir une couleur de transparence!
Voilà comment faire :
BmpPanel1.Bmp.Transparent := true;
BmpPanel1.Bmp.TransparentColor := clFuchsia;
dgradPanel1.Canvas.Draw(10, 10, BmpPanel1.Bmp);
ou alors dgradPanel1.Canvas.StretchDraw(classes.Rect(10, 10, 100, 100), BmpPanel1.Bmp);
Donc Kenavo, je crois que tu vas devoir faire autrement que brush.bitmap dans le cas où tu voudrais faire de la transparence.
A surveiller donc la prochaine version de mon Pack :)
30 mars 2005 à 17:58
Je viens de charger ton pack complet, je n'avais que le début (dgradPanel et dgradPaintBox).
Tu veux faire des transparences où ? Dans ton BmpPanel ?
Ken@vo
30 mars 2005 à 16:34
J' utilise BrushCopy pour rendre transparent une couleur au choix de l' utilisateur. Mais, celle-ci est remplacée par la couleur du brush alors que je voulais qu' elle soit vraiment transparente(Themes oblige); t' as une idée toi? J' ai essayé copyRect (en changeant copyMode) mais ce satané copyMode est dûr de dompter !!!
30 mars 2005 à 15:44
On ne peut pas cacher une propriété héritée (vois les dernières lignes dans l'aide sur "Visibilité des membres de classe". Pour ton TdgradPanel, il aurait fallu partir de TCustomPanel et non pas de Panel (comme je l'ai fait ici), et pour le TdgradPaintbox, partir de TGraphicControl. Tu peux alors choisir les propriétés que tu désires rendre visibles.
Ken@vo
30 mars 2005 à 14:46
if (fBitmap.Width > 0) and (Bitmap.Height > 0) then
Brush.Bitmap := fBitmap;
with Canvas do
begin
Brush.Color := Color;
//Si les dimensions du bitmap ne sont pas nulles
// on affecte celui-ci à la brosse
if (fBitmap.Width > 0) and (Bitmap.Height > 0) then
Brush.Bitmap := fBitmap;
Comme tu peux le voir, j' ai fait un compo dans le même genre (cf source pack compo). Ta méthode est bien plus rapide (grâce à brush.bitmap) même si j' essaye de rendre le Panel transparent pour une couleur lorsque l' on utilise les thèmes de Windows ...
Au fait, comment peut-on cacher de l' object Inspector une propriété héritée que l' on a pas besoin ???
29 mars 2005 à 08:57
D'après l'aide :
La propriété Bitmap désigne un objet TBitmap contenant une image bitmap. Si Bitmap n'est pas vide, l'image bitmap (et non la propriété Style) définit le motif du pinceau. Si la taille de l'image est supérieure à huit pixels par huit pixels, seule la zone huit-sur-huit du coin supérieur gauche est utilisée.
Mais ça marche très bien avec un bitmap de plus de huit pixels de coté. Il semblerait que l'aide n'ait pas été mise à jour depuis Delphi 1 où cette limite de 8 x 8 pixels est effective.
26 mars 2005 à 15:12
Tu nous fais le meme avec effet de "fondu" et transparance en temps réel ? (joke)
Bon Coding....
ManChesTer.
25 mars 2005 à 22:57
Bravo Kenavo.