转自:http://www.cnblogs.com/sunhappy0318/archive/2012/05/15/SLT_UIElement.html
在msdn上面介绍两种方法:
1、使用RenderTargetBitmap
2、使用VisualBrush
使用第一种方式是,首先按UIElement的原始尺寸转换成位图,放到Image控件里面,通过缩放矩阵编写你想要的缩略图,代码:
RenderTargetBitmap tRenderTargetBitmap = new RenderTargetBitmap((int)tPageNode.Width, (int)tPageNode.Height, 1 / 96, 1 / 96, PixelFormats.Default);tRenderTargetBitmap.Render(tPageNode);
Image tImage = new Image();
tImage.Source = tRenderTargetBitmap;
tImage.Width = tPageNode.Width / 8;
tImage.Height = tPageNode.Height / 8;
double tWidthX = 100 / tPageNode.Width;
double tHeightX = 75 / tPageNode.Height;
ScaleTransform tScaleTransform = new ScaleTransform();
tScaleTransform.ScaleX = tWidthX;
tScaleTransform.ScaleY = tHeightX;
tImage.RenderTransform = tScaleTransform;
使用第二种方法:直接把UIElement赋值给VisualBrush,通过Rectangle呈现,设置Rectangle的大小,代码:
VisualBrush myVisualBrush = new VisualBrush();myVisualBrush.Visual = tPageNode;
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 100;
myRectangle.Height = 100;
myRectangle.Stroke = Brushes.Black;
myRectangle.Margin = new Thickness(5, 0, 5, 0);
myRectangle.Fill = myVisualBrush;
tPageCanvas.Children.Add(myRectangle);
第二种方法比第一种方法表现优势在于:可以实时刷新UIElement的内容、呈现的内容相对比较清晰。