行业资讯
NGraphics完全指南:跨平台.NET矢量图形渲染库入门详解
NGraphics完全指南跨平台.NET矢量图形渲染库入门详解【免费下载链接】NGraphicsNGraphics is a cross platform library for rendering vector graphics on .NET. It provides a unified API for both immediate and retained mode graphics using high quality native renderers.项目地址: https://gitcode.com/gh_mirrors/ng/NGraphicsNGraphics是一个强大的跨平台.NET矢量图形渲染库为开发者提供了统一的API来渲染高质量的矢量图形。无论您是在构建UI组件、创建交互式视图还是需要导入导出SVG和PNG文件NGraphics都能满足您的需求。这个库支持即时模式和保留模式两种渲染方式并利用原生渲染器实现高质量的图形输出。 NGraphics核心功能概览NGraphics的核心功能包括跨平台支持支持Android、iOS、macOS、Windows和.NET Core矢量图形渲染绘制矩形、椭圆、路径等基本图形SVG导入导出完整的SVG文件读写支持高质量渲染利用原生图形API实现最佳性能统一的API一套代码在所有平台上运行 快速安装与配置要开始使用NGraphics您可以通过NuGet包管理器轻松安装dotnet add package NGraphics或者直接在Visual Studio的NuGet包管理器中搜索NGraphics并安装最新版本。 基础绘图示例让我们从一个简单的例子开始绘制一个房子var canvas Platforms.Current.CreateImageCanvas(new Size(100), scale: 2); var skyBrush new LinearGradientBrush(Point.Zero, Point.OneY, Colors.Blue, Colors.White); canvas.FillRectangle(new Rect(canvas.Size), skyBrush); canvas.FillEllipse(10, 10, 30, 30, Colors.Yellow); canvas.FillRectangle(50, 60, 60, 40, Colors.LightGray); canvas.FillPath(new PathOp[] { new MoveTo(40, 60), new LineTo(120, 60), new LineTo(80, 30), new ClosePath() }, Colors.Gray); canvas.GetImage().SaveAsPng(house.png);️ 画笔与填充工具NGraphics提供了丰富的绘图工具包括各种画笔和填充选项画笔设置示例var canvas Platforms.Current.CreateImageCanvas(new Size(120*5, 120), scale: 2); canvas.Translate(20, 20); for (var i 0; i 5; i) { canvas.DrawEllipse( new Rect(new Size(80)), pen: Pens.DarkGray.WithWidth(1 i), brush: Brushes.LightGray); canvas.Translate(120, 0); } canvas.GetImage().SaveAsPng(PenWidths.png);渐变填充效果NGraphics支持线性渐变和径向渐变填充让您的图形更加生动// 线性渐变示例 var linearGradient new LinearGradientBrush( new Point(0, 0), new Point(1, 1), Colors.Red, Colors.Blue); // 径向渐变示例 var radialGradient new RadialGradientBrush( new Point(0.5, 0.5), 0.5, Colors.Yellow, Colors.Orange); 颜色系统NGraphics提供了灵活的颜色系统// RGBA构造函数 var color1 new Color(1.0, 0.0, 0.0, 1.0); // 红色 // Web十六进制表示法 var color2 Color.FromRGB(0xFF5733); // 橙色 // 预定义颜色 var red Colors.Red; var blue Colors.Blue; var green Colors.Green; 基本图形元素NGraphics支持多种基本图形元素矩形绘制var rectangle new Rectangle(new Rect(10, 10, 100, 50)); rectangle.Draw(canvas);椭圆和圆形var ellipse new Ellipse(new Rect(50, 50, 80, 40)); var circle new Ellipse(new Rect(100, 100, 50, 50));路径绘制路径是NGraphics中最强大的绘图工具var path new Path(); path.MoveTo(0, 0); path.LineTo(100, 50); path.QuadraticCurveTo(150, 0, 200, 50); path.Close(); SVG文件处理NGraphics提供了完整的SVG文件读写支持读取SVG文件using (var stream File.OpenRead(input.svg)) { var reader new SvgReader(new StreamReader(stream)); var graphic reader.Graphic; graphic.Draw(canvas); }导出为SVGvar writer new SvgWriter(); graphic.Write(writer); File.WriteAllText(output.svg, writer.ToString());上图展示了NGraphics渲染复杂SVG文件的能力 跨平台支持NGraphics支持多个平台的原生渲染Android平台使用Android.Graphics.Canvas进行渲染相关代码位于Platforms/NGraphics.Android/AndroidPlatform.csiOS/macOS平台使用CoreGraphics.CGContext进行渲染相关代码位于Platforms/NGraphics.Mac/ApplePlatform.cs.NET平台使用System.Drawing.Graphics进行渲染相关代码位于Platforms/NGraphics.Net/SystemDrawingPlatform.csWindows平台使用Direct2D进行渲染相关代码位于Platforms/NGraphics.UWP/Direct2DCanvas.cs 高级功能Mandelbrot分形渲染NGraphics可以用于复杂的数学图形渲染var w 600.0; var h w * (2 / 3.5); var image Platforms.Current.CreateImage((px, py) { var x0 px / w * (3.5) - 2.5; var y0 py / h * (2) - 1; var x 0.0; var y 0.0; var iteration 0; const int maxIterations 1000; while (x*x y*y 2*2 iteration maxIterations) { var xtemp x*x - y*y x0; y 2*x*y y0; x xtemp; iteration iteration 1; } return new Color(iteration / (double)maxIterations, 1); }, new Size(w, h), scale: 1);文本渲染NGraphics支持高质量的文本渲染var font new Font(Arial, 24); canvas.DrawText(Hello NGraphics!, new Rect(10, 10, 200, 50), font, TextAlignment.Center, pen: Pens.Black); 编辑器工具NGraphics还提供了一个代码编辑器让您可以实时预览绘图效果编辑器位于NGraphics.Editor目录支持实时编译和预览大大提高了开发效率。 性能优化技巧使用保留模式对于需要重复绘制的图形使用保留模式可以提高性能// 创建图形对象 var circle new Ellipse(new Rectangle(Point.Zero, new Size(10))); // 重复绘制 for (int i 0; i 100; i) { circle.Draw(canvas); canvas.Translate(15, 0); }批量绘制尽可能将多个绘图操作合并到一次绘制调用中// 批量绘制路径 var ops new ListPathOp(); ops.Add(new MoveTo(0, 0)); ops.Add(new LineTo(100, 0)); ops.Add(new LineTo(50, 100)); ops.Add(new ClosePath()); canvas.DrawPath(ops, pen: Pens.Black, brush: Brushes.Gray); 实际应用场景UI组件开发NGraphics非常适合用于自定义UI组件的开发public class CustomButton : View { protected override void OnDraw(ICanvas canvas) { // 绘制圆角矩形背景 canvas.FillRectangle(Bounds, Colors.Blue); // 绘制文本 canvas.DrawText(Click Me!, Bounds, new Font(Arial, 16), TextAlignment.Center, brush: Brushes.White); } }图表绘制创建自定义图表和可视化组件public void DrawBarChart(ICanvas canvas, double[] data) { var barWidth canvas.Size.Width / data.Length; for (int i 0; i data.Length; i) { var height data[i] * canvas.Size.Height; var rect new Rect(i * barWidth, canvas.Size.Height - height, barWidth - 2, height); canvas.FillRectangle(rect, Colors.Blue); } } 学习资源官方文档项目提供了详细的文档包括核心API文档NGraphics/测试示例NGraphics.Test/平台特定实现Platforms/测试用例查看测试文件是学习NGraphics的最佳方式NGraphics.Test/ColorsToImageTests.cs - 颜色和图像处理NGraphics.Test/SvgReaderTests.cs - SVG文件读写NGraphics.Test/PathTests.cs - 路径绘制 调试技巧查看渲染结果NGraphics提供了方便的图片保存功能// 保存为PNG canvas.GetImage().SaveAsPng(output.png); // 保存为JPEG canvas.GetImage().SaveAsJpeg(output.jpg, quality: 90);使用编辑器调试利用NGraphics.Editor可以实时查看绘图效果加快开发调试过程。 总结NGraphics是一个功能强大且易于使用的跨平台.NET矢量图形库。无论您是初学者还是经验丰富的开发者都可以快速上手并创建出色的图形应用。通过统一的API、高质量的原生渲染和完整的SVG支持NGraphics为.NET生态系统的图形编程提供了优秀的解决方案。开始您的矢量图形编程之旅吧【免费下载链接】NGraphicsNGraphics is a cross platform library for rendering vector graphics on .NET. It provides a unified API for both immediate and retained mode graphics using high quality native renderers.项目地址: https://gitcode.com/gh_mirrors/ng/NGraphics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
郑州网站建设
网页设计
企业官网