Same problem here!
We switched our addin from framework 3.5 (2012) to framework 4.0 (2013)
When using Ribbon appearance :Compact in 2013 -> all our icons are enlarged by about 4x
Our icons contains 16x16, 32x32, 48x48
of course we could change all of our icons to only 16x16 but that's not a proper solotion.
Is this problem solved yet?
regards,
Geert
Remark: Attachment DataLINK.ico renamed to DataLINK.ico.txt
Code used:
Dim objNaarDataLINKCmdPicture AsIPictureDisp = clsPictureConverter.IconToIPictureDisp(My.Resources.DataLINK)
Class clsPictureConverter:
Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices
Public ClassclsPictureConverter
Inherits System.Windows.Forms.AxHost
SubNew()
MyBase.New(Nothing)
EndSub
PublicSharedFunction ImageToIPictureDisp(ByVal image As System.Drawing.Image) As stdole.IPictureDisp
ReturnAxHost.GetIPictureDispFromPicture(image)
EndFunction
PublicSharedFunction IPictureDisptoImage(ByVal ipicturedisp As stdole.IPictureDisp) As System.Drawing.Image
ReturnAxHost.GetPictureFromIPicture(ipicturedisp)
EndFunction
'*** icon and bitmap through OLE ***********************************************************************************************
PublicSharedFunction IconToIPictureDisp(ByVal icon As System.Drawing.Icon) As stdole.IPictureDisp
Dim pictIcon AsNewPICTDESC.Icon(icon)
Return OleCreatePictureIndirect(pictIcon, iPictureDispGuid, True)
EndFunction
PublicSharedFunction BitmapToIPictureDisp(ByVal bmp As System.Drawing.Bitmap) As stdole.IPictureDisp
Dim pictBmp AsNewPICTDESC.Bitmap(bmp)
Return OleCreatePictureIndirect(pictBmp, iPictureDispGuid, True)
EndFunction
'Definitions
<
DllImport("OleAut32.dll", EntryPoint:="OleCreatePictureIndirect", ExactSpelling:=True, PreserveSig:=False)> _
PrivateSharedFunction OleCreatePictureIndirect(<MarshalAs(UnmanagedType.AsAny)> _
ByVal picdesc AsObject, ByRef iid AsGuid, <MarshalAs(UnmanagedType.Bool)> ByVal fOwn AsBoolean) As stdole.IPictureDisp
EndFunction
PrivateShared iPictureDispGuid AsGuid = GetType(stdole.IPictureDisp).GUID
PrivateNotInheritableClassPICTDESC
PrivateSubNew()
EndSub
'Picture Types
PublicConst PICTYPE_UNINITIALIZED AsShort = -1
PublicConst PICTYPE_NONE AsShort = 0
PublicConst PICTYPE_BITMAP AsShort = 1
PublicConst PICTYPE_METAFILE AsShort = 2
PublicConst PICTYPE_ICON AsShort = 3
PublicConst PICTYPE_ENHMETAFILE AsShort = 4
<
StructLayout(LayoutKind.Sequential)> _
PublicClassIcon
Friend cbSizeOfStruct AsInteger = Marshal.SizeOf(GetType(PICTDESC.Icon))
Friend picType AsInteger = PICTDESC.PICTYPE_ICON
Friend hicon AsIntPtr = IntPtr.Zero
Friend unused1 AsInteger
Friend unused2 AsInteger
FriendSubNew(ByVal icon As System.Drawing.Icon)
Me.hicon = icon.ToBitmap().GetHicon()
EndSub
EndClass
<
StructLayout(LayoutKind.Sequential)> _
PublicClassBitmap
Friend cbSizeOfStruct AsInteger = Marshal.SizeOf(GetType(PICTDESC.Bitmap))
Friend picType AsInteger = PICTDESC.PICTYPE_BITMAP
Friend hbitmap AsIntPtr = IntPtr.Zero
Friend hpal AsIntPtr = IntPtr.Zero
Friend unused AsInteger
FriendSubNew(ByVal bitmap As System.Drawing.Bitmap)
Me.hbitmap = bitmap.GetHbitmap()
EndSub
EndClass
EndClass
End
Class