Exemple #1
0
        /*
         * private void GaussMultStream(Image bmp, int strcnt)
         * {
         *  //TODO ToGrayMultiStream
         * }
         *
         * private void SobelMultStream(Image bmp, int strcnt)
         * {
         *  //TODO ToGrayMultiStream
         * }
         */

        /// <summary>
        /// Многопоточная операция. Выполняет преобразование в формат "оттенки серого".
        /// </summary>
        /// <param name="ob">Данные для выполнения операции (класса <see cref="ToGrayParam"/>).</param>
        private void ToGray(object ob)
        {
            Bitmap a = (ob as ToGrayParam).Bmp;
            @Dictionary <int, Bitmap> res = (ob as ToGrayParam).Res;

            for (int i = 0; i <= a.Width - 1; i++)
            {
                for (int ii = 0; ii <= a.Height - 1; ii++)
                {
                    Color c = a.GetPixel(i, ii);
                    byte  y = Border(Options.GrayConvertRCof * c.R + Options.GrayConvertGCof * c.B + Options.GrayConvertBCof * c.G);
                    c = Color.FromArgb(y, y, y);
                    a.SetPixel(i, ii, c);
                }
            }
            res[Thread.CurrentThread.ManagedThreadId] = a;
        }
 /// <summary>
 /// Создает новый экземпляр класса <see cref="ToGrayParam"/>.
 /// </summary>
 /// <param name="b">Изображение для выполнения операций.</param>
 /// <param name="res">Ссылка на словарь остальных значений.</param>
 public ToGrayParam(Bitmap b, @Dictionary <int, Bitmap> res)
 {
     Bmp = b;
     Res = res;
 }