wpf呈现UIElment的缩略图

转自: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的内容、呈现的内容相对比较清晰。



猜你喜欢

转载自blog.csdn.net/nodeman/article/details/80831053