1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Como é k faço normal smooth a uma imagem numa picture box em C#

Discussão em 'Programação' iniciada por Kesow, 13 de Fevereiro de 2009. (Respostas: 2; Visualizações: 919)

  1. Pessoal precisava de ajuda para conseguir fazer um normal smooth de uma imagem em C#.

    Eu tenho o seguinte codigo:
    Código:
    bitmap = new Bitmap(pictureBox1.Image);
                for (int x = 0; x < bitmap.Width; x++)
                    for (int y = 0; y < bitmap.Height; y++)
                    {
                        bool ok = false;
                        Color pix = bitmap.GetPixel(x, y);
                        int r = 0, g = 0, b = 0;
                        if (x == 0 && y < bitmap.Height)
                        {
                            Color pix2 = bitmap.GetPixel((x + 1), y);
                            r = (pix.R + pix2.R) / 2;
                            g = (pix.G + pix2.G) / 2;
                            b = (pix.B + pix2.B) / 2;
                            bitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
                            ok = true;
                        }
                        if (x == (bitmap.Width-1) && y < bitmap.Height)
                        {
                            Color pix2 = bitmap.GetPixel((x - 1), y);
                            r = (pix.R + pix2.R) / 2;
                            g = (pix.G + pix2.G) / 2;
                            b = (pix.B + pix2.B) / 2;
                            bitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
                            ok = true;
                        }
                        if (ok == false)
                        {
                            Color pix2 = bitmap.GetPixel((x + 1), y);
                            Color pix3 = bitmap.GetPixel((x - 1), y);
                            r = (pix.R + pix2.R + pix3.R) / 3;
                            g = (pix.G + pix2.G + pix3.G) / 3;
                            b = (pix.B + pix2.B + pix3.B) / 3;
                            bitmap.SetPixel(x, y, Color.FromArgb(r, g, b));
                        }
                    }
                pictureBox2.Image = bitmap;
     
    mas ele está a fazer me um horizontal smooth.

    Alguem me pode ajudar??
     
    Última edição pelo moderador: 13 de Fevereiro de 2009
  2. ppt

    ppt Power Member

    Eu não percebo nada disto, mas nesse código vejo umas partes em que apenas se trabalha com a componente "x" da imagem, isto é:

    Código:
    Color pix2 = bitmap.GetPixel(([COLOR="#ff0000"]x + 1[/COLOR]), y);
    Color pix3 = bitmap.GetPixel([COLOR="Red"]x - 1[/COLOR]), y);
    Penso que também deveria haver algo semelhante na direcção "y", tipo "y+1" e "y-1".
     
  3. ok... obrigado vou ver se funciona!
     

Partilhar esta Página