我也很想知道如何能够直接保存XAML元素为图像。
目前我这里的解决办法只能是通过局部打印,而打印到虚拟打印机(Snagit附带的图片打印机),继而输出图片。
以下方法首先弹出打印设置对话框,然后全幅打印出x:Key为B1的元素:
private void button1_Click(object sender, RoutedEventArgs e)
{
PrintDialog pDialog = new PrintDialog();
if ((bool)pDialog.ShowDialog().GetValueOrDefault())
{
B1.Height = pDialog.PrintableAreaHeight-4;
B1.Width = pDialog.PrintableAreaWidth-4;
pDialog.PrintVisual(B1, "Hello, world!");
}
}
private void SaveToImage(FrameworkElement ui, string fileName)
{
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Create);
RenderTargetBitmap bmp = new RenderTargetBitmap((int)ui.Width, (int)ui.Height, 96d, 96d, PixelFormats.Pbgra32);
bmp.Render(ui);
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(fs);
fs.Close();
}