Строка пропадает с PictureBox
От: Аноним  
Дата: 19.12.05 16:58
Оценка:
На форме присутствует контрол PictureBox. На нем должна отображаться строка. Переопределяю событие Form_Paint следующия образом:

private void Form_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = PictureBoxCurrent.CreateGraphics();
g.DrawString(text,font,brush,point);
}

А надпись не отображается.
Запускаю работу в пошаговом режиме. После выполнении строки

g.DrawString(text,font,brush,point);

надпись на контроле PictureBox появляется, но как только выходи из обработчика Form_Paoint надпись таинственным образом пропадает с экрана.

Если изменять размеры формы, то видно, что отображаемая надпись мигает.

Может кто сталкивался с подобной ситуацией???

Если отображать надпись напрямую на форме, то указанных проблем не происходит.
Re: Строка пропадает с PictureBox
От: annaS  
Дата: 20.12.05 03:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>На форме присутствует контрол PictureBox. На нем должна отображаться строка. Переопределяю событие Form_Paint следующия образом:


А> private void Form_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

А> {
А> Graphics g = PictureBoxCurrent.CreateGraphics();
А> g.DrawString(text,font,brush,point);
А> }

А>А надпись не отображается.

А>Запускаю работу в пошаговом режиме. После выполнении строки

А> g.DrawString(text,font,brush,point);


А>надпись на контроле PictureBox появляется, но как только выходи из обработчика Form_Paoint надпись таинственным образом пропадает с экрана.


А>Если изменять размеры формы, то видно, что отображаемая надпись мигает.


А>Может кто сталкивался с подобной ситуацией???


А>Если отображать надпись напрямую на форме, то указанных проблем не происходит.



Нужно подвеситься на событие PictureBox Paint и в нём производить прорисовку.

    private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        e.Graphics.DrawString ("HELLO", Font, Brushes.BlueViolet, 20, 20);
    }
Строка пропадает с PictureBox
От: Аноним  
Дата: 19.12.05 17:18
Оценка:
Лучше переопределить OnPaint в PictureBox-е и рисовать там после отрисовки базовым классом.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Строка пропадает с PictureBox
От: Аноним  
Дата: 19.12.05 17:25
Оценка:
Graphics g = e.Graphics


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Строка пропадает с PictureBox
От: Аноним  
Дата: 19.12.05 19:11
Оценка:
>>Если отображать надпись напрямую на форме, то указанных проблем не происходит.

Либо подпишись на событие Paint самого PictureBox, либо следуй совету Lelikeks.

Offline сборники часто задаваемых вопросов [от 15 ноября]:
[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Всe[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236957.aspx]Windows Forms[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236955.aspx]Common[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236954.aspx]ASP.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236953.aspx]ADO.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236952.aspx]UG[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236951.aspx]WSS[/url]]
2 min @ 28.8 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Строка пропадает с PictureBox
От: Аноним  
Дата: 19.12.05 19:15
Оценка:
Вообще надпись пропадает из-за того, что когда в оконную процедуру PictureBox'a приходит сообщение WM_PAINT (рассылаемое самой Windows), он перерисовывает свое содержимое без учета той строки, что ты на нем нарисовал (он просто не знает об этом). А вот когда WM_PAINT приходит в форму (в частности, при изменении размеров), то, соответственно, и строка начинает перерисовываться.

>>Если изменять размеры формы, то видно, что отображаемая надпись мигает.


Небось двойную буферизацию не включил? (см. FAQ)

Offline сборники часто задаваемых вопросов [от 15 ноября]:
[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Всe[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236957.aspx]Windows Forms[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236955.aspx]Common[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236954.aspx]ASP.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236953.aspx]ADO.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236952.aspx]UG[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236951.aspx]WSS[/url]]
2 min @ 28.8 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Строка пропадает с PictureBox
От: Lentyaj  
Дата: 22.12.05 07:58
Оценка:
Подписка непосредственно контрола PictuteBox позволила решить возникшую проблему.
При этом надпись не мигала уже даже без включения двойной буферизации. Спасибо большое за ссылки на FAQ
взял для себя много ценного.
Запустил приложение из FAQ с отображением эллипса на форме — он не мигает даже с закомментированными строками,
где происходит включение описанных стилей.
Я так понял, что это зависит еще от производительности компьютера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.