Soucis de transparence

Signaler
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
-
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
-
Bonjour a tous,

Je travaille sur un petit programme de dessin, cependant, je me heure a présent a quelques soucis de transparence. Je souhaiterai imiter le comportement du brush de Photoshop: le tracé "en-cours" ne peut pas se superposer à lui-même, et la transparence reste donc identique même en cas de chevauchement.
Pour cela, j'utilise bien sûr un bitmap temporaire sur lequel le tracé au pinceau est dessiné, avant de le reporter sur le Bitmap principal. Mais cela n'enlève rien au problème : si mon tracé se coupe une ou plusieurs fois, la transparence est "ajoutée".

J'avais pensé "effacer" en dessous du tracé avant de le dessiner avec la couleur désirée (sur le bitmap temporaire) mais dessiner a l'aide de Brushes.Transparent (sans effet) est aussi inutile que de dessiner à l'aide de Brushes.White (le fond du bitmap est transparent).

Voici comment fonctionne mon brush :
Dim Points() As Point = New Drawing.Point() {OldPoint, NewPoint}
MyGraphics.DrawCurve(MyPen, Points, 1)
MyGraphics.FillEllipse(MyBrush, NewPoint.X - MyPen.Width / 2, NewPoint.Y - MyPen.Width / 2, MyPen.Width, MyPen.Width)
OldPoint = NewPoint
GBoard.Image = MyBitmap

En somme, je souhaite éviter ce phénomène de superposition:



Si quelqu'un a une suggestion, quelque qu'elle soit, je suis preneur.
Merci d'avance.

2 réponses

Messages postés
68
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
9 janvier 2011

Etant donné que tu connais la transparence avant même de dessiner et qu'elle n'est pas sensé être modifié au cours du tracé tu dessines tout sans transparence et tu la rajoutes à la fin du tracé lorsque tu fusionnes ton bitmap temporaire à ton bitmap principal.
C'est comme ça que je ferai
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010

Salut pingouin,

Si j'ai bien compris tu me proposes de :
1) Dessiner le tracé sur le bitmap temporaire - sans transparence
2) Puis, dessiner le bitmap temporaire dans le bitmap principal - avec le niveau de transparence souhaité

Certes cela fonctionne, seulement j'aimerai que le tracé soit visible en temps réel (avec la transparence - c'est quand même plus pratique). Je vais essayer mais je pense que redessiner continuellement le bitmap temporaire sur le bitmap principal ne donnera rien de bon coté perfs.

Si personne n'a de meilleure idée je crois que je vais devoir utiliser deux picturebox :/