Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-->;将透明图片放置在另一个透明图片上_Excel_Vba_Image_Transparency_Transparent - Fatal编程技术网

Excel VBA-->;将透明图片放置在另一个透明图片上

Excel VBA-->;将透明图片放置在另一个透明图片上,excel,vba,image,transparency,transparent,Excel,Vba,Image,Transparency,Transparent,找了半天,我还是找不到这个问题的解决办法 背景: 我正在尝试构建一个产品配置程序,它将根据表单中的选择逐步显示成品的图像 If machine_form.Image2.Visible = False Then machine_form.Image2.Visible = True Else machine_form.Image2.Visible = False End If “概述”图像将是一个“背景图像”和具有透明背景的图像,这些图像放置在彼

找了半天,我还是找不到这个问题的解决办法

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

    If machine_form.Image2.Visible = False Then
        machine_form.Image2.Visible = True
  Else
        machine_form.Image2.Visible = False
    End If
“概述”图像将是一个“背景图像”和具有透明背景的图像,这些图像放置在彼此的顶部

我的问题:

  • 如果我在表单中的同一图像框中插入两张图片,我似乎会降低图像的透明度。最后,我将只看到最后插入的图像,其背景为白色,而不是透明背景
  • 后续编程的其他信息:

  • 我希望能够删除已插入的图像

  • 我不在乎图像是否需要png或gif

  • 如果这不能在表单中完成,我愿意在excel工作表中完成,但是图像需要完全放置在工作表上相同的位置,在彼此的顶部

  • 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
    

    正如您所发现的,默认情况下,Excel会使插入的图像不透明(不透明)

    但是,您可以选择透明的特定颜色


    手动设置透明颜色
    • 选择图像,然后单击功能区上的
      格式
      选项卡
    • Adjust
      组中,单击颜色
    • 单击“设置透明颜色”
    • 单击图片上应为透明的颜色

     ⤷ 图像源:


    使用VBA设置透明颜色 可以使用以编程方式设置透明颜色

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


    示例改编自。

    好的,因此有时最简单的解决方案从未想到:) 这对我来说很有用,因为我只有8张图片要处理

    如何解决这个问题:

    在userform中,我为每个transparent图像添加了一个图像控件,还为“基本图像”添加了一个图像控件

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

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

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

    我很感激我得到的帮助,我想前面还会有更多与你的问题无关的问题,也许这个例子不能代表你的实际代码,但如果是这样,你的第一个过程可以用一行来代替:
    AddPicture(var_ec_image)
    ,或者您可以去掉它,直接使用
    var_ec_image
    参数调用
    AddPicture