Фиксированное положение элемента на форме

192
23 мая 2022, 02:20

Есть форма, которая представляет собой карту мира, в левом нижнем углу есть groupbox с информацией о странах. Есть функция масштабирования, при которой появляются полосы прокрутки. Проблема в том, что при прокрутке перемещается и сам groupbox. Получается, что если прокрутить изображение вниз, то groupbox уедет наверх. Как можно его закрепить, чтобы он всегда оставался в одном положении?

GroupBox создаю в конструкторе, не динамически. И полосы прокрутки появляются благодаря свойству AutoScroll элемента Panel. Сам gropubox расположен на picturebox, который в свою очередь расположен на panel.

Часть, где происходит масштабирование:

public partial class Form1 : Form
{
   // public static Bitmap myBitmap = new Bitmap("img\\BigMap.png");
    public static Bitmap myBitmap = new Bitmap("img\\BigMap.png");
    public static Bitmap myBitmapScale1 = new Bitmap("img\\BigMap.png");
    public static Bitmap myBitmapScale2 = new Bitmap("img\\BigMapScale2.png");
    public Graphics pctMap;
    public bool CheckClick = false;
    public Form1()
    {
        InitializeComponent();
        AutoSize = true;
        //pctMap = this.pictureBox1.CreateGraphics();
        pictureBox1.Size = ClientSize;
        //pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
        panel2.AutoScroll = true;
        pictureBox1.MouseWheel += pictureBox1_MouseWheel;        
    }
    //Масштабирование
    double scale = 1.0;
    
    private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
    {
        if (e.Delta > 0) //scroll
        {
            if (scale < 2)
            {
                scale += 1;
                if (scale == 2)
                {
                    myBitmap = myBitmapScale2;
                    pictureBox1.Width = myBitmap.Width;
                    pictureBox1.Height = myBitmap.Height;
                    pictureBox1.Refresh();
                }
            }               
        }
        else if (e.Delta < 0)//unscroll
        {
            if (scale > 1)
            {
                scale -= 1;
                if (scale == 1)
                {
                    myBitmap = myBitmapScale1;
                    pictureBox1.Size = ClientSize;
                   
                    panel2.Width = 1920;
                    panel2.Height = 1022;
                    pictureBox1.Refresh();
                }
            }                  
        }
    }
READ ALSO
Telegram API CallBack + IIS

Telegram API CallBack + IIS

UPD2 Установив на сервер tshark, поймал ошибку такую

162
Проблема с определением &lt;Сколько пикселей до левого края страницы или верха&gt;

Проблема с определением <Сколько пикселей до левого края страницы или верха>

Знаю, есть getBoundingClientRectЭта штука даёт возможность определить расстояние до краёв на странице, относительно опорного тега

184
Как узнать кто вызвал функцию

Как узнать кто вызвал функцию

Хочу узнать из функции которую вызвали, кто именно её вызвал, и чтобы можно было обращаться к этой функции и к её prototype

160