2017-02-21 5 views
0

Я добавил функцию масштабирования изображения в своем картинке. Я хотел бы отобразить масштаб изображения (как в левом нижнем углу карт). Как я могу это сделать?Способ отображения масштаба изображения в окне изображения

+0

Я думаю, что мы должны знать функции масштабирования для того, чтобы ответить на этот вопрос, потому что вы просите, чтобы отразить в пользовательском интерфейсе действий, совершенные на функциональности масштабирования, реализованной. – KernelMode

+0

Вы решили свои проблемы? – TaW

ответ

0

Вы можете использовать событие Paint, чтобы нарисовать масштаб сверху.

Предполагая, что масштаб является симметричным х- и у-направлении, это будет пример:

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    float zoom =100f * pictureBox1.ClientSize.Width/pictureBox1.Image.Width; 
    // this may or may not be necessary, depending on how to have implemented zooming! 
    if (pictureBox1.SizeMode == PictureBoxSizeMode.Normal) zoom = 100f; 

    string s = zoom.ToString("#.#")+ "%"; 
    StringFormat format = new StringFormat() 
     { LineAlignment = StringAlignment.Far, 
     Alignment = StringAlignment.Far }; 
    Rectangle bounds = pictureBox1.ClientRectangle; 
    Rectangle bounds1 = pictureBox1.ClientRectangle; 
    bounds1.Offset(1, 1); 

    using (Font font = new Font("Consolas", 14f)) 
    { 
     e.Graphics.DrawString(s, font, Brushes.White, bounds , format); 
     e.Graphics.DrawString(s, font, Brushes.Black, bounds1 , format); 
    } 
} 

Вы можете выбрать выравнивание вам по душе.

Обратите внимание, что я рисую строку дважды, один раз в белом и один раз в черном цвете, смещение на 1 пиксель, чтобы для любых слоев ..

Также обратите внимание на Image является oistrich; пейзаж является (немасштабированной BackgroundImage!

enter image description hereenter image description here

+0

Спасибо, это помогло. – Illuminati0x5B

Смежные вопросы