通过 C# Graphics 绘制“透明”文本,但在某种程度上它将绘制的文本变为“缺失”,因此它在结果图像中是透明的

2024-02-26

我希望在 DC 上绘制一个字符串(图形 - 我正在使用 C#) - 但我希望将绘制的文本从图像中“删除”,以便剩下的本质上是文本的剪切。

如果我用透明画笔绘制绳索,显然什么都不会发生。

有没有一种方法可以绘制类似的东西,或者我是否需要使用 2 个 DC 和 BitBlt 以及 NOT 或 XOR 或其他任何组合(我几年前做过类似的事情,但想知道是否有更简单的方法)?


如果你想从图像中剪掉某些东西,你可以这样做:

Drawing2D.GraphicsContainer c = graphics.BeginContainer();
GraphicsPath p = new GraphicsPath();

p.AddString(...);

graphics.SetClip(p, CombineMode.Xor);
graphics.DrawImage(this.Image, this.Location);

graphics.EndContainer(c);

这就像上面的解决方案,但首先如果没有 SetClip,图形对象不会更新,其次,您需要使用 Xor。

请注意,创建 GraphicsContainer 是可选的,但会使封装更容易,特别是在使用转换时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 C# Graphics 绘制“透明”文本,但在某种程度上它将绘制的文本变为“缺失”,因此它在结果图像中是透明的 的相关文章

随机推荐