private static IntPtr GetHalfToneBrush() { if (m_halfToneBrush == IntPtr.Zero) { Bitmap bitmap = new Bitmap(8, 8, PixelFormat.Format32bppArgb); Color white = Color.FromArgb(255, 255, 255, 255); Color black = Color.FromArgb(255, 0, 0, 0); bool flag = true; // Alternate black and white pixels across all lines for (int x = 0; x < 8; x++, flag = !flag) { for (int y = 0; y < 8; y++, flag = !flag) { bitmap.SetPixel(x, y, (flag ? white : black)); } } IntPtr hBitmap = bitmap.GetHbitmap(); LOGBRUSH brush = new LOGBRUSH(); brush.lbStyle = (uint)Win32.BrushStyles.BS_PATTERN; brush.lbHatch = (uint)hBitmap; m_halfToneBrush = Gdi32.CreateBrushIndirect(ref brush); Gdi32.DeleteObject(hBitmap); } return(m_halfToneBrush); }
public static extern IntPtr CreateBrushIndirect(ref LOGBRUSH brush);