Вывод в альтернативу Picture Box - PullRequest
3 голосов
/ 13 февраля 2011

Для проекта, над которым я работаю, таймер, похожий на секундомер, должен отображаться в форме.Если я правильно помню в VB, текст может быть выведен в графическое окно, но я не могу найти способ сделать это в C #.Метка будет работать, если есть способ предотвратить изменение размера окна.Благодарю.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

Метка, вероятно, будет самым простым вариантом. Я не уверен, почему вам нужно предотвратить изменение размера окна изображения (что также легко сделать).

Если вы беспокоитесь о том, что размер вашего Picturebox и размер вашего Label перестали центрироваться или неправильный размер, вы можете просто вставить код в событие resize, которое динамически обновляет размер и местоположение Label и его шрифта на основе на текущий размер картинки.

Тем не менее, если вы решили не использовать метки, вы всегда можете попросить свой графический ящик подписаться на событие Paint, а затем использовать e.Graphics, чтобы просто рисовать текст всякий раз, когда графический ящик перекрашивается.

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    using (Font myFont = new Font("Microsoft Sans Serif", 10))
    {
        e.Graphics.DrawString("This time is...Hammertime", myFont, Brushes.Black, new Point(0,0));
    }
}

Однако вам также придется перерисовывать это для каждой итерации вашего таймера.

Как я уже сказал, Label был бы лучшим вариантом, чем этот. Вызов e.Graphics не даст вам никакого реального преимущества над Label, но создаст для вас больше поводов для беспокойства.

1 голос
/ 13 февраля 2011

Использование TextBox, вероятно, является наиболее подходящим вариантом для этого; просто установите ReadOnly в true.

...