Transparence d'un RichText

Résolu
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008 - 19 mars 2006 à 13:33
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008 - 19 mars 2006 à 15:15
Encore une fois je me tourne vers vous pour vous demander de m'aider dans ma tache :).

Je voudrais créer un RichTextBox transparent. Donc j'avais essayé de mettre la valeur Transparent pour le BackColor de la RichTextBox mais apparemment on ne peut pas. Du coup il faut créer un ControlUser. C'est ce que j'ai fait. Mais je suis débutant et je sais pas trop comment faire.

Alors j'ai cherché un peu de source pour voir comment il fallait faire et je suis arrivé à rendre la RichTextBox transparente mais le soucis c'est que le texte aussi :). Pas cool !!

Donc voici le code que j'ai fait, si quelqu'un aurait une solution :


namespace NewControls
{

public
partial
class
TransparentRichText :
RichTextBox
{

public TransparentRichText()
{
InitializeComponent();

this.SetStyle(
ControlStyles.UserPaint,
true);

this.SetStyle(
ControlStyles.OptimizedDoubleBuffer,
true);

this.SetStyle(
ControlStyles.SupportsTransparentBackColor,
true);

this.UpdateStyles();

this.Visible =
true;
}
}
}

Voilà j'espère que vous pourrez m'aider :).

@+

Manu

5 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
19 mars 2006 à 13:54
Salut, dis moi si ça te convient :

class MainForm : Form
{
private MyRichTextBox tb;


private MainForm( ) : base( )
{
tb = new MyRichTextBox( );
tb.Multiline = true;
tb.Location = new Point( 100, 100 );
tb.Size = new Size( 100, 100 );


this.SetStyle
(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.DoubleBuffer |
ControlStyles.ResizeRedraw,
true
);
this.BackgroundImage = Image.FromFile( "D:\\__TMP\\image.bmp" );
this.Controls.Add( tb );
}


[ STAThread ]
private static void Main( )
{
Application.Run( new MainForm( ) );
}
}


public class MyRichTextBox : RichTextBox
{
private const int WS_EX_TRANSPARENT = 0x00000020;


public MyRichTextBox( ) : base( )
{
this.BorderStyle = BorderStyle.None;
}

protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}

protected override void OnPaintBackground( PaintEventArgs e )
{
// ..
}
}
3
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
19 mars 2006 à 14:10
Super ma RichTextBox est bien transparente.

Mais si maintenant je saisie du texte, en grandre quantité, j'ai la scrollbar ki s'affiche jusque là ca va. Mais le texte qui se trouve après la taille du RichTextBox s'affiche bizarement.
Un exemple pour mieux me comprendre :):
Si le RichTextBox contient 10 lignes, à partir de la 11eme ligne les caractères ne sont plus lisible.

De plus je n'arrive pas à supprimer le texte saisie

Manu
0
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
19 mars 2006 à 14:14
A en fait quand j'ai les scrollbar qui s'affiche, la dernière ligne est resaisie automatiquement lorsque je tape sur ENTRER.
Et le cuseur se met en début de ligne.

Du coup quand je retape un caractère il saisie le caractère sur les autres caractères.

Et comme j'arrive pas à supprimer les caractères, si je me place au tout début de ma RichTextBox et que je saisie des caractères ils seront saisie sur les autres caractères.

Voilà je comprend pas pourquoi ??

Manu
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
19 mars 2006 à 14:46
Je comprends pas ton problème moi ça marche parfaitement à part les scrollbars qui clignotent un peu de temps en temps, rien de grave.. As tu copié exactement tout mon code, pas seulement la RichTextBox mais aussi la forme principale ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
19 mars 2006 à 15:15
Ca marche nikel mais j'ai encore un petit soucis avec ton code.
La scrollbar je ne vois pas les extremitées ?? (le petit chevron vers le haut et vers le bas)

Manu
0
Rejoignez-nous