[C# - GDI] Rendre une suite de ligne transparente

Rendre une suite de ligne transparente [C# - GDI] - C#/.NET managed - Programmation

Marsh Posté le 15-02-2006 à 17:49:50    

Bonjour,
 
Voila , j'affiche grace à DrawLine une courbe +- sinusoidale( suite de tres petites lignes).
Je voudrais bien qu'au fur et à mesure du temps, plus la ligne a été affichée il y a longtemps, plus elle devient transparente.
 
Pour l'instant j'ai fait ceci :

Code :
  1. for (int PChg = m_Indice, transparence = 255; transparence > 0; PChg--, transparence--)
  2.             {
  3.                 if (PChg == 0) PChg = (m_Limite/2)-1;
  4.                 Graph.DrawLine(new Pen(Color.FromArgb(transparence,0, 255, 0), 1), m_Points[PChg - 1], m_Points[PChg]);
  5.             }


En gros, à chaque tick ( toutes les 10ms ) je dois reafficher "petite ligne" par petite ligne pour pouvoir leur donner un effet de transparence de plus en plus fort.
Cela fonctionne très bien mais c'est très pompeux en ressource ! ( par rapport au DrawLines où j'affichais tout les points du tableau d'un coup )
Existe-t'il un solution moins "pompeuse" en ressource ??
 
Merci d'avance

Reply

Marsh Posté le 15-02-2006 à 17:49:50   

Reply

Marsh Posté le 16-02-2006 à 13:27:38    

Je dis peut etre des conneries (mais bon, pas trop le temps de vérifier ti suite), mais y a pas moyen avec GDI de définir une suite de points (pour faire ta courbe), et ensuite de faire quelquechose du style "FillPath" avec une GradientBrush qui va de ta couleur jusqu'a transparent  [:pingouino]  
 
Ptetre que ce que je dis existe pas, mais comme je dis, pas trop le temps de vérif la  :o Donc vous avez le droit de me remettre a ma place les gens  :o

Reply

Marsh Posté le 26-03-2006 à 12:13:39    

bonjour,
 
Je pense que l'idée de x1800+ est la bonne.
Utilise un PathGradientBrush pour faire un dégradé sur ta courbe.
 
http://www.bobpowell.net/pgb.htm
http://www.c2i.fr/code.aspx?IDCode=507
http://www.c2i.fr/code.aspx?IDCode=508


Message édité par xfifi le 26-03-2006 à 12:17:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed