2013-12-16 6 views
1

У меня проблема с сохранением холста в BMP-файле (или любом другом типе).InkCanvas to BitMap

Я пытаюсь сохранить свои InkCanvas так:

int margin = (int)canvas.Margin.Left; 
int width = (int)canvas.ActualWidth -margin; 
int height = (int)canvas.ActualHeight -margin; 
//render ink to bitmap 
RenderTargetBitmap renderBitmap = 
new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Default); 
renderBitmap.Render(canvas); 
//save the ink to a memory stream 
BitmapEncoder encoder; 
encoder = new BmpBitmapEncoder(); 
encoder.Frames.Add(BitmapFrame.Create(renderBitmap)); 
encoder.Save(myStream); 

Но я всегда получал изображение с черными границами слева и верхним, одинакового размера от точки (0,0) из моего окна в мой холст. Что я делаю неправильно? enter image description here enter image description here

ответ

0

Вы должны поместить его в отдельный контейнер (т.е. в Grid_.

0

У меня была аналогичная проблема, и она выглядит, как ваши поля влияют на визуализацию изображения.

Я полагаю, canvas - это имя InkCanvas, поэтому, чтобы избежать черных границ - все, что вам нужно сделать, это изменить ваши рамки WPF и использовать холст, чтобы настроить поля, а не использовать InkCanvas:

<Grid Height="340" Width="445"> 
    <Canvas Background="Transparent" Margin="10,10,0,0"> 
     <InkCanvas Name="canvas" Height="320" Width="425"/> 
    </Canvas> 
</Grid>