none
Как стереть все рисунки GDI+? RRS feed

  • Вопрос

  • Как стереть все рисунки GDI+?

    Мне говорили это делает метод OnPaint, как его применить чтобы одной кнопкой я мог стернуть все нарисованные рисунки на панели?

    Я знаю как, но есть ли конкретный такой метод?


    Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.

Ответы

  • OnPaint, а точнее Paint происходит при перерисовке элемента управления или окна.

    Если вы рисуете НЕ в Событии Paint или НЕ переопределенном OnPaint, то после перерисовки элемента управления все сотрется. Что бы стереть такие объекты самостоятельно нужно вызвать Clear для объекта Graphics.

    Переделанный пример из вашего раннего вопроса:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                Point point1 = new Point(-1, -1);
                Graphics G = Graphics.FromHwnd(this.Handle);
                Pen P = new Pen(Color.Black, 10);
                Point point2 = new Point(e.X, e.Y);
                G.DrawLine(P, point1, point2);
                point1 = point2;
                SolidBrush S = new SolidBrush(Color.Black);
                G.FillEllipse(S, point2.X - 5, point2.Y - 5, 10, 10);
            }
    
            private void Form1_Click(object sender, EventArgs e)
            {
                Graphics G = this.CreateGraphics();
                G.Clear(this.BackColor);
                
            }
        }
    }

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа Doctor Gordon 19 мая 2012 г. 13:16
    Отвечающий

Все ответы

  • Посмотрите вот на это, может подобное нужно.
    Модератор
  • OnPaint, а точнее Paint происходит при перерисовке элемента управления или окна.

    Если вы рисуете НЕ в Событии Paint или НЕ переопределенном OnPaint, то после перерисовки элемента управления все сотрется. Что бы стереть такие объекты самостоятельно нужно вызвать Clear для объекта Graphics.

    Переделанный пример из вашего раннего вопроса:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                Point point1 = new Point(-1, -1);
                Graphics G = Graphics.FromHwnd(this.Handle);
                Pen P = new Pen(Color.Black, 10);
                Point point2 = new Point(e.X, e.Y);
                G.DrawLine(P, point1, point2);
                point1 = point2;
                SolidBrush S = new SolidBrush(Color.Black);
                G.FillEllipse(S, point2.X - 5, point2.Y - 5, 10, 10);
            }
    
            private void Form1_Click(object sender, EventArgs e)
            {
                Graphics G = this.CreateGraphics();
                G.Clear(this.BackColor);
                
            }
        }
    }

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа Doctor Gordon 19 мая 2012 г. 13:16
    Отвечающий