在系统自带的RichTextBox中是无法给它设置背景图片,但是我们在某些场合可能需要给RichTextBox设置背景图片。那么怎么实现这一想法呢?经过研究发现通过其它巧妙的途径可以给RichTextBox设置背景图片。首先将RichTextBox这个控件加以改写。具体改写的代码如下:
publicpartialclassrichTextBoxEx : RichTextBox
{
publicrichTextBoxEx()
{
InitializeComponent();
base.ScrollBars = RichTextBoxScrollBars.None;
}
publicrichTextBoxEx(IContainer container)
{
container.
Add(
this);
InitializeComponent();
}
//这个要加上
protectedoverrideCreateParams CreateParams
{
get
{
CreateParams cp =
base.CreateParams;
cp.ExStyle|=
0x20;
returncp;
}
}
}
CreateParams 中的信息可用于传递有关控件的初始状态和外观的信息。多数
Control 派生控件重写
CreateParams 属性以传递适当的值或在 CreateParams 中包含附加信息。
关于CreateParams的详细介绍请查看MSDN:
http://msdn.microsoft.com/zh-cn/library/b0c6ds4f%28v=VS.85%29.aspx。
改写完毕后首先放置一个Panel到窗体上面,同时放置一个和Panel相同大小的richTextBoxEx到Panel上,将需要给richTextBox设置的背景图片设置给panel,将panel的背景色设置为透明即可。但是这样虽然给richTextBox设置了背景,但是在显示时会有比较明显的闪动。因此需要对Panel控件加以改良,改写的代码如下:
publicclassPanelEx:Panel
{
publicPanelEx()
{
}
protectedoverridevoidOnPaintBackground(PaintEventArgs e)
{
return;
}
protectedoverridevoidOnPaint(PaintEventArgs e)
{
this.DoubleBuffered =
true;
if(
this.BackgroundImage!=
null)
{
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.
DrawImage(
this.BackgroundImage,
newSystem.Drawing.
Rectangle(
0,
0,
this.Width,
this.Height),
0,
0,
this.BackgroundImage.Width,
this.BackgroundImage.Height,
System.Drawing.GraphicsUnit.Pixel);
}
//base.OnPaint(e);}
}
使用这个panelEx虽然没有能彻底的消除闪烁的效果,但是已经好很多了,没有刚才那么明显了。本人能力有限,只能做到这一步了,
如果那位大侠有更好的解决方案,请赐教。
分享到:
相关推荐
如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最简单在C#中,richTextBox,控件,中放入图片 如何最...
在C#中,要实现`RichTextBox`背景图片功能,我们通常需要自定义控件,并覆盖其`OnPaint`事件。以下是实现这一功能的关键步骤: 1. **创建自定义控件类**:首先,创建一个继承自`RichTextBox`的新类,例如`...
在网上看到关于如何操作richTextBox行代码,但是却看不到如何对某行文本进行独立操作的,比如设置背景颜色之类的,于是分享下自己的思路
本教程将教你如何通过一些技巧在`RichTextBox`中实现类似QQ聊天窗口那样的图片插入功能。 1. **基础准备**: - 首先,确保你有Visual Studio IDE,并创建一个新的Windows Forms项目。 - 在设计视图中添加一个`...
在C#中,你可以创建一个方法来动态生成这样的字符串,根据需要的行数和列数来调整。此外,还可以通过`richtextbox1.AppendText()`方法添加或修改已存在的表格内容。 示例代码: ```csharp private void ...
RichTextBox 练习,保存和读取图片数据库 QQ:292258449
在C#编程中,`RichTextBox`控件通常用于显示和编辑多行文本,支持丰富的文本格式,如字体、颜色、大小等。然而,标准的`RichTextBox`...通过研究和理解这些代码,开发者可以进一步提升在C#中的文本处理和UI设计能力。
在C#编程中,`RichTextBox`控件是Windows Forms应用程序中常见的文本编辑组件,用于显示和编辑富文本格式的数据。它提供了丰富的文本格式化功能,如字体样式、颜色、大小以及对齐方式等。然而,`RichTextBox`默认并...
本篇将详细介绍如何在C#中扩展`RichTextBox`控件以实现添加图片功能,并探讨相关的技术细节。 首先,我们需要创建一个新的用户控件(UserControl)继承自`RichTextBox`,并在这个新的类中添加图片处理的相关功能。...
C#代码:向RichTextBox中添加图片
在某些场景下,我们需要将`RichTextBox`中的内容打印出来,这就涉及到了C#中的`RichTextBox`打印功能。 实现`RichTextBox`的打印功能主要分为几个步骤: 1. 引入必要的库: 在项目中,你需要引入`System.Drawing....
总之,在C#中实现`RichTextBox`显示动态GIF需要巧妙地结合`LinkLabel`控件和自定义绘图,以及适当的事件处理和性能优化。这个过程涉及到对图像处理、用户交互和系统资源管理的理解,对于提升C#编程技能具有一定的...
首先,让我们了解如何在C#中读取和写入文本文件。最常用的方法是使用`System.IO`命名空间中的`StreamReader`和`StreamWriter`类。例如,要读取一个名为`example.txt`的文本文件,你可以这样做: ```csharp using ...
在本文中,我们将深入探讨如何使用C#...通过以上步骤,我们就成功地在C#中利用RichTextBox实现了类似Word的域功能。这种方法可以轻松地扩展以支持更多自定义域,同时也可以结合数据库或其他数据源来动态更新文本内容。
本程序主要有以下功能: 1.在Richtextbox的旁边没有误差的显示动态行号。 2.可以使Richtextbox的滚动条跳到指定的行号处。...可以单击Richtextbox中的某行,然后通过鼠标事件获取鼠标所在的Richtextbox中的行的数据。
总之,C#中利用`richtextbox`显示、保存和另存为带格式的Word文档涉及到了文本处理、文件操作和API交互等多个知识点。通过合理使用.NET Framework提供的类库和第三方工具,我们可以轻松地实现在Windows Forms应用中...
在.NET Framework中,C#是一种常用的编程语言,用于开发各种应用程序,包括Windows桌面应用。`RichTextBox`控件是Windows Forms库中的一个组件,它允许程序员创建文本编辑器,支持丰富的文本格式,如字体、颜色、...
在C#中,`RichTextBox`控件并没有直接提供设置行间距的属性或方法。不过,我们可以通过间接的方式实现这一功能,即通过修改字体的行距属性。`System.Drawing.Font`类有一个名为`Height`的属性,它代表了字体的大小,...
总的来说,这个项目涉及到C#中自定义控件的创建、事件处理和界面设计。通过扩展`RichTextBox`,我们可以为文本编辑提供更丰富的用户体验,包括行号显示、同步滚动以及对字体大小变化的适应性。而进一步的高亮显示和...
以下是如何在C# WinForm应用程序中实现这个功能的详细步骤: 1. **创建自定义的richtextbox控件** 创建一个名为`CustomRichTextBox`的新类,继承自`System.Windows.Forms.RichTextBox`。这样我们可以在新的类中...