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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 23:07   #1
Strangers
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 64
По умолчанию Движение картинки мишкой.

Добрый вечер. Подскажите как реализовать движение картинки мышкой: есть картинка (picturebox) и нужно чтобы когда передвигаешь мышь, картинка соответственно передвигалась соответственно движению мыши.
C# Visual Studio 2010 Windows Forms.
Заранее спасибо.
Strangers вне форума Ответить с цитированием
Старый 08.11.2011, 08:58   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Ну вероятно как-то так. Правда здесь я имел ввиду, что мышью мы таскаем картинку.
Код:
    public partial class Form1 : Form
    {
        int x, y;
        public Form1()
        {
            InitializeComponent();
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            x = e.X;
            y = e.Y;
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left) return;
            pictureBox1.Left = pictureBox1.Left + (e.X - x);
            pictureBox1.Top = pictureBox1.Top  + (e.Y - y);
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            x = y = 0;
        }

    }

Последний раз редактировалось Баламут; 08.11.2011 в 09:32.
Баламут вне форума Ответить с цитированием
Старый 12.11.2011, 02:16   #3
Strangers
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 64
По умолчанию

Я сделал с помощью метода private void Form1_Paint(object sender, PaintEventArgs e) прорисовку изображение в новом месте с новыми координатами,но при этом изображение в месте со старыми координатами остается. Как сделать чтобы оно исчезало из старого места?
Strangers вне форума Ответить с цитированием
Старый 12.11.2011, 07:44   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Молодец! Поздравляю!
Баламут вне форума Ответить с цитированием
Старый 13.11.2011, 01:07   #5
Strangers
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 64
По умолчанию

Спасибо. Но как все же очищать старые изображения?))
Strangers вне форума Ответить с цитированием
Старый 13.11.2011, 13:00   #6
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию

Цитата:
Сообщение от Strangers Посмотреть сообщение
Спасибо. Но как все же очищать старые изображения?))
Во время перемещения ни пробовал pictureBox заливать цветом заднего фона?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 13.11.2011, 23:08   #7
Strangers
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 64
По умолчанию

Но я перемещаю не pictureBox,а саму картинку:
Объявляю Image img= Bitmap.FromFile(Application.Startup Path + @"\butterfly.png"); , а потом в событие движения мышки принудительно вызываю private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(img, _point);
}
Strangers вне форума Ответить с цитированием
Старый 14.11.2011, 12:33   #8
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию

Цитата:
Сообщение от Strangers Посмотреть сообщение
Но я перемещаю не pictureBox,а саму картинку:
Объявляю Image img= Bitmap.FromFile(Application.Startup Path + @"\butterfly.png"); , а потом в событие движения мышки принудительно вызываю private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(img, _point);
}
А кто-то разве говорил, что высказанное предложение было сделано на основе предположения о том, что ты передвигаешь PictureBox вместо Image?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 15.11.2011, 02:21   #9
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Ну тогда как-то так:

Код:
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(img, _point);
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            _point.X = MousePosition.X;
            _point.Y = MousePosition.Y;
            this.Invalidate();
        }
Про Doublebuffered надеюсь знаешь

Последний раз редактировалось Баламут; 15.11.2011 в 02:23.
Баламут вне форума Ответить с цитированием
Старый 17.11.2011, 01:26   #10
Strangers
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Ну тогда как-то так:

Код:
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(img, _point);
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            _point.X = MousePosition.X;
            _point.Y = MousePosition.Y;
            this.Invalidate();
        }
Про Doublebuffered надеюсь знаешь
О,спасибо Вам большое!! Помогло. Только вместо Invalidate использовал Refresh.Работает идеально. Еще раз спасибо!!
Strangers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непрерывное движение картинки chandrasecar JavaScript, Ajax 2 17.10.2011 15:00
движение картинки subbota HTML и CSS 3 14.09.2010 07:22
Плавное движение картинки KoBRaAndrey Общие вопросы Delphi 2 09.04.2010 11:42
Движение картинки по форме SaiLight Свободное общение 1 04.06.2009 04:28
Движение картинки &RiU Помощь студентам 2 28.05.2008 23:46