Re: 8 bit image




> How do I instantiate an RGBQUAD?

[StructLayout(LayoutKind.Sequential)]
public struct RGBQUAD
{
public byte rgbBlue;
public byte rgbGreen;
public byte rgbRed;
public byte rgbReserved;
};

[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFOHEADER
{
public uint biSize;
public int biWidth;
public int biHeight;
public ushort biPlanes;
public ushort biBitCount;
public uint biCompression;
public uint biSizeImage;
public int biXPelsPerMeter;
public int biYPelsPerMeter;
public uint biClrUsed;
public uint biClrImportant;
};

[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,
SizeConst=1024)]
public RGBQUAD [] bmiColors;
};


// For 8bpp Image
BITMAPINFO bmi = new BITMAPINFO();

bmi.bmiHeader.biSize = (UInt32)Marshal.SizeOf(bmi.bmiHeader);
// you fill out the rest of the structure
....

// fill in the color palette, either read the colors from a file or create
them yourself
for ( int i = 0; i < 256; i++ )
{
bmi.bmiColors[i].rgbBlue = blue; // you supply the colors
bmi.bmiColors[i].rgbRed = red;
bmi.bmiColors[i].rgbGreen = green;
bmi.bmiColors[i].rgbReserved = 0;
}

....

// Create 8bpp DIB bitmap
IntPtr hBmp = CreateDIBSection(hDC, bmi, 0, ref pBits, IntPtr.Zero, 0);

I hope this helps!



.



Relevant Pages

  • Re: FTP FtpFindFile
    ... public struct WIN32_FIND_DATA ... public int fileAttributes; ... public FILETIME lastAccessTime; ... public uint fileAttributes; ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Arrays in structures
    ... public uint dwFileAttributes; ... public FILETIME ftLastAccessTime; ... public string cAlternateFileName; ... public struct FILETIME ...
    (microsoft.public.dotnet.languages.csharp)
  • FieldOffset on 64bit OS
    ... public struct MOUSEINPUT ... public int dx; ... public uint mouseData; ... public ushort wScan; ...
    (microsoft.public.dotnet.languages.csharp)
  • Casting problem with C# DLL
    ... VB Function within windows app and windows service: ... public enum IFILTER_FLAGS ... public uint ulKind; ... public struct FULLPROPSPEC ...
    (microsoft.public.dotnet.languages.vb)

Loading