0

pictureBox クリック イベントから複数の色補正メソッドを呼び出しています。問題は、メソッドがスキップされる場合があることです。メソッドが 2 回実行されることがあります。したがって、メソッドを呼び出す最善の方法を使用していない可能性があります。コードは次のとおりです。

編集:質問が不明確であるというコメントを受け取りました。私には明らかです。しかし、私が間違っている場合に備えて、明確にさせてください。複数のメソッドを呼び出す現在の方法でエラーが発生しています。そうする適切な方法は何ですか?

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(); 
}  

6 つのメソッドをすべて表示するにはスペースがかかりすぎますが、1 つあれば十分です。

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;
    } 

}

複数のメソッドを呼び出すためにマルチキャスト デリゲートが使用されていると聞いたことがありますが、それらを正しく使用する方法や、それが最善の方法であるかどうかさえわかりません。おすすめは?

4

0 に答える 0