Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > pictureBox, сохранение текущего состояния


Автор: kolhozniypunk 4.7.2011, 18:32
Всех приветствую.
Уже которую неделю не могу разобраться, изучаю графику C#. Работаю в VS 2003.
Задача проста, как грабли, просто нарисовать линии, использую PictureBox, нарисовать одну линию получается, но я не могу понять, как сохранить текущее состояние, вот код:
Код

System.Drawing.Drawing2D.GraphicsState gs;
Point currentPoint;
Point beginPoint;
bool drawLine;
System.Drawing.Pen curPen = new Pen(Brushes.Aqua);
Graphics g;
public Form1()
{
    InitializeComponent();
    g = Graphics.FromHwnd(pictureBox1.Handle);
    gs = g.Save();
}
private void pictureBox1_Click(object sender, System.EventArgs e)
{
    if(drawLine == true) 
    {
        drawLine = false;
        gs = g.Save();
    } 
    else 
    {
        drawLine = true;
        beginPoint = currentPoint;
    }
}
private void putPixel(int x, int y) 
{
    g.Clear(Color.Transparent);
    g.Restore(gs);
    g.DrawLine(curPen,beginPoint,new Point(x,y));
}

private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
    currentPoint = new Point(e.X,e.Y);
    if(drawLine == true) 
    {
        putPixel(e.X,e.Y);
    }
}

Рисую первую линию - рисуется, когда опять кликаю мышью - предыдущая линия пропадает...

Автор: cream 7.7.2011, 14:50
Строки 28, 29 ?

Автор: kolhozniypunk 7.7.2011, 14:52
Цитата(cream @  7.7.2011,  14:50 Найти цитируемый пост)
Строки 28, 29 ?


Что в них не так? Если я правильно понимаю жизнь:

Код

    g.Clear(Color.Transparent);

Очищает PictureBox - это смутило?
Код

    g.Restore(gs);

Восстанавливает изображение, которое было

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)