В настоящее время у меня есть одно записываемое растровое изображение и холст с рисунками, и я хочу отправить изображения одноранговому узлу. Чтобы уменьшить пропускную способность, я хотел бы преобразовать холст в записываемое растровое изображение, поэтому я могу преобразовать оба изображения в новое записываемое растровое изображение. Проблема в том, что я не могу найти хороший способ конвертировать холст. Поэтому я хотел бы спросить, есть ли прямой способ преобразовать холст в класс writeablebitmap.
Самый быстрый способ преобразовать холст в записываемый битмап в WPF?
comment
Я использую С# с WPF.
- person Adam Aiken   schedule 17.04.2013
Ответы (1)
Это взято из этот пост в блоге, но вместо записи в файл он записывает в WriteableBitmap.
public WriteableBitmap SaveAsWriteableBitmap(Canvas surface)
{
if (surface == null) return null;
// Save current canvas transform
Transform transform = surface.LayoutTransform;
// reset current transform (in case it is scaled or rotated)
surface.LayoutTransform = null;
// Get the size of canvas
Size size = new Size(surface.ActualWidth, surface.ActualHeight);
// Measure and arrange the surface
// VERY IMPORTANT
surface.Measure(size);
surface.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Pbgra32);
renderBitmap.Render(surface);
//Restore previously saved layout
surface.LayoutTransform = transform;
//create and return a new WriteableBitmap using the RenderTargetBitmap
return new WriteableBitmap(renderBitmap);
}
person
keyboardP
schedule
17.04.2013