使用 .NET 将两个 PNG 图像合并为一张图像

2024-05-10

我有两个(其实很多)PNG http://en.wikipedia.org/wiki/Portable_Network_Graphics(.png) 我的应用程序中的图像。两者都有透明区域。

我想在我的应用程序中拍摄两个图像,将它们组合起来,并将结果显示在图片框中。后来我想通过一个按钮保存结果。

到目前为止,我设法找到这两个图像并将它们组合起来,但似乎透明度的东西不起作用。我的意思是,如果您将一张图像放在另一张图像上,则结果中只有顶部图像可见,因为显然该图像的背景是一个纯白框。但事实并非如此。

这是我的一些代码:

    Dim Result As New Bitmap(96, 128)
    Dim g As Graphics = Graphics.FromImage(Result)
    Dim Name As String
    For Each Name In BasesCheckList.CheckedItems
        Dim Layer As New Bitmap(resourcesPath & "Bases\" & Name)
        For x = 0 To Layer.Width - 1
            For y = 0 To Layer.Height - 1
                Result.SetPixel(x, y, Layer.GetPixel(x, y))
            Next
        Next
        Layer = Nothing
    Next

resourcesPath是我的资源文件夹的路径。Bases是其中的一个文件夹。和Name是图像的名称。


问题是你正在尝试手动完成此操作。不。有很多用于绘制图像的库例程,并且它们知道如何正确处理透明度。

Dim Result As New Bitmap(96, 128)
Dim g As Graphics = Graphics.FromImage(Result)
Dim Name As String
For Each Name In BasesCheckList.CheckedItems
    Dim Layer As New Bitmap(resourcesPath & "Bases\" & Name)
    g.DrawImageUnscaled(Layer, 0, 0);
    Layer = Nothing
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .NET 将两个 PNG 图像合并为一张图像 的相关文章

  • vb6 中双精度计算的值不正确

    当在 vb6 中添加 2 个值时 我得到一些奇怪的行为 当在立即窗口中针对不同情况打印变量 sum 双精度型 时 如下所示 我得到的结果为 sum 0 sum 0 sum 0 sum 74 46 0 41 sum 74 87 sum 97
  • 更改组合框下拉列表边框的颜色

    My code Private Sub ComboBox2 DrawItem sender As Object e As DrawItemEventArgs Handles ComboBox2 DrawItem If e Index lt
  • ipad safari 中的高分辨率 PNG 文件

    我有一些 asp net 站点 显示从高分辨率 tiff 文件转换而来的 png 图像 图像通过简单的 img 标签显示 问题是 wneh png 的分辨率很大 它在 ipad 的 safari 浏览器中无法正确显示 但大多数 png 文件
  • 当用户尝试打开新实例时返回到已打开的应用程序

    这是我有一段时间想不通的问题 防止第二个实例很简单并且有很多方法 但是恢复已经运行的进程则不然 我想 最小化 撤消最小化并将正在运行的实例置于最前面 在其他窗口后面 将应用程序置于最前面 我使用的语言是 VB NET 和 C 我发现这段代码
  • 数据读取过程中遇到致命错误

    我正在进行定期更新表扫描 Using connect1 As New MySqlConnection ConnectLocalhost serverString connect1 Open Dim cmd New MySqlCommand
  • VB无法访问不同项目中的类,相同的解决方案

    我正在使用 VB for Visual Studio 工作 并且项目中有一个类需要将变量声明为另一个项目中的类 对于可视化 解决方案 A 包含 Project1 和 Project2 在 Project1 的类中 我需要声明一个变量作为 P
  • 在 vb.net 中添加记录并使用 elseif 检查记录是否存在

    我是 vb net 的新手 提前抱歉 谁能帮我看看我的 elseif 代码行有什么问题吗 Dim con As SqlConnection New SqlConnection Data Source PC11 PC kim Initial
  • “重载”在子类中如何工作?

    我有一个基类和一个子类 它们都有相同的属性 但我不明白whyVB 希望我对子类中的属性使用 重载 区别在于该属性的子类版本是Shared而父类基本上是为了结构 这些属性如下所示 Public MustInherit Class Parent
  • matplotlib savefig 性能,在循环内保存多个 png

    我希望找到一种方法来优化以下情况 我有一个使用 matplotlib 的 imshow 创建的大型等高线图 然后 我想使用此等高线图来创建大量 png 图像 其中通过更改 x 和 y 限制以及长宽比 每个图像都是等高线图像的一小部分 因此
  • 检查 listbox1 中是否已存在某个项目

    在 form1 中 我有两个列表框 listbox1 listbox2 加载按钮和保存按钮 此代码会将 listbox1 selecteditem 写入 txt 文件 然后 loadbutton 将加载信息 但在 listbox2 中我希望
  • System.Linq.Dynamic 不支持 OrderByDescending("someColumn")?

    好的 在我们的项目中 我使用 System Linq Dynamic 库 但我刚刚注意到我无法执行以下操作 myDataSource OrderByDescending someColumnName 因为我收到以下错误 重载解析失败 因为无
  • 您是否必须在 VB.NET 中显式创建表单实例? [复制]

    这个问题在这里已经有答案了 如果一个项目包含Form类 形式可以通过以下方式显示 Form1 Show 或者是否需要首先创建表单的实例 Dim frm As New Form1 frm Show 正如所建议的 使用表单名称使用默认实例 而第
  • WPF DataGrid 排序后滚动到顶部

    我有一个使用数据网格的 Net 4 0 WPF 应用程序 目前 按列排序后 网格的滚动位置保持在排序前的位置 对于此应用程序 我需要在任何排序后滚动到网格顶部 我尝试过像这样处理排序事件 Private Sub myDataGrid Sor
  • Libpng、调色板 png 是否带 alpha?

    如何知道调色板 png 是否带有 alpha 我获取有关图像的信息png get IHDR 之后我看看color type PNG COLOR TYPE PALETTE 但我找不到如何知道这个 png 图像是否有 alpha 通道 PNG
  • 将标签文本设置为 gridview 的总行数

    我使用 sql 数据库中的存储过程作为 aspx 页面上 SqlDataSourceControl 的数据源 然后 我使用 SqlDataSourceControl 作为页面上 gridview 的数据源 gridview 上的分页设置为
  • 使用 Rijndael 解密文本文件

    我用过本指南 https www codeproject com Articles 12092 Encrypt Decrypt Files in VB NET Using Rijndael加密的值txtCode Text到一个文本文件中 然
  • 将 DotNetZip ZipFile 转换为字节数组

    我已经构建了一个包含多个条目的 DotNetZip ZipFile 我想将其转换为字节数组 以便我可以使用下面的下载结构下载它 Using wrkZip As New ZipFile create zip add memory stream
  • 从 RichTextBox 复制文本及其格式

    如何将 RichTextBox 中的文本及其格式复制到写字板或网络浏览器 就像复制纯文本一样 您可以使用Clipboard SetText method http msdn microsoft com en us library 6eahs
  • 将透明PNG图像转换为透明JPEG或透明GIF [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个透明的 PNG 图像 我想将其添加为水印this http www bsrsoft com 视频录制软件 但问题是 软件需要jpeg图像作为水
  • 计算文本框中换行的行数

    我在文本框中有一行文本 并且换行为多行 如何计算文本框中换行的行数 你可以使用String Split int lineCount txt Text Split new n r StringSplitOptions None Length

随机推荐