VBA->将透明图片放在另一张透明图片上

时间:2018-10-13 08:03:08

标签: excel vba image transparency transparent

搜索了一段时间后,我仍然找不到解决该问题的方法。

背景: 我正在尝试构建一个产品配置器,该配置器将根据表单中的选择逐步显示成品的图像。

“概述”图像将是“背景图像”,而具有透明背景的图像将彼此重叠。

我的问题

  1. 如果我在表单的同一图像框中插入2张图片,似乎会失去图像的透明度。我最终只会看到最后插入的图像带有白色背景,而不是透明背景。

用于以后编程的其他信息:

  1. 我希望能够删除已经插入的图像

  2. 我不在乎图像是否需要为png或gif

  3. 如果无法通过表单完成此操作,则可以在excel工作表中进行操作,但需要将图像完全放置在工作表上的相同位置,并且彼此重叠

  4. LoadPictureGDI我只是用来尝试将.png图像插入表单 (我也尝试过使用.gif图片,而不使用LoadPictureGDI,但结果与上述问题相同)

到目前为止,我的代码:

Sub Sample(var_ec_image)
    Select Case var_ec_image
        Case "ec_base": AddPicture ("ec_base")
    End Select
End Sub

Sub AddPicture(picname As String)
    ' print picture from selection of form
        image_box.Picture = LoadPictureGDI( _
                ThisWorkbook.Path & "\images\" & picname & ".png")
    ' print test image on top of first image
        image_box.Picture = LoadPictureGDI( _
                ThisWorkbook.Path & "\images\ec_tilt_upper_part.png")
End Sub

2 个答案:

答案 0 :(得分:1)

您已经发现,默认情况下,Excel使插入的图像不透明(不透明)。

但是,您可以选择一种特定的颜色以使其透明


手动设置透明颜色

  • 选择图像,然后单击功能区上的Format标签。
  • Adjust组中,单击颜色
  • 点击设置透明颜色
  • 在应该透明的颜色上单击您的图片。


图片来源: "Why is one stack piece in the Stack Overflow logo slightly off?"


使用VBA设置透明颜色

您可以使用PictureFormat.TransparentBackground Property以编程方式设置透明颜色。

例如,以使名为“图片1”的图像的白色部分透明

Sub WhiteToTransparent()
    With ActiveSheet.Shapes("Picture 1")
        With .PictureFormat
            .TransparentBackground = True
            .TransparencyColor = vbWhite
        End With
        .Fill.Visible = False
    End With
End Sub

根据documentation改编的示例。

答案 1 :(得分:0)

好吧,所以有时候最简单的解决方案是没想到的:) 这对我有用,因为我只有8张照片要处理。

这是如何解决的:

在用户窗体中,我为每个透明图像添加了一个图像控件,还为“基本图像”添加了一个图像控件。

所有图像控件的宽度和高度均相同,并且彼此放置。 图像控件的“ BackStyle”设置为“透明”。 在“图片”中,我插入了不同的(透明)图片。

然后我根据表单中的选择“隐藏”或“显示”特定的图像控件。

    If machine_form.Image2.Visible = False Then
        machine_form.Image2.Visible = True
  Else
        machine_form.Image2.Visible = False
    End If

我很感谢获得的帮助,我想未来还会有更多问题

相关问题