Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2015, 17:15   #1
3JIou_geg
Пользователь
 
Регистрация: 29.03.2015
Сообщений: 11
По умолчанию удаление выделенной области изображения

Как удалить ненужную часть,кусок изображения в исходной картинке? Картинка черно-белая,главное что фон белый,и при удалении выделенной части при нажатии delete вместо куска этого остаётся белое поле или закрашивается белым цветом.(как в программе paint или photoshop). Пока прописал функцию выделить область. Программа на C# VS2010
Код:
 //нажатие л.к. мыши(запоминает начальные координаты прямоугольная область)
        private void pictureBox1_MouseDown_1(object sender, MouseEventArgs e)
        {
            if (pictureBox1.Cursor == Cursors.Cross)
            {
                DrawRectangle = true;
                DrawRectangle_Mouse_X_Start = e.Location.X;
                DrawRectangle_Mouse_Y_Start = e.Location.Y;
                DrawRectangle_Mouse_X_End = e.Location.X + 1;
                DrawRectangle_Mouse_Y_End = e.Location.Y + 1;
            }
            if (pictureBox1.Cursor == Cursors.Hand)
            {
                m_PanStartPoint = new Point(e.X, e.Y);
            }

        }

        //Сдвиг мыши(+ конечные координаты)
        private void pictureBox1_MouseMove_1(object sender, MouseEventArgs e)
        {
            if (pictureBox1.Cursor == Cursors.Cross && e.Button == MouseButtons.Left)
            {
                DrawRectangle_Mouse_X_End = e.Location.X;
                DrawRectangle_Mouse_Y_End = e.Location.Y;
                pictureBox1.Refresh();

            }
            if (pictureBox1.Cursor == Cursors.Hand && e.Button == MouseButtons.Left)
            {
                int DeltaX;
                int DeltaY;
                DeltaX = (m_PanStartPoint.X - e.X);
                DeltaY = (m_PanStartPoint.Y - e.Y);
                tabPage1.AutoScrollPosition = new System.Drawing.Point((DeltaX - tabPage1.AutoScrollPosition.X), (DeltaY - tabPage1.AutoScrollPosition.Y));
            }
        }

рисуем выделенный прямоугольник
        private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
        {
            if (DrawRectangle)
            {
                int MouseX;
                int MouseY;
                MouseX = DrawRectangle_Mouse_X_End - DrawRectangle_Mouse_X_Start;
                MouseY = DrawRectangle_Mouse_Y_End - DrawRectangle_Mouse_Y_Start;

                //Up and Left
                if (MouseX < 0 && MouseY < 0)
                {
                    rect = new Rectangle((new Point(DrawRectangle_Mouse_X_End, DrawRectangle_Mouse_Y_End)), new Size(System.Math.Abs(MouseX), System.Math.Abs(MouseY)));
                }

                //Down and Right

                if (MouseX > 0 && MouseY > 0)
                {
                    rect = new Rectangle((new Point(DrawRectangle_Mouse_X_Start, DrawRectangle_Mouse_Y_Start)), new Size((MouseX), (MouseY)));
                }

                //Up and Right
                if (MouseX < 0 && MouseY > 0)
                {
                    rect = new Rectangle((new Point(DrawRectangle_Mouse_X_End, DrawRectangle_Mouse_Y_Start)), new Size(System.Math.Abs(MouseX), MouseY));
                }

                //Down and Left
                if (MouseX > 0 && MouseY < 0)
                {
                    rect = new Rectangle((new Point(DrawRectangle_Mouse_X_Start, DrawRectangle_Mouse_Y_End)), new Size(MouseX, System.Math.Abs(MouseY)));
                }
                try
                {
                    e.Graphics.DrawRectangle(Pens.Black, rect);
                }
                catch (Exception) { }
            }
        }

Последний раз редактировалось Stilet; 29.03.2015 в 17:30.
3JIou_geg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для каждого элемента А(i,j) найти наиб.значение среди всех четных элементов в выделенной области sasha1212 Общие вопросы C/C++ 0 27.11.2014 21:26
Скриншот выделенной области EinKRieGeR Помощь студентам 1 25.07.2011 12:58
Копирование выделенной области StringGrid DIgorevich Общие вопросы Delphi 8 08.02.2011 19:46
отражение относительно горизонтальной оси симметрии выделенной области Demich Помощь студентам 1 08.10.2010 12:49
Как определить, что в выделенной области есть глаза Бзик Помощь студентам 2 09.04.2009 21:46