powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Panel. Прокрутка
1 сообщений из 1, страница 1 из 1
Panel. Прокрутка
    #40132042
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть форма. Там panel1 и panel2. В каждом размещается соответственно pictureBox1 и pictureBox2. Отображаются одинаковые изображения, но у второго размер больше на n раз.

Работать должно следующим образом. Когда на panel1 кликаю:
- где то не на край, то на panel2 прокрутки перемещаются так, что соответствующий пиксель pictureBox2 отображается в центре
- в самом левом верхнем углу, то на panel2 прокрутки перемещаются так, что отображается самый левый верхний угол pictureBox2
- в самом левом нижнем углу, то на panel2 прокрутки перемещаются так, что отображается самый левый нижний угол pictureBox2
- в самом правом верхнем углу, то на panel2 прокрутки перемещаются так, что отображается самый правый верхний угол pictureBox2
- в самом правом нижнем углу, то на panel2 прокрутки перемещаются так, что отображается самый правый нижний угол pictureBox2

Написал код.
C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Panel
{
    public partial class Form1 : Form
    {
        PictureBox pictureBox1;
        PictureBox pictureBox2;

        int SizeOfPixcel = 10; //Во сколько раз увеличиваем изображение по ширине и по высоте

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Image image = Image.FromFile("C:\\Users\\Acer\\Desktop\\image1.png");

            pictureBox1 = new PictureBox();
            pictureBox1.Name = "pictureBox1";
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox1.Image = image;

            panel1.AutoScroll = true;
            panel1.Controls.Add(pictureBox1);            

            pictureBox2 = new PictureBox();
            pictureBox2.Name = "pictureBox2";
            pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox2.Image = image;
            pictureBox2.Width = image.Width * SizeOfPixcel;
            pictureBox2.Height = image.Height * SizeOfPixcel;

            panel2.AutoScroll = true;
            panel2.Controls.Add(pictureBox2);

            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {            
            //panel2.HorizontalScroll.Value = e.X * SizeOfPixcel;
            //panel2.VerticalScroll.Value = e.Y * SizeOfPixcel;

            panel2.AutoScrollPosition = new Point((int) (e.X * SizeOfPixcel * panel2.HorizontalScroll.Maximum / pictureBox2.Width),
                                                   (int) (e.Y * SizeOfPixcel * panel2.VerticalScroll.Maximum / pictureBox2.Height));
        }
    }
}

Но работает не совсем так, как надо.

Скажите, как правильно написать?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Panel. Прокрутка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (6), Yandex Bot 1 мин., Bing Bot 7 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]