这里我有XAML的代码,我想要保存为图像使用windows窗体保存文件dailog和上传图像到墨水画布。
<StackPanel Margin="0,4,45,0" DockPanel.Dock="Right" Width="580">
<Border BorderBrush="Red" BorderThickness="5">
<InkCanvas Name="InkCanvas1" Height="200">
<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes Width="20" Height="20" Color="Red" ></DrawingAttributes>
</InkCanvas.DefaultDrawingAttributes>
</InkCanvas>
</Border>
</StackPanel>
如何保存特定区域的画布,并上传图像到油墨画布。请帮帮我。
发布于 2013-11-21 07:25:02
您必须将您的InkCanvas转换为位图。下面的代码是快速n脏的。
<Window x:Class="InkCanvas.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<InkCanvas Name="yourinkcanvas">
<Image Source="http://blogs.msdn.com/blogfiles/expression/WindowsLiveWriter/ASmallInkCanvasSample_10388/inkcanvasExample_a6d9403d-4bca-40bb-93ad-6364d537f2c6.png"/>
</InkCanvas>
<Button Content="SAVE" Height="20" VerticalAlignment="Bottom" Click="Button_Click"/>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "savedimage"; // Default file name
dlg.DefaultExt = ".jpg"; // Default file extension
dlg.Filter = "Image (.jpg)|*.jpg"; // Filter files by extension
// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process save file dialog box results
if (result == true)
{
// Save document
string filename = dlg.FileName;
//get the dimensions of the ink control
int margin = (int)this.yourinkcanvas.Margin.Left;
int width = (int)this.yourinkcanvas.ActualWidth - margin;
int height = (int)this.yourinkcanvas.ActualHeight - margin;
//render ink to bitmap
RenderTargetBitmap rtb =
new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Default);
rtb.Render(yourinkcanvas);
using (FileStream fs = new FileStream(filename, FileMode.Create))
{
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(fs);
}
}
}
要保存特定区域,请使用“边距”、“宽度”和“高度”。
https://stackoverflow.com/questions/20124448
复制相似问题