Как правильно вызывать несколько методов из одного события?
Я вызываю несколько методов коррекции цвета из события щелчка PictureBox. Проблема в том, что иногда метод будет пропущен. Иногда метод запускается дважды. Поэтому я, возможно, не использую наилучший способ вызова своих методов. Код следует:
РЕДАКТИРОВАТЬ: я получил комментарий о том, что вопрос неясен. Это кажется мне понятным. Но в случае, если я ошибаюсь, позвольте мне уточнить: я получаю ошибки с моим текущим способом вызова нескольких методов. Как правильно это сделать?
private void pictureBox1_Click(object sender, EventArgs e)
{
pictureBox0.Image = pictureBox1.Image;
foreach (PictureBox item in Controls.OfType<PictureBox>())
{
item.Image = pictureBox0.Image;
item.Refresh();
}
runColorMethods();
}
private void runColorMethods()
{
red();
orange();
yellow();
green();
blue();
magenta();
}
Чтобы показать все шесть методов, потребуется слишком много места, одного будет достаточно.
private void red()
{
// declare initial variables
int xRed = 32;
lock (lockObject)
{
// Get bitmap from picturebox
Bitmap bmp1 = (Bitmap)pictureBox1.Image;
// search through each pixel via x, y coordinates, examine and make changes.
// Dont let values exceed 255 or fall under 0.
for (int y = 0; y < bmp1.Height; y++)
for (int x = 0; x < bmp1.Width; x++)
{
Color c = bmp1.GetPixel(x, y);
int myRed = c.R, myGreen = c.G, myBlue = c.B;
myRed += xRed;
if (myRed > 255)
myRed = 255;
bmp1.SetPixel(x, y, Color.FromArgb(255, myRed, myGreen, myBlue));
}
// assign the new bitmap to the picturebox
pictureBox1.Image = (Bitmap)bmp1;
}
}
Я слышал, что многоадресные делегаты используются для вызова нескольких методов, но я не знаю, как их правильно использовать или даже если это лучший способ. Рекомендации?