删除图像c#的圆形透明部分

2024-04-14

我正在位图上创建一个圆圈,但想在其中有一个洞。经过半个小时的搜索,我只找到了将图像裁剪为圆形的方法。困难的是,中间的孔应该像图像的其余部分一样透明。

This https://i.stack.imgur.com/Avdrv.png是基础图像并且黄色圆圈 https://i.stack.imgur.com/OAGC5.png表示应添加的透明区域。

感谢您的任何帮助。


开始很简单:通过执行以下操作创建透明位图g.Clear(Color.Transparent)然后用颜色绘制/填充一个圆圈。

下一步有点棘手:接下来你想要用透明度绘制孔。

为此,您需要将 Graphics 对象切换到右侧CompositingMode;默认是SourceOver但你想要SourceCopy。前者overlays创建混合颜色的 alpha 值。后者将执行我们想要的操作:通过以下方式绘制孔copying绘制的颜色包括阿尔法就在旧的上面..

这是一个例子:

Bitmap bmp = new Bitmap(500, 500);
using (Graphics g = Graphics.FromImage(bmp))
{
    g.Clear(Color.Transparent);
    //g.SmoothingMode = SmoothingMode.AntiAlias;
    g.CompositingMode = CompositingMode.SourceCopy;
    g.FillEllipse(Brushes.DarkGreen, 100, 100, 300, 300);
    g.FillEllipse(Brushes.Transparent, 200, 200, 100, 100);
}
pictureBox1.Image = bmp;

这就是 a 中的样子PictureBox with a BackgroundImage:

一些注意事项:

  • 您还可以使用半透明画笔创建“有色”孔;但不要为此使用抗锯齿功能,因为它会引入彩色条纹。

  • 我们在这里使用了简单的圆圈,但带有一个GraphicsPath您可以创建和填充几乎任何形状和复杂程度的形状。

  • 并使用一个GraphicsPath也可以作为填充透明度的替代方案:first添加大和then路径将是较小的内椭圆用一个洞创建的填充它会得到完全相同的结果!但我发现上面的解决方案更有启发性。

  • 最后注意事项:正如 clarkitect 所指出的,要保存,请使用支持透明度的格式。Png总是推荐..

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

删除图像c#的圆形透明部分 的相关文章

随机推荐

  • 如何在 python 中 POST xml 元素

    基本上我有这个 xml 元素 xml etree ElementTree 我想将其 POST 到 url 目前我正在做类似的事情 xml string xml etree ElementTree tostring my element da
  • 如何实时更新RecyclerView?

    我有一个列表 任何用户都可以随时更新 该列表显示在回收视图 我想实时更新这个列表 以便用户可以获得更好的用户体验 因为用户不需要多次执行刷新 现在的问题是 如何实时更新这个列表 使用 RecyclerView 您可以更新单个项目 项目范围或
  • 使用 UIManagedDocument 在 ios5 中预加载核心数据数据库

    我正在尝试在我的应用程序中包含预加载的核心数据数据库 我正在使用这里给出的解决方案query https stackoverflow com questions 8683892 pre load core data database in
  • 具有相同成员类型的 C 结构是否保证在内存中具有相同的布局?

    本质上 如果我有 typedef struct int x int y A typedef struct int h int k B 我有A a C 标准是否保证 B a gt k是相同的a y 具有相同成员类型的 C 结构是否保证在内存中
  • Maven - 抑制 [警告] JAR 将为空 - 没有内容被标记为包含在 pom.xml 中

    我的maven项目故意地只需要src test java and src test resources 移除后src main 文件夹中 预期的警告出现在mvn verify WARNING JAR will be empty no con
  • AttributeError:__enter__ 使用 with 语句 SqlAlchemy 会话

    我明白了AttributeError enter 当我尝试像这样使用 SQLAlchemy 会话时guide http docs sqlalchemy org en latest orm session basics html My cod
  • 有效地查找文本文件中的最后一行[重复]

    这个问题在这里已经有答案了 我需要从许多非常大 几百兆字节 的文本文件中提取最后一行来获取某些数据 目前 我正在使用 python 循环遍历所有行 直到文件为空 然后处理返回的最后一行 但我确信有一种更有效的方法来执行此操作 使用 pyth
  • VBA Excel 简单错误处理

    我尽可能多地上网查看 除了微软支持网站 该网站由于某种原因在工作中被屏蔽 我试图简单地跳过一个错误 我在这里编写的代码经过简化 但应该以相同的方式工作 我的代码应该做什么 我的一名潜艇在循环中创建形状并命名它们 btn 1 btn 2 等
  • 无法在VS2010中调试.NET框架代码

    我正在尝试使用公共可用符号调试 NET 代码 我按照说明设置 在 工具 gt 选项 gt 调试 中 我选中了 启用 NET框架源代码步进 禁用了 仅启用我的代码 在 工具 gt 选项 gt 调试 gt 符号 中加载所有符号 我检查了这个文件
  • 图像特定区域的可点击链接

    我有一张地图图像 它在地图上有特定的区域名称 但它只是一个 PNG 图像 我希望用户能够单击地图上的名称并被带到特定的面板 例如 地图上有三个名字 如果用户单击X 100 Y 300左右 他们会被带到一个面板 而如果他们点击X 400 Y
  • 具有常量(真)值的条件运算符?

    我正在查看 OpenSSL 中使用的一些预处理器宏 我发现了以下内容crypto stack safestack h define CHECKED STACK OF type p STACK 1 p STACK OF type 0 defi
  • 在 Windows 中,如何将单个文本文件中的多行合并为一行?

    我有多个遵循此格式的标准文本文件 每个文件中的行数不同 Line1 Line2 Line3 Line4 我想将每一行合并为一行 每组字符之间有一个空格 因此文本文件将如下所示 Line1 Line2 Line3 Line3 等等 由于每个文
  • Blueprism:如何在计算阶段使用替换功能?

    我正在使用 BluePrism 从应用程序中读取文本 文本结构如下 数字因情况而异 请注意您的订单参考号 525 我需要能够从文本中提取数字 看计算阶段 有一个替换函数 replace text pattern new text 我想使用此
  • python 路径 django

    我怎样才能添加一些东西到我的 Pythonpath 文件到底位于哪里 我必须更改以添加到我的 pythonpath 中 我到底要添加什么到我的 Pythonpath 中 如果Python调用 Library Frameworks Pytho
  • 从 python 3.2 中的文件的“Content-Length”值获取文件大小

    我想要得到Content Length来自元变量的值 我需要获取要下载的文件的大小 但最后一行返回错误 HTTPMessage对象没有属性getheaders import urllib request import http client
  • 如何将令牌存储在Android的本地或会话存储中?

    我正在创建一个与 SOAP Web 服务交互以从数据库获取数据的应用程序 当用户成功登录时 它会通过网络服务生成一个令牌 稍后在其他活动中调用 Web 服务方法时将需要此令牌 我的问题是 如何在需要时将该令牌传递给下一个活动并维护它直到用户
  • 如何将 HTML 和 CSS 添加到 PDF 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 HTML 不是 XHTML 文档 可以在 Firefox 3 和 IE 7 中很好地呈现 它使
  • x, = ... - 这个尾随逗号是逗号运算符吗?

    我不明白变量后面的逗号是什么lines means http matplotlib org examples animation simple anim html http matplotlib org examples animation
  • 使用 jQuery 获取所选选项 id

    我正在尝试使用 jQuery 根据所选选项发出 ajax 请求 有没有一种简单的方法来检索所选的选项 ID 例如 id2 使用 jQuery
  • 删除图像c#的圆形透明部分

    我正在位图上创建一个圆圈 但想在其中有一个洞 经过半个小时的搜索 我只找到了将图像裁剪为圆形的方法 困难的是 中间的孔应该像图像的其余部分一样透明 This https i stack imgur com Avdrv png是基础图像并且黄