Здравствуйте, KingT, Вы писали:
KT>создал простое MDI приложение в котором есть окно для рисования графики.Для окна написал простой обработчик сообщения WM_PAINT.
KT>Код C#
KT>protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
KT> {
KT> int boarder = 10;
KT> int Height = e.ClipRectangle.Height;
KT> int Width = e.ClipRectangle.Width;
KT> System.Console.Beep(4000,10);
KT> System.Drawing.Graphics gr = e.Graphics;
KT> Color color = Color.Red;
KT> Pen pen = new Pen(color);
KT> Rectangle rect = new Rectangle(boarder,boarder,Width-20,Height-20);
KT> gr.DrawRectangle(pen,rect);
KT> }
KT>этот код просто рисует рамку в форме.Проблема в том что когда я начинаю менять размер окна то рамка не прорисовывается с учетом нового размера окна.Хотя сообщение WM_PAINT пирходит так как идет звуковой сигнал.Но если растянутое окно минимизировать а затем поднять то все прорисовывается.В чем проблема.Единственное что приходит на ум так то что при ресайзе
KT>int Height = e.ClipRectangle.Height;
KT>int Width = e.ClipRectangle.Width;
KT>не получают новые размеры окна.А при минимайзе получают.
KT>Как исправить?
Строго говоря, ClipRectangle содержит минимальный прямоугольник, охватывающий инвалидную область окна, которую и нужно перерисовать. ИМХО, лучше сразу брать ClientRectangle.
А для исправления добавь обработчик:
private void Form1_Resize(object sender, EventArgs e)
{
Invalidate();
}
Тогда добавляется сообщение WM_ERASEBKGND.
Сообщение заговорено потомственным колдуном, целителем и магом в девятом поколении!
Модерирование или минусование сообщения ведет к половому бессилию, венерическим заболеваниям, венцу безбрачия и диарее!