Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4657|回复: 2

请问vba 控件设置的png背景图怎么没有透明度

[复制链接]
发表于 2019-4-27 01:34 | 显示全部楼层 |阅读模式
2学分
本帖最后由 淡淡的邪 于 2019-4-27 23:16 编辑
  1. Option Explicit
  2. Private Type GUID
  3.     Data1                   As Long
  4.     Data2                   As Integer
  5.     Data3                   As Integer
  6.     Data4(0 To 7)           As Byte
  7. End Type

  8. Private Type PICTDESC
  9.     Size                        As Long
  10.     Type                        As Long
  11.     hPic                        As LongPtr
  12.     hPal                        As LongPtr
  13. End Type

  14. Private Type GdiplusStartupInput
  15.     GdiplusVersion              As Long
  16.     DebugEventCallback          As LongPtr
  17.     SuppressBackgroundThread    As Long
  18.     SuppressExternalCodecs      As Long
  19. End Type

  20. Private Declare PtrSafe Function GdiplusStartup Lib "GDIPlus" (token As LongPtr, _
  21.     inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As LongPtr = 0) As LongPtr
  22. Private Declare PtrSafe Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As LongPtr, bitmap As LongPtr) As LongPtr
  23. Private Declare PtrSafe Function GdipCreateHBITMAPFromBitmap Lib "GDIPlus" (ByVal bitmap As LongPtr, _
  24.     hbmReturn As LongPtr, ByVal background As Long) As LongPtr
  25. Private Declare PtrSafe Function GdipDisposeImage Lib "GDIPlus" (ByVal image As LongPtr) As LongPtr
  26. Private Declare PtrSafe Function GdiplusShutdown Lib "GDIPlus" (ByVal token As LongPtr) As LongPtr
  27. '原版为olepro32.dll
  28. Private Declare PtrSafe Function OleCreatePictureIndirect Lib "oleaut32.dll" (PicDesc As PICTDESC, _
  29.     RefIID As GUID, ByVal fPictureOwnsHandle As LongPtr, IPic As IPicture) As LongPtr

  30. Public Function LoadImage(ByVal strFName As String) As IPicture
  31.     Dim uGdiInput As GdiplusStartupInput
  32.     Dim hGdiPlus As LongPtr
  33.     Dim hGdiImage As LongPtr
  34.     Dim hBitmap As LongPtr

  35.     uGdiInput.GdiplusVersion = 1
  36.    
  37.     If GdiplusStartup(hGdiPlus, uGdiInput) = 0 Then
  38.         If GdipCreateBitmapFromFile(StrPtr(strFName), hGdiImage) = 0 Then
  39.             GdipCreateHBITMAPFromBitmap hGdiImage, hBitmap, 0
  40.             Set LoadImage = ConvertToIPicture(hBitmap)
  41.             GdipDisposeImage hGdiImage
  42.         End If
  43.         GdiplusShutdown hGdiPlus
  44.     End If

  45. End Function

  46. Public Function ConvertToIPicture(ByVal hPic As LongPtr) As IPicture

  47.     Dim uPicInfo As PICTDESC
  48.     Dim IID_IDispatch As GUID
  49.     Dim IPic As IPicture

  50.     Const PICTYPE_BITMAP = 1

  51.     With IID_IDispatch
  52.         .Data1 = &H7BF80980
  53.         .Data2 = &HBF32
  54.         .Data3 = &H101A
  55.         .Data4(0) = &H8B
  56.         .Data4(1) = &HBB
  57.         .Data4(2) = &H0
  58.         .Data4(3) = &HAA
  59.         .Data4(4) = &H0
  60.         .Data4(5) = &H30
  61.         .Data4(6) = &HC
  62.         .Data4(7) = &HAB
  63.     End With

  64.     With uPicInfo
  65.         .Size = Len(uPicInfo)
  66.         .Type = PICTYPE_BITMAP
  67.         .hPic = hPic
  68.         .hPal = 0
  69.     End With

  70.     OleCreatePictureIndirect uPicInfo, IID_IDispatch, True, IPic

  71.     Set ConvertToIPicture = IPic
  72. End Function
复制代码
64位的excel206
用LoadImage() 设置的图片 png图片本身是半透明的
    Me.Label22.Picture = LoadImage("D:\学习\Excel\图片素材\bgblk2.png")
    Me.Label21.Picture = LoadImage("D:\学习\Excel\图片素材\BGblk.png")
    Me.Picture = LoadImage("D:\学习\Excel\图片素材\bg2.jpg")

能载入图片,但是png没有透明的。请高手帮忙看看要怎么样才会有透明度,谢谢了请问这个GDIplus有png透明的属性或方法吗?谢谢各位大哥
要是“hhzjxss”大大能看到,并帮忙说说就好了

最佳答案

查看完整内容

图像控件 | Microsoft Docs https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/image-control 搜的,应该是不支持吧。
发表于 2019-4-27 01:34 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2019-4-27 13:20 | 显示全部楼层
爱疯 发表于 2019-4-27 08:51
图像控件 | Microsoft Docs
https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-inter ...

谢谢您的回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-26 00:00 , Processed in 0.263481 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表