Asyraf Patt Ответов: 3

C# winform: сохранить 2 панели как одно изображение


Как на самом деле сохранить 2 панели как одно изображение ? в настоящее время это мой код, но он показал ошибку : "не удается преобразовать из system.window.form.panel в system.drawing.image" .

Что я уже пробовал:

Bitmap bitmap = new Bitmap(cap_top.Width + cap_btm.Width, Math.Max(cap_top.Height, cap_btm.Height));
using (Graphics g = Graphics.FromImage(bitmap))
{
    g.DrawImage(cap_top, 0, 0);
    g.DrawImage(cap_btm, cap_top.Width, 0);

}

3 Ответов

Рейтинг:
5

Peter Vegter

Как насчёт Контроль.Метод DrawToBitmap (Растровое Изображение, Прямоугольник) (System.Окна.Формы)[^] ?

Bitmap bitmap = new Bitmap(cap_top.Width + cap_btm.Width, Math.Max(cap_top.Height, cap_btm.Height));
cap_top.DrawToBitmap(bitmap, new Rectangle(0, 0, cap_top.Width, cap_top.Height));
cap_btm.DrawToBitmap(bitmap, new Rectangle(cap_top.Width, 0, cap_btm.Width, cap_btm.Height));


Рейтинг:
2

Graeme_Grant

Эта ошибка вполне объяснима. Чтобы использовать аналогию:

Цитата:
Вы не можете поместить квадратный колышек в круглое отверстие.

Однако эта ссылка показывает вам, как это сделать с помощью одной панели: в C# рисование на панели, сохранить как растровое изображение - переполнение стека[^]

Чтобы сделать это с двумя панелями, нужно сначала нарисовать один растровый рисунок поверх другого, прежде чем сохранять.


Рейтинг:
0

Dave Kreskowiak

МММ...сообщение об ошибке совершенно ясно. Глядя на документацию для DrawImage, он действительно ожидает, что первым параметром будет изображение, а не элемент управления, что и есть панель.

Таким образом, элементы управления панели не могут быть использованы там. Как вы передаете какое-то изображение на панель управления? Если это растровые объекты, вы просто передаете их вызовам DrawImage, а не элементам управления панели.