У меня есть программа, которая редактирует изображения различными способами ... У меня есть событие Paint, которое вызывается каждый раз, когда я делаю это. Invalidate () ...
Мой метод рисования выглядит так:
private void EditImage_Paint(object sender, PaintEventArgs e)
{
if (isLOaded == true)
{
Graphics graphicsWindow; // reference to the graphic surface of this window
Graphics graphicsImage; // reference to in-memory surface
theImage = new Bitmap(Width, Height); // bitmap for window surface copy
graphicsWindow = e.Graphics; // get our current window's surface
graphicsImage = Graphics.FromImage(theImage); // create surfaces from the bitmaps
graphicsImage.DrawImage(firstLoaded, 0, 0, Width, Height);
if (isInvert == true)
{
theImage = InvertBitmap(theImage);
}
else if (isGrayscale == true)
{
theImage = GrayscaleBitmap(theImage);
}
else if (isThreshold == true)
{
theImage = ThresholdBitmap(theImage);
}
else if (isResize == true)
{
theImage = resizeImage(theImage, 10, 100);
}
else if (isFilterRed == true)
{
theImage = FilterRedBitmap(theImage);
}
else if (isFilterGreen == true)
{
theImage = FilterGreenBitmap(theImage);
}
else if (isFilterBlue == true)
{
theImage = FilterBlueBitmap(theImage);
}
graphicsWindow.DrawImage(theImage, 0, 0);
}
}
У меня есть другая область в моем коде, которая устанавливает некоторые логические значения в true или false в событиях Click .... (так как моя программа использует winforms), и, следовательно, моя программа знает, какой метод вызывать. Однако я считаю, что помещать все эти вещи в краску - это просто плохой дизайн. Моя проблема в том, что я не знаю, как передать растровое изображение в событие Click? Это возможно? Я бы предпочел иметь дело с тем, что происходит в событиях Click, а не с методами рисования. Любая идея о том, как я мог бы разработать это лучше?