首页 > 编程语言 >c# svg转Bitmap Bitmap转ImageSource

c# svg转Bitmap Bitmap转ImageSource

时间:2024-08-08 22:16:26浏览次数:13  
标签:c# svg bitmap Bitmap static hBitmap SvgDocument ImageSource

需要安装nuget包【svg】

public class SVGHelper
    {
        public static ImageSource ConvertSvgToDrawingImage(string path)
        {
            var svgContent = File.ReadAllText(path);
            // 使用SvgDocument解析SVG内容
            SvgDocument svgDocument = SvgDocument.FromSvg<SvgDocument>(svgContent);

            // 将SvgDocument转换为Drawing对象
            System.Drawing.Bitmap bitmap = svgDocument.Draw();
            var imageSource = ToImageSource(bitmap);
            return imageSource;
        }

        [DllImport("gdi32.dll", SetLastError = true)]
        private static extern bool DeleteObject(IntPtr hObject);
        public static ImageSource ToImageSource( Bitmap bitmap)
        {
            IntPtr hBitmap = bitmap.GetHbitmap();
            ImageSource wpfBitmap = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
            // 记得要进行内存释放。否则会有内存不足的报错。
            if (!DeleteObject(hBitmap))
            {
                throw new Win32Exception();
            }
            return wpfBitmap;
        }
    }

标签:c#,svg,bitmap,Bitmap,static,hBitmap,SvgDocument,ImageSource
From: https://www.cnblogs.com/ives/p/18349860

相关文章

  • ftrace的trace_options
    ftrace中的trace_options选项用于控制追踪数据的收集和显示方式。你可以通过/sys/kernel/debug/tracing/trace_options文件来设置这些选项。每个选项代表了不同的追踪行为或输出格式。以下是一些常见的trace_options选项及其含义:overwrite:含义:当启用此选项时,如果缓冲......
  • SVG之path详解(一),全面解析椭圆弧命令A
    简述SVG中的<path>元素用于创建路径,它是SVG中最强大和最灵活的基本形状之一使用<path>元素可以绘制直线、曲线、弧线等各种复杂的图形,并且可以通过设置路径命令来控制路径的形状和样式在进入正题前,先温习一下svg的坐标系,x轴为水平向右,y轴为垂直向下基本语法<path......
  • C++ Rect And Point Search Algorithm
    测试 ////Createdbywwwon2024/8/8.//#include"include/cxstructs.h"#include"include/cxml/k-NN.h"//可扩展Rect内搜索子Rect或PointvoidtestRectSearch(){usingnamespacecxstructs;std::random_devicerd;std::mt19937gen(rd()......
  • CMake基础教程二
    常用 环境变量SET(ENV{VAR}VALUE)**常用变量:**|变量名|含义||-----------------------------|-----------------------------------------------------------------......
  • Linux 【关于 /proc目录详解】
    proc目录:ProcessInformationPseudo-filesystem:进程信息伪文件系统/proc目录并不包含实际的文件,而是提供了一个动态的视图,用于显示系统和进程相关的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。其目的:用于管理和监控系统状态和进程信息/proc文件本身的大小显示......
  • 代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形
    代码随想录算法刷题训练营day49:LeetCode(42)接雨水、LeetCode(84)柱状图中最大的矩形LeetCode(42)接雨水题目代码importjava.util.Stack;classSolution{publicinttrap(int[]height){//用单调栈进行操作intsum=0;Stack<Integ......
  • 【(一)CAM350之下载安装】
    CAM350下载及安装一、下载地址链接:https://pan.baidu.com/s/1fwdFsLqhXYJRj5qHcPdP2w提取码:hljd二、安装步骤1.下载解压后只有一个【CAM350-9.5.1】文件夹,如下图2.点击进入【CAM350-9.5.1】文件夹,文件中包含内容如下图3.双击进入[CAM350汉化.exe]应用程序,如下图......
  • C语言学习
    学习内容一维数组,二维数组创建,初始化,数组名代码笔记#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>//一维数组//数组的创建//数组:相同元素类型的集合//数组的创建方式//typt_t  arr_name [const_n];//元素类型       常量表达式,用来指......
  • C语言--函数
    函数的概述:函数:实现一定功能的,独立的代码模块。函数一定是先定义,后使用使用函数的优势:·我们可以通过函数提供功能给别人使用,也可以使用别人提供的函数,减少代码量               ·借助函数可以减少重复的代码               ·实现结构化(......
  • 深中通道元宇宙启航!3DCAT实时云渲染助力沉浸式体验深中通道
    2024年6月30日上午,深圳至中山跨江通道(以下简称“深中通道”)开通活动在深中通道西人工岛举行。10时50分许,深中通道正式开通。下午3时已通车试运营。粤港澳大湾区超级工程深中通道(图源新华网)01 幻海云桥:沉浸式体验的新纪元就在开通的同一天,中山日报社与3DCAT、广东涌态信息等......