如何使我的富文本框变得透明
我想要这个,因为我想把一个文本放在一个图形图像的顶部(这是我的表单的背景)。
这就是为什么我希望richTextBox是透明的,
我在windows窗体应用程序中使用.NET、c#和
发布于 2011-02-06 08:21:12
在WinForms控件中没有真正的透明性。透明模式继承其父模式的默认背景。我过去解决这个问题的方法是使用OnPaint事件,然后使用Graphics.DrawString方法将文本定位到我想要的位置。
发布于 2013-11-02 03:22:04
我知道这个答案来得太晚了,但我希望它能帮助那些想要一种简单的方法来完成这项工作的人。
首先,在你的项目中创建一个新的用户控件,并给它一个名字,比如CustomRTB.cs。完成后,打开分部类并更改:
public partial class CustomRTB : UserControl至:
public partial class CustomRTB : RichTextBox当您打开设计文件时,这将导致一个错误,所以只需转到Designer.cs文件并删除/注释显示错误的行(将有错误的行将不超过两行)。接下来,将以下内容添加到分部类中:
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}这个类现在应该是这样的:
public partial class CustomRTB : RichTextBox
{
public CustomRTB()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
}现在生成您的解决方案,您将能够在窗体中使用该控件。此控件将是完全透明的,您将无法调整透明度。您还可以通过更改代码中的第一行来创建除richtextbox之外的不同透明控件。希望这能有所帮助:)
编辑:
上述控件的问题在于,它只能用于以编程方式显示文本,因为在运行或调试应用程序时编辑它是有问题的(正如@nevelis在下面的注释中所解释的那样)。但是,有一个简单的解决方法可以解决此问题:
首先,在您的项目中创建另一个用户控件,并将其命名为TranslucentPanel.cs (是的,它是一个面板,它将是半透明的,其不透明度可以通过编程方式控制)。现在打开分部类并将其修改为:
public partial class TranslucentPanel : Panel
{
public TranslucentPanel()
{
InitializeComponent();
SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw |
ControlStyles.UserPaint, true);
BackColor = Color.Transparent;
}
}您必须注意构建项目时突然出现的错误,只需注释掉抛出它的Designer.cs文件中的行即可。完成后,再次构建项目,半透明面板将像以前一样出现在工具箱中。将此面板用作透明richtextbox的父控件,例如,将面板放在窗体上,并将RTB放入其中。还可以将BorderStyle属性设置为None,以便从UI中删除RTB的任何跟踪。
还可以在程序中使用半透明面板的BackColor属性来控制其不透明度:
translucentPanel1.BackColor = Color.FromArgb(50, 0, 0, 0);更改上面传递的参数将允许您控制面板的不透明度和颜色。
此解决方法不仅可以解决透明RTB的光标和滚动问题,还可以解决您创建的任何其他透明控件的问题。
发布于 2011-02-06 08:05:47
你试过了吗?http://www.codeproject.com/KB/edit/AlphaBlendedTextControls.aspx?artkw=richTextBox%20to%20be%20transparent
https://stackoverflow.com/questions/4910036
复制相似问题