/// <summary>
        /// Инвертирует битмам
        /// </summary>
        /// <param name="bitmap">Инвертируемый битмап</param>
        private void InverseBitmap(Bitmap bitmap)
        {
            for (int row = 0; row < bitmap.Height; row++)
            {
                for (int col = 0; col < bitmap.Width; col++)
                {
                    Color currentClr = bitmap.GetPixel(col, row);
                    Color inverseClr = Color.FromArgb(255, 255 - currentClr.R, 255 - currentClr.G, 255 - currentClr.B);
                    bitmap.SetPixel(col, row, inverseClr);

                    //Инициируем событие изменения прогресса инвертирования

                    if (this.InverseProressChanged != null)
                    {
                        InverseProgressChangedEventArgs e = new InverseProgressChangedEventArgs()
                        {
                            Min      = 0,
                            Max      = bitmap.Width * bitmap.Height,
                            Progress = row * bitmap.Width + col
                        };
                        this.InverseProressChanged(this, e);
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Обновление прогрессбара при инвертировании изображения.
        /// Выполняется в потоке инвертирования
        /// </summary>
        private void OnInverseProgressChanged(object sender, EventArgs e)
        {
            InverseProgressChangedEventArgs eArgs = e as InverseProgressChangedEventArgs;

            if (eArgs != null)
            {
                this.Invoke(new Action(() => this.sbpbProgress.Value = 100 * eArgs.Progress / (eArgs.Max - eArgs.Min)));
            }
        }