Я работаю с GDI +, изображение, с которым я работаю, является изображением 1bbp. То, что я хотел бы сделать, это нарисовать прямоугольник на изображении, и все под этим прямоугольником будет инвертировано (белые пиксели станут черными, а черные пиксели станут белыми).
Весь пример кода, который я видел, предназначен для изображений с 8-битной цветовой шкалой RGB, и я не думаю, что методы, которые они используют, будут работать для меня.
Вот код, который у меня есть. Это родительский элемент управления, одна из Epl2.IDrawableCommand
будет командой, которая выполняет инвертирование.
public class DisplayBox : UserControl
{
(...)
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
(...)
using (Bitmap drawnLabel = new Bitmap((int)((float)Label.LabelHeight * _ImageScaleFactor), (int)((float)Label.LableLength *(int) _ImageScaleFactor), System.Drawing.Imaging.PixelFormat.Format1bppIndexed))
{
using (Graphics drawBuffer = Graphics.FromImage(drawnLabel))
{
(...)
foreach (Epl2.IDrawableCommand cmd in Label.Collection)
{
cmd.Paint(drawBuffer);
}
(...)
}
}
}
}
}
public class InvertArea : IDrawableCommand
{
(...)
public Rectangle InvertRectangle {get; set;}
public void Paint(Graphics g)
{
throw new NotImplementedExecption();
}
}
Что я должен вставить в Paint(Graphic g)
для этой команды?