Visual C # - Рендеринг изображений из формы? - PullRequest
0 голосов
/ 28 марта 2012

У меня есть забавное приложение, написанное в Visual Studio (C #), и я задаюсь вопросом - что я делаю, так это рисую панели в формах определенным образом - если возможно визуализировать форму, не снимая скриншот?1001 *

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Если под «снятием скриншота» подразумевается «отправка PrtSc », то есть лучший способ, используя System.Drawing.Graphics.CopyFromScreen:

using(Bitmap b = new Bitmap(this.ClientSize.Width, this.ClientSize.Height)) {
    using(Graphics g = Graphics.FromImage(b)) {
        g.CopyFromScreen(this.PointToClient(Point.Empty), Point.Empty, this.ClientSize);
    }

    // Your form is now rendered into b.
}

Если вы хотите включить границу, просто используйте Size вместо ClientSize и this.Location вместо this.PointToClient(Point.Empty).

В качестве альтернативы вы можете использовать this.DrawToBitmap:

using(Bitmap b = new Bitmap(this.Width, this.Height)) {
    this.DrawToBitmap(b, new Rectangle(0, 0, this.Width, this.Height));

    // Your form is now rendered into b.
}

Это будет работать, даже если ваша форма не имеет фокуса. Однако он будет рисовать границу и будет рисовать ее в стиле Windows Basic, если Aero активен.

0 голосов
/ 28 марта 2012

Нет, невозможно изобразить визуальный вид формы как изображение, отличное от того, что предлагается какой-то библиотекой скриншотов (если это то, что вы спрашиваете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...