zoukankan      html  css  js  c++  java
  • WPF Canvas转换为位图 (RenderTargetBitmap)

    使用 RenderTargetBitmap 的注意事项:

    1. 要渲染的Canvas元素要放在Border元素内,并且此Border元素不能设置边框宽度(BorderThickness),不然生成的位图会出现错误。

    2. Canvas的背景默认为null,需显式设置为白色

    3. 如果需要边框效果,可再加一层Border或其它元素。

    例:

    cs:

                RenderTargetBitmap bmp = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96, PixelFormats.Pbgra32);
                bmp.Render(canvas);
                //
                string file = @"D:xxx.jpg";
                string Extension = System.IO.Path.GetExtension(file).ToLower();
                BitmapEncoder encoder = new JpegBitmapEncoder();    //可设置其它格式的位图编码器
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                using (Stream stm = File.Create(file))
                {
                    encoder.Save(stm);
                }

    xaml:例1

            <Border BorderBrush="Black" BorderThickness="10" Width="300" Height="300" Grid.Row="1">
                <Border>
                    <Canvas x:Name="canvas" Background="White">
                        <Image Source="96x96-2.jpg" Canvas.Left="96" Canvas.Top="96"></Image>
                    </Canvas>            
                </Border>
            </Border>

     xaml:例2

            <Canvas x:Name="canvasBounds" Width="320" Height="320"  Grid.Row="1">
                <Canvas.Background>
                    <DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" Stretch="None" TileMode="Tile">
                        <DrawingBrush.Drawing>
                            <GeometryDrawing>
                                <GeometryDrawing.Geometry>
                                    <LineGeometry StartPoint="8,0" EndPoint="0,8"></LineGeometry>
                                </GeometryDrawing.Geometry>
                                <GeometryDrawing.Pen>
                                    <Pen Brush="Black"/>
                                </GeometryDrawing.Pen>
                            </GeometryDrawing>
                        </DrawingBrush.Drawing>
                    </DrawingBrush>
                </Canvas.Background>
                <Border Width="300" Height="300" Canvas.Left="10" Canvas.Top="10">
                    <Canvas x:Name="canvas" Background="White">
                        <Image Source="96x96-2.jpg" Canvas.Left="96" Canvas.Top="96"></Image>
                    </Canvas>            
                </Border>
            </Canvas>
  • 相关阅读:
    金蝶软件常用基础SQL数据表
    改变cxgrid行字体颜色
    C#默认修饰符
    const和static
    怎么写动态游标
    Report Machine支持导出PDF
    C1TrueDBGrid注册码
    免费在线思维导图工具Mindv V1.1.0发布
    支持中文输入的免费的Silverlight Richtextbox
    云计算浅谈之一:云计算介绍
  • 原文地址:https://www.cnblogs.com/gmcn/p/6691296.html
Copyright © 2011-2022 走看看