`
hududanyzd
  • 浏览: 815750 次
文章分类
社区版块
存档分类
最新评论

C#中给RichTextBox加上背景图片

 
阅读更多

在系统自带的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,控件,中放入图片 如何最...

    实现RichTextBox背景图片功能

    在C#中,要实现`RichTextBox`背景图片功能,我们通常需要自定义控件,并覆盖其`OnPaint`事件。以下是实现这一功能的关键步骤: 1. **创建自定义控件类**:首先,创建一个继承自`RichTextBox`的新类,例如`...

    C# richTextBox设置行背景颜色

    在网上看到关于如何操作richTextBox行代码,但是却看不到如何对某行文本进行独立操作的,比如设置背景颜色之类的,于是分享下自己的思路

    NET,C#在RichTextBox控件加入图片(类似QQ)教程

    本教程将教你如何通过一些技巧在`RichTextBox`中实现类似QQ聊天窗口那样的图片插入功能。 1. **基础准备**: - 首先,确保你有Visual Studio IDE,并创建一个新的Windows Forms项目。 - 在设计视图中添加一个`...

    C# 在richtextbox中生成表格

    在C#中,你可以创建一个方法来动态生成这样的字符串,根据需要的行数和列数来调整。此外,还可以通过`richtextbox1.AppendText()`方法添加或修改已存在的表格内容。 示例代码: ```csharp private void ...

    RichTextBox 练习 保存和读取图片数据库

    RichTextBox 练习,保存和读取图片数据库 QQ:292258449

    C#161演示将图片和文字混合显示在RichTextBox控件中 源代码

    在C#编程中,`RichTextBox`控件通常用于显示和编辑多行文本,支持丰富的文本格式,如字体、颜色、大小等。然而,标准的`RichTextBox`...通过研究和理解这些代码,开发者可以进一步提升在C#中的文本处理和UI设计能力。

    C# RichTextbox设置行间距

    在C#编程中,`RichTextBox`控件是Windows Forms应用程序中常见的文本编辑组件,用于显示和编辑富文本格式的数据。它提供了丰富的文本格式化功能,如字体样式、颜色、大小以及对齐方式等。然而,`RichTextBox`默认并...

    C# 源码 扩展 RichTextBox 控件

    本篇将详细介绍如何在C#中扩展`RichTextBox`控件以实现添加图片功能,并探讨相关的技术细节。 首先,我们需要创建一个新的用户控件(UserControl)继承自`RichTextBox`,并在这个新的类中添加图片处理的相关功能。...

    RichTextBox中添加图片(代码)

    C#代码:向RichTextBox中添加图片

    实现 c# richtextbox 打印功能

    在某些场景下,我们需要将`RichTextBox`中的内容打印出来,这就涉及到了C#中的`RichTextBox`打印功能。 实现`RichTextBox`的打印功能主要分为几个步骤: 1. 引入必要的库: 在项目中,你需要引入`System.Drawing....

    c# richtextbox 实现动态gif显示

    总之,在C#中实现`RichTextBox`显示动态GIF需要巧妙地结合`LinkLabel`控件和自定义绘图,以及适当的事件处理和性能优化。这个过程涉及到对图像处理、用户交互和系统资源管理的理解,对于提升C#编程技能具有一定的...

    C# 文本文件与RichTextBox

    首先,让我们了解如何在C#中读取和写入文本文件。最常用的方法是使用`System.IO`命名空间中的`StreamReader`和`StreamWriter`类。例如,要读取一个名为`example.txt`的文本文件,你可以这样做: ```csharp using ...

    c# 利用C#及RichTextBox简单实现Word域功能

    在本文中,我们将深入探讨如何使用C#...通过以上步骤,我们就成功地在C#中利用RichTextBox实现了类似Word的域功能。这种方法可以轻松地扩展以支持更多自定义域,同时也可以结合数据库或其他数据源来动态更新文本内容。

    C#中实现带有行号的Richtextbox以及其他功能

    本程序主要有以下功能: 1.在Richtextbox的旁边没有误差的显示动态行号。 2.可以使Richtextbox的滚动条跳到指定的行号处。...可以单击Richtextbox中的某行,然后通过鼠标事件获取鼠标所在的Richtextbox中的行的数据。

    C#richTextBox显示和保存带格式的Word文档

    总之,C#中利用`richtextbox`显示、保存和另存为带格式的Word文档涉及到了文本处理、文件操作和API交互等多个知识点。通过合理使用.NET Framework提供的类库和第三方工具,我们可以轻松地实现在Windows Forms应用中...

    c#带行号的richtextbox控件

    在.NET Framework中,C#是一种常用的编程语言,用于开发各种应用程序,包括Windows桌面应用。`RichTextBox`控件是Windows Forms库中的一个组件,它允许程序员创建文本编辑器,支持丰富的文本格式,如字体、颜色、...

    richtextbox设置行间距

    在C#中,`RichTextBox`控件并没有直接提供设置行间距的属性或方法。不过,我们可以通过间接的方式实现这一功能,即通过修改字体的行距属性。`System.Drawing.Font`类有一个名为`Height`的属性,它代表了字体的大小,...

    C#RichTextBox 行号 与同步滚动

    总的来说,这个项目涉及到C#中自定义控件的创建、事件处理和界面设计。通过扩展`RichTextBox`,我们可以为文本编辑提供更丰富的用户体验,包括行号显示、同步滚动以及对字体大小变化的适应性。而进一步的高亮显示和...

    winform中去掉richtextbox中的光标

    以下是如何在C# WinForm应用程序中实现这个功能的详细步骤: 1. **创建自定义的richtextbox控件** 创建一个名为`CustomRichTextBox`的新类,继承自`System.Windows.Forms.RichTextBox`。这样我们可以在新的类中...

Global site tag (gtag.js) - Google Analytics