Как получить панель Windows Forms в виде растрового изображения с C #? - PullRequest
2 голосов
/ 06 июля 2010

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

Я не смотрю на снимок экрана, потому что панель находится в пределах прокручиваемого элемента управления (элементы управления DevX), поэтому иногда она может быть не полностью видна, и мне нужен ее визуальныйпредставление, видимое или нет.

Возможно ли это вообще?

Редактировать:

Ну, теперь кажется, что это было так, как я боялся.Предлагаемое решение с DrawToBitmap () рисует только ту часть элемента управления, которая является видимой.Я использовал DisplayRectangle, чтобы получить размер полного элемента управления.Прямоугольник в порядке, и теперь растровое изображение - это размер полного элемента управления, но часть НЕИЗВЕСТНОГО элемента управления является ПРОЗРАЧНОЙ на растровом изображении, не отображая элементы управления, которые находятся в невидимой части элемента управления.

Есть ли шанс, что это будет выполнено полностью?

1 Ответ

8 голосов
/ 06 июля 2010

Конечно, просто используйте метод DrawToBitmap () панели. Он не надежен на 100%, на панели могут быть элементы управления, которые его не поддерживают. Как RichTextBox, WebBrowser или какой-либо другой элемент управления ActiveX.

    private static Image PanelToBitmap(Control pnl) {
        var bmp = new Bitmap(pnl.Width, pnl.Height);
        pnl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
        return bmp;
    }
...