.NET 4.x Graphics & GraphicsState (восстановить состояние объекта) - C#

Узнай цену своей работы

Формулировка задачи:

private void Form1_MouseLeave(object sender, EventArgs e)
        {
            g.Restore(gs); //Восстанавливаю состояние, но не удачно
        }
 
        Graphics g = null;
        GraphicsState gs = null;
 
        private void Form1_MouseEnter(object sender, EventArgs e)
        {
            g = Graphics.FromHwnd(((PictureBox)sender).Handle);
            gs = Graphics.FromHwnd(((PictureBox)sender).Handle).Save(); //Сохраняю состояние
            g.FillRectangle(new SolidBrush(Color.FromArgb(50, 50, 50, 50)), new Rectangle(new Point(0, 0), new Size(((PictureBox)sender).Width, ((PictureBox)sender).Height))); //Рисую
        }
Всем привет. Есть выше представленный код. Он не работает как надо... На строке: g.Restore(gs), вылетает exception (NullReferenceException - ссылка на объект не указывает на экземпляр объекта). Делал по примеру с msdn... В чём ошибка? Что нужно исправить? Заранее спасибо.
Ну что, никто не сталкивался с такой проблемой? Подскажите пожалуйста.

Решение задачи: «.NET 4.x Graphics & GraphicsState (восстановить состояние объекта)»

textual
Листинг программы
        private void pictureBox1_MouseEnter ( object sender, EventArgs e ) {
            using ( var g = Graphics.FromHwnd( ( sender as PictureBox ).Handle ) ) {
                g.FillRectangle(
                    new SolidBrush( Color.FromArgb( 50, 50, 50, 50 ) ),
                    new Rectangle(
                        new Point( 0, 0 ),
                        new Size( this.Width, this.Height  ) 
                    ) 
                );
            }
        }
 
        private void pictureBox1_MouseLeave ( object sender, EventArgs e ) {
            ( sender as PictureBox ).Invalidate();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы