none
Как перемещать картинку в PictureBox с помощью нажатой клавиши мышки? RRS feed

  • Вопрос

  • Есть картинка, по размеру превосходящая pictureBox - как реализовать движение картинки для полного просмотра, например, при перемещинии мышки с нажатой левой клавишей ? Спасибо!
    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:35 MSDN Forums Consolidation (От:Visual C#)
    25 марта 2010 г. 5:48

Ответы

  • Поправка: По данной ссылке, что я тогда запостил не подумав, а теперь вы, содержится неправда, которая вводит в заблуждение:). Верней там написана правда. Для изображения в PictureBox действительно нет свойства Location и по этому вроде бы его двигать нельзя, но не сказано об обходном пути.  Изображение в Picture Box можно двигать - нужно обработать события Paint, MouseDown, MouseMove для PictureBox. Вот код:

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                img = Bitmap.FromFile("pic.jpg");
            }
    
            private Image img;
            int lx = 0, ly = 0;
            int cx = 0, cy = 0;
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawImageUnscaled(img, cx, cy);
            }
    
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                lx = e.X;
                ly = e.Y;
            }
    
            private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (pictureBox1.Capture)
                {
                    int dx = e.X - lx;
                    int dy = e.Y - ly;
                    cx += dx;
                    cy += dy;
                    lx = e.X;
                    ly = e.Y;
                    pictureBox1.Invalidate();
                }
            }
        }
    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:05
    25 марта 2010 г. 7:38

Все ответы

  • Добрый день. Посмотрите следующий топик:Move an image within a picture box in C#

    Также  следующий пример , единственное сделайте мув на мышь.


    Для связи [Mail]
    25 марта 2010 г. 7:27
  • Поправка: По данной ссылке, что я тогда запостил не подумав, а теперь вы, содержится неправда, которая вводит в заблуждение:). Верней там написана правда. Для изображения в PictureBox действительно нет свойства Location и по этому вроде бы его двигать нельзя, но не сказано об обходном пути.  Изображение в Picture Box можно двигать - нужно обработать события Paint, MouseDown, MouseMove для PictureBox. Вот код:

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                img = Bitmap.FromFile("pic.jpg");
            }
    
            private Image img;
            int lx = 0, ly = 0;
            int cx = 0, cy = 0;
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawImageUnscaled(img, cx, cy);
            }
    
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                lx = e.X;
                ly = e.Y;
            }
    
            private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (pictureBox1.Capture)
                {
                    int dx = e.X - lx;
                    int dy = e.Y - ly;
                    cx += dx;
                    cy += dy;
                    lx = e.X;
                    ly = e.Y;
                    pictureBox1.Invalidate();
                }
            }
        }
    • Помечено в качестве ответа I.Vorontsov 25 марта 2010 г. 8:05
    25 марта 2010 г. 7:38