轻松绘制图像图形!且看Aspose新产品GDI +图形处理API-Aspose.Drawing如何操作!

在工作中,可能会遇到各种绘图应用程序(例如MS Paint),它们允许绘制图形并生成图像。但是,如果要创建自己的绘图实用程序或在Web或桌面应用程序中集成绘图功能该怎么办?

对于此类情况,Aspose提供了.NET图形API作为.NET的Aspose.Drawing,这是用于创建与GDI +相同的图像和绘图的轻量级解决方案。

无需依赖本机代码和库,Aspose.Drawing for .NET允许绘制各种图形对象,例如直线,圆弧,矩形,多边形,椭圆形等,以及使用钢笔和画笔使用C#或VB.NET创建2D图形创建2D图形。(点击下载)

总体特性

Aspose.Drawing for .NET的概述

支持的文件格式

Aspose.Drawing for .NET支持以下图像格式

平台独立性

Aspose.Drawing for .NET支持任何从2.0开始的.NET框架

Aspose.Drawing API的高级功能

  • 从头开始创建位图或加载现有文件
  • 处理和绘制图形路径
  • 使用实体和纹理笔刷
  • 使用仿射变换
  • 绘制直线,曲线,样条曲线和圆弧
  • 渲染具有不同字体和样式的文本
  • 支持Alpha混合和抗锯齿线条和形状
  • 绘制矩形,多边形,月食等形状
  • 使用不同的笔宽度和样式
  • 处理片段区域

使用C#从头开始创建图像

以下是使用Aspose.Drawing for .NET创建图像的步骤。

  • 创建一个Bitmap类的实例。
  • 创建Graphics类的实例,并使用Bitmap的实例对其进行初始化。
  • 定义一个新的Pen对象并设置其属性。
  • 使用Graphics.DrawArc(Pen,Single,Single,Single,Single,Single,Single)方法绘制圆弧。
  • 使用Graphics.DrawEllipse(Pen,Single,Single,Single,Single)方法绘制椭圆。
  • 使用Bitmap.Save(string)方法将图形保存为所需的图像格式。

下面的代码示例演示如何使用C#从头开始创建图像。

// Create Bitmap object
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// Create and initialize Graphics
Graphics graphics = Graphics.FromImage(bitmap);            
// Create Pen
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
// Draw arc
graphics.DrawArc(pen, 0, 0, 700, 700, 0, 180);
// Create another Pen
Pen pen1 = new Pen(Color.FromKnownColor(KnownColor.Red), 2);
// Draw ellipse
graphics.DrawEllipse(pen1, 10, 10, 900, 700);
// Save the drawing into desired image format
bitmap.Save(@"drawing.png");

使用C#在现有图像上绘制图形

以下是执行此操作的步骤。

  • 创建Bitmap类的实例,并使用图像的路径对其进行初始化。
  • 以与上一个示例相同的方式绘制所需的图形,例如线,多边形等。
  • 使用Bitmap.Save(string)方法保存更新的图像。

下面的代码示例演示如何使用C#在现有图像上绘制图形。

// Initialize Bitmap with the input image
Bitmap bitmap = new Bitmap("input.png");
// Initialize graphics
Graphics graphics = Graphics.FromImage(bitmap);
// Create a Pen
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Orange), 4);
// Draw polygon
graphics.DrawPolygon(pen, new Point[] { new Point(100, 100), new Point(500, 400), new Point(900, 100) });
// Save the drawing into desired image format
bitmap.Save(@"drawing_updated.png");

输出结果

轻松绘制图像图形!GDI +图形处理API-Aspose.Drawing重磅上市!

 

热门文章

暂无图片
编程学习 ·

蒙哥马利模乘

Montgomery乘法的数学表达式是A * B * R ^ (-1)mod M。A、B是同位长大数,R是2的M(位长)的次方,R ^ (-1)是指R相对于M的模逆,即R ^ (-1)满足以下条件的数:R * R ^ (-1) mod M = 1;这个条件成立的充要条件是R与M互素,这一点只需要M为奇数即可。 使用蒙哥马利乘法可以做…
暂无图片
编程学习 ·

2.7 网络抓包

1.简介 抓包是指对网络传输中发送与接收的数据包进行拦截、重发、编辑和转存的操作。 在开发网络爬虫时,给定URL,开发者必须清楚客户端是如何向服务器发送请求的,以及客户端发出请求后服务器返回的数据是什么。只有了解这些内容,开发者才能在程序中拼接URL,针对服务返回的…
暂无图片
编程学习 ·

JVM - G1&ZGC初探

文章目录GC概述参考GC概述 我们知道Serial 、Serial Old 、 Parallel 、 Parallel Old 、 ParNew 、CMS这些垃圾收集器都是基于分代收集理论,即将内存区域按照存储对象的不同分为年轻带、老年代和元空间。如下G1 和 ZGC 逐渐淡化了这种分代的概念,G1的堆内存分配如下堆被划分…
暂无图片
编程学习 ·

CSS滚动指示器

一、CSS滚动指示器 滚动指示器指的是页面的顶端会有一个进度条,指示滚动的进度。效果如下GIF所示(点击播放):CSS滚动指示器指的是不借助JavaScript,纯CSS实现滚动进度效果。 二、传统的实现方法 传统CSS实现方法由一个名叫 Mike的人首先提出,时间应该是16年,这个CodePen…
暂无图片
编程学习 ·

解决vue项目在IE中请求缓存的问题

IE中如果本次请求和上次请求一样,会优先使用缓存我碰到的问题是,我删除了某列的数据,需要重新刷新列表,但是删除成功以后重新请求IE优先使用了缓存解决方法就是在每个url上添加一个随机数,使得每次请求不一样,就不存在缓存问题了PS:垃圾IE
暂无图片
编程学习 ·

收藏量4w+的Web开发框架,你还没学?点击收藏!

Python的Web开发,也是工作岗位比较多的领域。如果你对Python的Web开发有兴趣,正打算开始学习使用Python做Web开发等,那么学习一门基于Python的Web开发框架是必修课。Python作为当前最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Djan…
暂无图片
编程学习 ·

单调栈解决Next Greater Number一类题

单调栈是什么? 单调栈使得每次新元素入栈后,栈内元素都保持有序(单调递增或者单调递减)。 单调递增栈:栈中数据出栈的序列为单调递增序列。 单调递减栈:栈中数据出栈的序列为单调递减序列。 注意:这里所说的递增递减是出栈的顺序,不是栈中数据的顺序。 单调栈的应用 通…
暂无图片
编程学习 ·

深度学习入门教程-1.1 神经网络是什么

到底什么是人工神经网络?前面提到,人工神经网络是从大脑的理解中汲取灵感而形成的。在我们的大脑中,有数十亿个神经元,它们连接成了一个神经网络。人工神经网络,结构也有些类似。许多个神经元(下图中的⚪)相连,构成了一个神经网络。人类大脑神经元细胞接收来自外部多个…
暂无图片
编程学习 ·

程序员:Java数据结构与算法——第十六章·算法设计技术详解

Java数据结构与算法-第十六章算法设计16.1引言在求解一个新问题时,通常的思路是寻找当前问题与已解决问题之间的相似之处,从而轻松找到新问题的求解方法。本章将对各种算法按照不同的方法进行分类,然后在随后的3章中分别介绍3个算法设计思想(即贪婪、分治和动态规划)。16.2分…
暂无图片
编程学习 ·

Oracle数据库编程中求最近200天的每周一

select distinct trunc(trunc(sysdate)-level,IW) my_datefrom dualwhere trunc() >=trunc(sysdate)-200connect by level<=200区间分割判断某个数在前十、中十、后十trunc((x-1)/10)*10+1 and trunc((x-1)/10)*10+1 0
暂无图片
编程学习 ·

react学习记录-PropTypes 和组件参数验证

文章目录PropTypes 和组件参数验证PropTypes PropTypes 和组件参数验证 JavaScript 语言的弱类型,让我们写代码很爽,但是也很容易出 bug。 变量没有固定类型可以随意赋值,在我们构建大型应用程序的时候并不是什么好的事情。你写下了 let a = {} ,如果这是个共享的状态并且在…
暂无图片
编程学习 ·

第四天:Spark Streaming

Spark Streaming概述 1. Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果…
暂无图片
编程学习 ·

关于电力系统卫星时钟(NTP校时服务器)的4问4答

关于电力系统卫星时钟(NTP校时服务器)的4问4答 关于电力系统卫星时钟(NTP校时服务器)的4问4答 电力系统时钟同步产品, 正在国内外各行业近万个现场稳定运行,现就设备安装、日常维护及解决方案做下总结。 一、NTP网络时钟服务器卫星天线1、问:如何辨别天线好坏?答:将天…
暂无图片
编程学习 ·

Spring

1、概述 1.1、简介Spring:春天------>给软件行业带来了春天 2002,首次推出了Spring框架的雏形,interface21框架 Spring框架即以interface21框架为基础,重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版 Rod Johnson,Spring Framework创始人,著名作者。很…
暂无图片
编程学习 ·

struts2中的文件上传和文件下载

文件上传1)三个条件:表单有filepost提交enctype="multipart/form-data"2)在Action中接收文件内容File attach; (attach是file表单的name属性)String attachContentType; 文件类型String attachFileName; 文件名称细节:修改上传大小页面: <%@ page langua…
暂无图片
编程学习 ·

liunx-搭建hadoop(2.7.1)和使用

1.搭建 1.集群jdk安装 配置JDK环境变量在局域网中关闭防火墙 service iptables stop设置主机映射 1. 打开配置文件vim /etc/hosts 2. 内容192.168.80.111 server1192.168.80.112 server2192.168.80.110 server3配置SSH免密登录 1. 生成私钥ssh-keygen -t dsa -P -f ~/.ssh/id_…
暂无图片
编程学习 ·

互联网行业VS传统行业,哪碗饭更香?

这些年,网络发展速度越来越快,通过网络赚钱的项目也越来越多。但是,如果你去对这些项目进行分类的话,其实这些项目大致也就分为几种,赚钱的方式也大致相同。这个时代给我们提供了很多网上赚钱的机会。老实说,现在赚钱不一定非要去公司或工厂工作,何况在公司或工厂工作的…
暂无图片
编程学习 ·

mfc110.dll丢失,解决方法

mfc110.dll丢失,解决方法参考文章: (1)mfc110.dll丢失,解决方法 (2)https://www.cnblogs.com/hsd1727728211/p/5412141.html 备忘一下。
暂无图片
编程学习 ·

Arcgis api for Javascript + arcgisServer + arcSDE笔记(1)

最近要搞的项目要用Arcgis api for Javascript做地图模块,自己开始学相关的技术。这是之前整理的笔记,现在传到博客上,也作为学习的记录0 环境搭建Arcgis软件统一使用10.2版本(更新的版本很难找到比较齐全的server、sde等配套软件),安装arcgis Desktop、arcgis Server、a…
暂无图片
编程学习 ·

基于Docker的Mysql主从复制搭建

为什么基于Docker搭建?资源有限虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐一台机器上可以运行多个Docker容器Docker容器之间相互独立,有独立ip,互不冲突Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器首先拉取docker镜像,我们这里使用5.7版本的my…