Manu94600
Messages postés107Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention20 février 2008
-
4 avril 2006 à 18:35
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
8 avril 2006 à 12:23
Salut à tous,
J'ai un souci. Mais avant tout je vais expliquer ce que j'ai fait comme programme.
Voilà j'ai une form, sur cette form, j'ai un RichTextBox.
Le BackGround de ma form est une image. Cette image est consitué d'un triangle noir, et tout autour j'ai du rouge. Je définis la couleur de transparence en Rouge.
Ce qui me donne une form triangulaire. Au sein de ce triangle j'ai placé ma RichTextBox.
Mon premier souci : Je donne la possibilité à l'utilisateur de saisir une autre couleur de caractère dans la RichTextBox. Du coup mon souci, c'est que si l'user veux écrire en rouge, cette couleur étant transparente alors j'aurai les lettres transparentes. Je voudrais pour ce premier souci savoir s'il y avait un moyen que la transparence s'applique qu'à la form et nom aux controles possés sur la form.
Mon deuxième souci : c'est que je voudrais imprimer cette form. Mais quand je fais une capture d'ecran, j'ai deux autres souci :). Premièrement il me capture non pas avec la transparence, mais avec la couleur de fond (Rouge).
Deuxièment et c'est là le plus embetant, c'est que ma RichTextBox ne s'affiche pas, du moins le text, car on voit la bordure.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 avril 2006 à 05:46
Ce que tu veux c'est une région qui correspond exactement à ton bitmap !?
Cette fonction est pas très optimisée, passe le bitmap et la couleur de fond transparente.
private Region MakeRegionFromBitmap( Bitmap bitmap, Color transparency )
{
if ( bitmap == null )
throw new ArgumentNullException( );
int width = bitmap.Width;
int height = bitmap.Height;
GraphicsPath path = new GraphicsPath( );
for ( int y = 0; y < height; y++ )
{
for ( int x = 0; x < width; x++ )
{
if ( bitmap.GetPixel( x, y ) != transparency )
{
path.AddRectangle( new Rectangle( x, y, 1, 1 ) );
}
}
}
Region region = new Region( path );
path.Dispose( );
path = null;
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 5 avril 2006 à 00:19
Bha.. je t'ai donné un exemple, comme tu peux le voir la classe Form ( Control ) contient une propriété nommé Region, qui attend un objet de la classe Region.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Manu94600
Messages postés107Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention20 février 2008 7 avril 2006 à 08:52
Désolé la fatigue :).
Je voulais dire que ça me fait bien une form triangle :), mais mon image est arrondi, sur les bords du coup je vois pas comment faire. Et Mon image n'est pas un rectangle régulier. C'est à dire que les cotés ne sont pas tout à fait droit.
Manu94600
Messages postés107Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention20 février 2008 8 avril 2006 à 09:17
Alors je réexplique mon problème.
Admettons une form bizare. On va prendre l'exemple d'une voiture. On prend un image de voiture, et on applique la couleur rouge en arrière plan. La méthode que j'utilise pour que la forme de la form soit de la forme de la voiture : est de mettre comme couleur de transparence la couleur Rouge, et d'enlever les bordures de la form.
Jusque là ça marche nickel.
Mon premier problème c'est que sur cette forme j'ai mit un RichTextBox. Et que je donne la possibilité à l'utilisateur de changer la couleur de la police. Et si l'user met la police en rouge. Les caractères sélectionnés seront transparent car le rouge est la couleur de transparence.
1 : Donc pour ce problème je demandais s il y avait moyen d'appliquer cette transparence qu'à la form et non aux controles possé dessus ?? (Ma RichTextBox)
Mon deuxième souci c'est que cette form je veux l'imprimer.
J'ai cherché sur le forum comment le faire et j'ai eu une première solution qui est de faire un ScreenShot de la form.Mais le problème c'est qu'il me prend la form avec le fond initial sans la transparence, le rouge. Alors pour cela, je parcours le bitmap et quand je vois un pixel rouge, je le change en transparent, et ça marche :), mais le problème c'est que je ne vois pas le text de ma RichTextBox.
2 : Ici mon souci c'est que j'arrive pas à voir le texte du controle RichTextBox., je vois une ombre (bordure) du RichTextBox mais sans le texte.
Et le problème qui se posera quand je pourrais afficher le texte c'est que s'il est en rouge, il sera supprimé, il sera transparent.