Richtextbox控件透明加入背景

来源:互联网 发布:mac电脑iphoto打不开 编辑:程序博客网 时间:2024/05/21 10:53

http://www.codeproject.com/cs/miscctrl/TransparentTextBox.asp
如何让Richtextbox控件透明:透明后你自己在后边设定背景图片吧,不过一般都很晃动
也有另外的方法来设置透明,用定时器刷新,如下地址:
http://www.codeproject.com/cs/miscctrl/AlphaBlendedTextControls.asp

RichTextBox

class TransparentControl : Control{   public TransparentControl()   {      base.SetStyle( ControlStyles.UserPaint, true );      base.SetStyle( ControlStyles.DoubleBuffer, true );      base.SetStyle( ControlStyles.SupportsTransparentBackColor, true );   }}class TransparentRichTextBox : RichTextBox{   public TransparentRichTextBox()   {      base.ScrollBars = RichTextBoxScrollBars.None;   }   override protected CreateParams CreateParams   {      get      {         CreateParams cp = base.CreateParams;         cp.ExStyle |= 0x20;         return cp;      }   }   override protected void OnPaintBackground( PaintEventArgs e )   {   }}

TextBox

Collapse
public class TransparentTextBox : TextBox{   PictureBox pictureBox = new PictureBox();   public TransparentTextBox()   {      pictureBox.Dock = DockStyle.Fill;      this.Controls.Add( pictureBox );    }   protected override void WndProc( ref Message m )   {      base.WndProc( ref m );      switch( m.Msg )      {         case Win32.WM_PAINT:            Bitmap bmpCaptured =               new Bitmap( this.ClientRectangle.Width, this.ClientRectangle.Height );            Bitmap bmpResult =               new Bitmap( this.ClientRectangle.Width,this.ClientRectangle.Height );            Rectangle r =               new Rectangle( 0, 0, this.ClientRectangle.Width,               this.ClientRectangle.Height );             CaptureWindow( this, ref bmpCaptured );             this.SetStyle( ControlStyles.SupportsTransparentBackColor, true );            this.BackColor = Color.Transparent;            ImageAttributes imgAttrib = new ImageAttributes();            ColorMap[] colorMap = new ColorMap[ 1 ];            colorMap[ 0 ] = new ColorMap();            colorMap[ 0 ].OldColor = Color.White;            colorMap[ 0 ].NewColor = Color.Transparent;            imgAttrib.SetRemapTable( colorMap );             Graphics g = Graphics.FromImage( bmpResult );            g.DrawImage( bmpCaptured, r, 0 , 0, this.ClientRectangle.Width,                 this.ClientRectangle.Height, GraphicsUnit.Pixel, imgAttrib );            g.Dispose();            pictureBox.Image = ( Image )bmpResult.Clone();          break;         case Win32.WM_HSCROLL:         case Win32.WM_VSCROLL:            this.Invalidate(); // repaint           // if you use scrolling then add these two case statements         break;   }}private static void CaptureWindow( Control control, ref Bitmap bitmap ){   Graphics g = Graphics.FromImage( bitmap );   int i = ( int )( Win32.PRF_CLIENT | Win32.PRF_ERASEBKGND );   IntPtr iPtr = new IntPtr( 14 );   IntPtr hdc = g.GetHdc();   Win32.SendMessage( control.Handle, Win32.WM_PRINT, hdc, iPtr );    g.ReleaseHdc( hdc );   g.Dispose();}
原创粉丝点击