ожна обробляти якимось чином окремий випадок крайніх точок (наприклад, для кута зображення при апертурі 3 брати не 9 точок, а 4, і результат відправляти в цей самий кут або значення крайніх точок дублювати до заповнення квадратної матриці потрібних розмірів).
3. Блок-схема
4. Лістинг програми
//відображення по вертикалі
private void button6_Click (object sender, EventArgs e)
{(int i=0; i lt; bmp2.Width; i ++)
{(int j=0; j lt; bmp2.Height/2; j ++)
{
//запомніаем поточний піксель оброблюваного ізображеніяbufR=bmp2.GetPixel (i, j) .R;
int bufG=bmp2.GetPixel (i, j) .G; bufB=bmp2.GetPixel (i, j) .B;
//присвоюємо квітам пікселя оброблюваного ізодраженія нові значення
bmp2.SetPixel (i, j, Color.FromArgb (bmp2.GetPixel (i, bmp2.Height - 1 - j) .R, bmp2.GetPixel (i, bmp2.Height - 1 - j ) .G, bmp2.GetPixel (i, bmp2.Height - 1 - j) .B)) ;. SetPixel (i, bmp2.Height - 1 - j, Color.FromArgb (bufR, bufG, bufB));
//запомніаем поточний піксель допоміжної колірної карти
bufR=bmp3.GetPixel (i, j) .R;=bmp3.GetPixel (i, j) .G;=bmp3.GetPixel (i, j) .B;
//присвоюємо квітам пікселя допоміжної колірної карти нові значення
bmp3.SetPixel (i, j, Color.FromArgb (bmp3.GetPixel (i, bmp3.Height - 1 - j) .R, bmp3.GetPixel (i, bmp3.Height - 1 - j ) .G, bmp3.GetPixel (i, bmp3.Height - 1 - j) .B)) ;. SetPixel (i, bmp3.Height - 1 - j, Color.FromArgb (bufR, bufG, bufB));
//запомніаем поточний піксель допоміжної колірної карти
bufR=bmp4.GetPixel (i, j) .R;=bmp4.GetPixel (i, j) .G;=bmp4.GetPixel (i, j) .B;
//присвоюємо квітам пікселя допоміжної колірної карти нові значення
bmp4.SetPixel (i, j, Color.FromArgb (bmp4.GetPixel (i, bmp4.Height - 1 - j) .R, bmp4.GetPixel (i, bmp3.Height - 1 - j ) .G, bmp4.GetPixel (i, bmp4.Height - 1 - j) .B)) ;. SetPixel (i, bmp4.Height - 1 - j, Color.FromArgb (bufR, bufG, bufB));
}
}. Image=bmp2;
}
//відображення по горизонталі
//відбувається так само, як і відображення по вертикалі
private void button7_Click (object sender, EventArgs e)
{(int i=0; i lt; bmp2.Width/2; i ++)
{(int j=0; j lt; bmp2.Height; j ++)
{bufferR=bmp2.GetPixel (i, j) .R; bufferG=bmp2.GetPixel (i, j) .G; bufferB=bmp2.GetPixel (i, j) .B; .SetPixel (i, j, Color.FromArgb (bmp2.GetPixel (bmp2.Width - 1 - i, j) .R, bmp2.GetPixel (bmp2.Width - 1 - i, j) .G, bmp2.GetPixel (bmp2.Width- 1 - i, j) .B)) ;. SetPixel (bmp2.Width - 1 - i, j, Color.FromArgb (bufferR, bufferG, bufferB));=bmp3.GetPixel (i, j) .R;= bmp3.GetPixel (i, j) .G;=bmp3.GetPixel (i, j) .B; .SetPixel (i, j, Color.FromArgb (bmp3.GetPixel (bmp2.Width - 1 - i, j) .R , bmp3.GetPixel (bmp3.Width - 1 - i, j) .G, bmp3.GetPixel (bmp3.Width - 1 - i, j) .B)) ;. SetPixel (bmp3.Width - 1 - i, j, Color.FromArgb (bufferR, bufferG, bufferB));=bmp4.GetPixel (i, j) .R;=bmp4.GetPixel (i, j) .G;=bmp4.GetPixel (i, j) .B; .SetPixel (i, j, Color.FromArgb (bmp4.GetPixel (bmp4.Width - 1 - i, j) .R, bmp4.GetPixel (bmp4.Width - 1 - i, j) .G, bmp4.GetPixel (bmp4.Width- 1 - i, j) .B)) ;. SetPixel (bmp4.Width - 1 - i, j, Color.FromArgb (bufferR, bufferG, bufferB));
}
}. Image=bmp2;
}
//сглажіваніеvoid button10_Click (object sender, EventArgs e)
{
//ініціалізіруем змінні для зберігання квітів сусідніх пікселів
//(верхнього, нижнього, лівого, правого) RedC, RedL, RedR, RedU, RedD, RedLU, RedRU, RedLD, RedRD, NewRed,
GreenC, GreenL, GreenR, GreenU, GreenD, GreenLU, GreenRU, GreenLD, GreenRD, NewGreen ,, BlueL, BlueR, BlueU, BlueD, BlueLU, BlueRU, BlueLD, BlueRD, NewBlue;
//в кожному пікселі (якщо він не крайній) для кожного кольору
//знаходимо середнє значення глибини (int i=0; i lt; bmp2.Width; i ++)
for (int j=0; j lt; bmp2.Height; j ++)
{((i!=0) amp; amp; (j!=0) amp; amp; (i!=bmp2.Width - 1) amp; amp; (j!=bmp2. Height - 1))
{
//знаходження значень сусідніх пікселів
RedC=bmp2.GetPixel (i, j) .R;
RedL=bmp2.GetPixel (i, j - 1) .R;=bmp2.GetPixel...