Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
3 janv. 2010 à 10:13
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
6 janv. 2010 à 22:20
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.
cs_pingouin84k
Messages postés68Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention 9 janvier 2011 6 janv. 2010 à 17:52
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
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010 6 janv. 2010 à 22:20
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 :/