Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мерцание при отрисовке изображения, Класс ControlPaint 
:(
    Опции темы
Dmitrii
Дата 30.8.2010, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.7.2010

Репутация: нет
Всего: нет



Необходимо реализовать выделение части изображения(как во всех графических редакторах) и "лупу" в отдельном PictureBox'е.
При отрисовке PictureBox область выделения мерцает+область выделения можно вывести за пределы PictureBox(можно выделять весь экран), как от этого можно избавиться? Также мерцает изображение в PictureBox "лупы".
Выложу код методо MouseMove, MouseUp и MouseDown(все основное действо происходит в них).
Код

private void source_MouseMove(object sender, MouseEventArgs e)
        {            
       /*     filtered_g.Clear(Color.White);
            filtered_g.DrawImage(source.Image, new Rectangle(0, 0, 180, 180), new Rectangle((int)(((e.X - add_width) * work_coeff) - (180/2) / scale_factor), (int)(((e.Y - add_height) * work_coeff) - (180/2) / scale_factor), (int)(180 / scale_factor),(int)( 180 / scale_factor)), GraphicsUnit.Pixel);
            filtered_g.DrawLine(new Pen(Brushes.Black, 2), 90, 80, 90, 100);
            filtered_g.DrawLine(new Pen(Brushes.Black, 2), 80, 90, 100, 90);*/ - попытка сделать ручной magnifier
            if (selection) {
                if (delete_selection == false)
                {
                    ControlPaint.DrawReversibleFrame(Select, this.BackColor, FrameStyle.Dashed);                    
                }
                Point endPoint = ((Control)sender).PointToScreen(new Point(e.X, e.Y));
                int width = endPoint.X - Start.X;
                int height = endPoint.Y - Start.Y;
                Select = new Rectangle(Start.X, Start.Y, width, height);
                ControlPaint.DrawReversibleFrame(Select, this.BackColor, FrameStyle.Dashed);
                delete_selection = false;            
            }
        }

        private void source_MouseDown(object sender, MouseEventArgs e)
        {                             
                selection = true;
                Control control = sender as Control;
                Start = control.PointToScreen(new Point(e.X, e.Y));                            
        }

        private void source_MouseUp(object sender, MouseEventArgs e)
        {
            if (selection == true)
                selection = false;                            
        }

this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); - Не помогает.
Прикреплю полное решение, если кому - то захочется помочь.

Это сообщение отредактировал(а) Dmitrii - 30.8.2010, 02:07

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Grid.rar 59,33 Kb
PM MAIL   Вверх
userdab
Дата 3.9.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 3.9.2010

Репутация: нет
Всего: нет



Посмотрите здесь BufferedGraphics , должно помочь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0376 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.