1

首先,请阅读链接

要在 c# 中使用 CreateDIBSection,我是这样定义的。

[DllImport("gdi32.dll", EntryPoint = "CreateDIBSection")]
public static extern IntPtr CreateDIBSection(IntPtr hdc, ref BITMAPINFO pbmi,
                     uint iUsage, out IntPtr ppvBits, IntPtr hSection, uint dwOffset);

而且我还定义了结构类型,就像我从Link中学到的 那样

public unsafe struct MY_BINFO
{
    [MarshalAs(UnmanagedType.U4)]
    public fixed uint bmiColors[3]; 
}

一个问题与我定义的 MYBITMAPINFO 有关。

[StructLayout(LayoutKind.Sequential)]
public unsafe struct MYBITMAPINFO 
{
   public BITMAPINFOHEADER bmiHeader; 
   [MarshalAs(UnmanagedType.U4)]
   public fixed uint bmiColors[3]; 
}

当我调用 CreateDIBSection 函数时,MYBITMAPINFO 被转换为 BITMAPINFO 类型,如下所示 [LINK_1]

CreateDibSection(hdc, (const BITMAPINFO* )&dibInfo, ... ) //C++ code

但是我不知道如何编写与上述代码相同的 C# 代码。(从 MYBITMAPINFO 到 BITMAPINFO 的类型转换)

感谢您的阅读。

4

0 回答 0