真的小白啊 2021-09-06 15:13 采纳率: 66.7%
浏览 70
已结题

请问怎么保存WPF里Path.Data的图形到png文件?

Path.Data里是GeometryGroup包裹的PathGeometry,有办法把这个图案保存到文件吗?

  • 写回答

1条回答 默认 最新

  • Jack J Jun 2021-09-08 14:55
    关注

    你可以参照下面的代码来使用DrawingContext.DrawGeometry方法来保存你的GeometryGroup到图片文件。
    Xaml:

    <Grid x:Name="myGrid">
            
            <Path x:Name="myPath" Stroke="Black" StrokeThickness="1" StrokeLineJoin="Round" StrokeMiterLimit="1" Width="64" Height="64" Fill="Yellow" VerticalAlignment="Top" HorizontalAlignment="Left" ClipToBounds="True">
                <Path.Data>
                    <GeometryGroup x:Name="group" >
                        <EllipseGeometry x:Name="e1" Center="32,32" RadiusX="32" RadiusY="32"/>
                        <PathGeometry x:Name="g1" Figures="M 32,32 L 32,16 M 32,32 L 16,32 M 32,32 L 16,16 Z"/>
                    </GeometryGroup>
                </Path.Data>
            </Path>
            <Button x:Name="btngetimage"  Content="GetImage" Width="100" Height="30" Click="btngetimage_Click" HorizontalAlignment="Center"></Button>
    
            
        </Grid>
    
    

    后台的代码:

    private void btngetimage_Click(object sender, RoutedEventArgs e)
            {
                RenderTargetBitmap bmp = new RenderTargetBitmap(500, 500, 96, 96, PixelFormats.Default);
                DrawingVisual viz = new DrawingVisual();
                using (DrawingContext dc = viz.RenderOpen()) 
                {
                    dc.DrawGeometry(myPath.Fill, new Pen(myPath.Stroke, myPath.StrokeThickness), group);
                }
                bmp.Render(viz);
                PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
                pngEncoder.Frames.Add(BitmapFrame.Create(bmp));
                using (FileStream file = new FileStream("test.png", FileMode.Create))
                    pngEncoder.Save(file);
            }
    
    

    最终的效果图:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 修改了问题 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染