我想生成一些动态的图像。为此,我打算创建一个XAML视图,使用Data(使用DataBinding)填充它,然后从该视图的呈现(类型截图)中生成一个图像。从XAML生成图像查看
有没有办法在Silverligth或WPF中做到这一点?
我想生成一些动态的图像。为此,我打算创建一个XAML视图,使用Data(使用DataBinding)填充它,然后从该视图的呈现(类型截图)中生成一个图像。从XAML生成图像查看
有没有办法在Silverligth或WPF中做到这一点?
在WPF:
public static Image GetImage(Visual target)
{
if (target == null)
{
return null; // No visual - no image.
}
var bounds = VisualTreeHelper.GetDescendantBounds(target);
var bitmapHeight = 0;
var bitmapWidth = 0;
if (bounds != Rect.Empty)
{
bitmapHeight = (int)(Math.Floor(bounds.Height) + 1);
bitmapWidth = (int)(Math.Floor(bounds.Width) + 1);
}
const double dpi = 96.0;
var renderBitmap =
new RenderTargetBitmap(bitmapWidth, bitmapHeight, dpi, dpi, PixelFormats.Pbgra32);
var visual = new DrawingVisual();
using (var context = visual.RenderOpen())
{
var brush = new VisualBrush(target);
context.DrawRectangle(brush, null, new Rect(new Point(), bounds.Size));
}
renderBitmap.Render(visual);
return new Image
{
Source = renderBitmap,
Width = bitmapWidth,
Height = bitmapHeight
};
}
在Silverlight中使用WriteableBitmap及其Render函数。
您可以添加控件(数据后,他们是数据绑定),您希望捕捉到视框 - http://www.wpftutorial.net/ViewBox.html
从那里,你可以创建一个图像使用WriteableBitmap的 - http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap%28VS.95%29.aspx
ÿ你在混合使用Silverlight和WPF! – 2011-03-31 19:38:16
你打败了我,我试图找到一个使用'VisualBrush'的好例子 – Rachel 2011-03-31 19:49:17