panel1.DrawToBitmap не рисует линии из DrawLine

У меня есть панель, на которой я рисую линии, используя:

Point PreviousPoint = new Point (0,0);
Point NewPoint = new Point (10,10);
Pen MyPen = new Pen(Color.Black, 2);
Graphics MyGraphics = panel1.CreateGraphics();
MyGraphics.DrawLine(MyPen, PreviousPoint, NewPoint);

Это все отлично работает. Я, очевидно, меняю точки, чтобы нарисовать больше линий, но это не имеет значения для этого вопроса. Я хочу экспортировать эту панель в виде файла JPG. Я использую этот код:

Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, panel1.Width, panel1.Height));
bmp.Save("C:\\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

Это выводит пустой JPG. Фон моей панели серый, а фон jpg такой же серый, так что я знаю, что он фактически экспортирует панель. Кроме того, я добавил кнопку в панель, чтобы посмотреть, будет ли она сохранена, и она это сделала. Так что по какой-то причине JPG не сохраняет нарисованные линии.

1 ответ

Решение

Поэтому я сделал обходной путь, который решает основную проблему. Я сделал массив точек, которые я нарисовал, чтобы нарисовать линии, затем я сделал это:

        // make sure you actually drew something
        if (MyLines.Length > 0)
        {
            // instantiate the stuff you need
            Image img = new Bitmap(panel1.Width, panel1.Height);
            Graphics g = Graphics.FromImage(img);
            Pen pen = new Pen(Color.Black, 2);

            // draw every line (from every even index to the one after it)
            for (int i = 0; i < MyLines.Length; i++)
            {
                if (i % 2 == 0)
                {
                    g.DrawLine(pen, MyLines[i], MyLines[i + 1]);
                }
            }
            img.Save("C:\\panel.png", System.Drawing.Imaging.ImageFormat.Png);
        }
    }
Другие вопросы по тегам