【发布时间】:2025-12-05 23:55:02
【问题描述】:
我从应用程序资源中将图像插入 RichTextBox。图片格式PNG,背景透明。插入后,图像背景为灰色。如何将图像的背景设置为透明?
我当前的代码:
private Hashtable icons = null;
private void LoadIcons()
{
icons = new Hashtable(3);
icons.Add("[inf]", Properties.Resources.inf);
icons.Add("[ok]", Properties.Resources.ok);
icons.Add("[err]", Properties.Resources.err);
}
private void SetIcons()
{
richTextBox.ReadOnly = false;
foreach (string icon in icons.Keys)
{
while (richTextBox.Text.Contains(icon))
{
IDataObject tmpClibboard = Clipboard.GetDataObject();
int index = richTextBox.Text.IndexOf(icon);
richTextBox.Select(index, icon.Length);
Clipboard.SetImage((Image)icons[icon]);
richTextBox.Paste();
Clipboard.SetDataObject(tmpClibboard);
}
}
richTextBox.ReadOnly = true;
}
private void richTextBox_TextChanged(object sender, EventArgs e)
{
SetIcons();
}
【问题讨论】:
-
创建另一个相同大小的位图。使用 Graphics.FromImage()、Graphics.Clear() 设置您想要的背景颜色(如richTextBox.BackColor)、Graphics.DrawImage() 来绘制图像。请注意,允许用户编辑 RTB 中的文本并不是一个好主意。设置 ReadOnly = true,您的问题就会消失。
标签: c# .net visual-studio