C#代码实现矢量画图
原文:C#代码实现矢量画图

版权声明:本文为博主原创文章,转载请附上链接地址。 https://blog.csdn.net/ld15102891672/article/details/80275969

要实现C#代码画矢量图,其基本原理是先创建一个容器作为画板,然后创建Line(直线)、PolyLine(多段线)、Rectangle(矩形)或者Ellipse(椭圆)基本绘图对象生成各种矢量图形,最后把这些图形对象添加到画板中即可,一般用Canvas容器作为画板。下面以在Canvas容器控件中绘制Line(直线)、PolyLine(多段线)、Rectangle(矩形)或者Ellipse(椭圆)等基本图形对矢量绘图进行简单的介绍,希望对大家有所帮助。

创建一个C#项目,在项目中添加Canvas并把Canvas属性的旋转角度设置为-90度,然后添加绘制各种基本图形的按钮

绘制坐标系效果图及代码

        private void PaintGrid()//画坐标系{Line l=new Line();l.X1=0;l.Y1=10;l.X2=0;l.Y2=this.canvas.Height-10;l.StrokeThickness=1;l.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 0));Canvas.SetLeft(l,this.canvas.Width/2);this.canvas.Children.Add(l);l=new Line();l.X1=10;l.Y1=0;l.X2=this.canvas.Width-10;;l.Y2=0;l.StrokeThickness=1;l.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 0));Canvas.SetTop(l,this.canvas.Height/2);this.canvas.Children.Add(l);for(int i=-10;i<=10;i++){l=new Line();Line ly=new Line();l.X1=i*15;l.X2=i*15;ly.Y1=i*15;ly.Y2=i*15;if(i%2==0){l.Y1=-5;l.Y2=5;ly.X1=-5;ly.X2=5;}else{l.Y1=-10;l.Y2=10;ly.X1=-10;ly.X2=10;}l.StrokeThickness=1;l.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 0));Canvas.SetLeft(l,this.canvas.Width/2);Canvas.SetTop(l,this.canvas.Height/2);ly.StrokeThickness=1;ly.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 0));Canvas.SetLeft(ly,this.canvas.Width/2);Canvas.SetTop(ly,this.canvas.Height/2);this.canvas.Children.Add(ly);this.canvas.Children.Add(l);}Label lb=new Label();lb.Content="X";RotateTransform rotateTransform = new RotateTransform(90);//90度lb.RenderTransform=rotateTransform;Canvas.SetRight(lb,5);Canvas.SetTop(lb,canvas.Height/2-20);this.canvas.Children.Add(lb);lb=new Label();lb.Content="Y";lb.RenderTransform=rotateTransform;Canvas.SetRight(lb,canvas.Width/2-15);Canvas.SetBottom(lb,10);this.canvas.Children.Add(lb);Polyline pl=new Polyline();pl.Points.Add(new Point(this.canvas.Width/2-20,-5));pl.Points.Add(new Point(this.canvas.Width/2-10,0));pl.Points.Add(new Point(this.canvas.Width/2-20,5));pl.Stroke=new SolidColorBrush(Color.FromRgb(0,0,0));pl.StrokeThickness=1;Canvas.SetLeft(pl,this.canvas.Width/2);Canvas.SetTop(pl,this.canvas.Height/2);this.canvas.Children.Add(pl);pl=new Polyline();pl.Points.Add(new Point(-5,this.canvas.Height/2-20));pl.Points.Add(new Point(0,this.canvas.Height/2-10));pl.Points.Add(new Point(5,this.canvas.Height/2-20));pl.Stroke=new SolidColorBrush(Color.FromRgb(0,0,0));pl.StrokeThickness=1;Canvas.SetLeft(pl,this.canvas.Width/2);Canvas.SetTop(pl,this.canvas.Height/2);this.canvas.Children.Add(pl);}

绘制直线代码

private void bth_paint_Line(object sender, System.Windows.RoutedEventArgs e)//画直线{this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系Line l=new Line();//直线l.X1=0;l.Y1=0;l.X2=200;l.Y2=200;l.StrokeThickness=1;//直线宽度l.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 255));//直线颜色(蓝色)Canvas.SetLeft(l,this.canvas.Width/2);//X的原点平移到canvas容器中间Canvas.SetTop(l,this.canvas.Height/2);//Y的原点平移到canvas容器中间this.canvas.Children.Add(l);//在容器中添加该直线}

效果图

画多段线代码

     private void bth_paint_Polyline(object sender, System.Windows.RoutedEventArgs e)//画多段线{this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系Polyline pl=new Polyline();pl.Points.Add(new Point(0,0));pl.Points.Add(new Point(50,50));pl.Points.Add(new Point(0,100));pl.Points.Add(new Point(50,150));pl.Stroke=new SolidColorBrush(Color.FromRgb(0,0,255));pl.StrokeThickness=1;Canvas.SetLeft(pl,this.canvas.Width/2);//X的原点平移到canvas容器中间Canvas.SetTop(pl,this.canvas.Height/2);//Y的原点平移到canvas容器中间this.canvas.Children.Add(pl);//在容器中添加该多段线}

效果图

画矩形代码

       private void bth_paint_Rectangle(object sender, System.Windows.RoutedEventArgs e)//画矩形{this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系Rectangle rect=new Rectangle();rect.Width=100;rect.Height=200;rect.Stroke=new SolidColorBrush(Color.FromRgb(0,0,255));rect.StrokeThickness=1;Canvas.SetLeft(rect,this.canvas.Width/2-rect.Width/2);Canvas.SetTop(rect,this.canvas.Height/2-rect.Height/2);this.canvas.Children.Add(rect); }

效果图

画圆代码

   private void bth_paint_Circle(object sender, System.Windows.RoutedEventArgs e)//画圆{this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系Ellipse ep=new Ellipse();ep.Height=300;ep.Width=300;ep.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 255));ep.StrokeThickness=1;Canvas.SetLeft(ep,this.canvas.Width/2-ep.Width/2);Canvas.SetTop(ep,this.canvas.Height/2-ep.Height/2);this.canvas.Children.Add(ep);}

效果图

画椭圆代码

private void bth_paint_Ellipse(object sender, System.Windows.RoutedEventArgs e)//画椭圆{this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系Ellipse ep=new Ellipse();ep.Height=300;ep.Width=50;ep.Stroke=new SolidColorBrush(Color.FromRgb(0, 0, 255));ep.StrokeThickness=1;Canvas.SetLeft(ep,this.canvas.Width/2-ep.Width/2);Canvas.SetTop(ep,this.canvas.Height/2-ep.Height/2);this.canvas.Children.Add(ep);}

效果图

清空画板代码

private void btn_Clear(object sender, System.Windows.RoutedEventArgs e){this.canvas.Children.Clear();//清空画板this.PaintGrid();//画坐标系}

本次矢量画图编程就介绍到这里,如果还有不明白的地方,可以加入扣扣群234035436进行技术交流,希望大家多多支持!

posted on 2018-10-24 17:57 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9844983.html

C#代码实现矢量画图相关推荐

  1. python海龟绘图画五角星_海龟绘图代码_python乌龟画图五角星

    海龟绘图代码,python乌龟画图五角星 教学目标: 1.熟悉PU.PD.HT.ST.PE.HOME等命令的用法 2.熟悉SS.FS.TS命令的功能和用法 教学重点: 教学目标1.2 教学课时: 2课 ...

  2. python代码根据数据画图

    1.根据两组数据画折线图 代码如下 ​ # pyplot 是专门用来画图的存在于matplotlib里面的函数 from matplotlib import pyplot as pltx1 = [10 ...

  3. python画图完整代码-Python科学画图代码分享

    Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 具体来说是pylab和p ...

  4. python画简单的图形的代码-Python实现画图软件功能方法详解

    概述 虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户 ...

  5. 用python画图代码-Python科学画图代码分享

    Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 具体来说是pylab和p ...

  6. java画板代码_java 画板画图程序

    [java]代码库import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Board { /** ...

  7. matlap心形代码+二维画图

    遇见了温柔的人,所以想温柔待人. 我是一名自动化的学生,下面是我在课堂上学到的一个浪漫的程序,分享给大家. 运行软件是MATLAP. 运行结果如下: 详细代码如下: clc;clear;close a ...

  8. 整理UML建模概念和图形~(啥?程序员不再写代码,变成画图工程师?)

    前言: 工程图纸对于工程师的重要性就不需要我多说了吧,对事物建模也是很重要的.我们在软件工程部分说过"建造一个狗窝和一栋大厦是完全不一样的",很多时候如果你有很好的idea,但是对 ...

  9. python 3d绘图立方体_用代码实现三维画图正方体的思路是什么?

    引入 在下面几种情况,你会用三维绘图工具还是二维绘图工具?机械设计师要设计一种齿轮组合机械,要看到多个面的效果 电影大片场景渲染 要想知道如何画出三维图像,首先要了解几个知识点通常我们说的三维是指在平 ...

最新文章

  1. HDU2016 数据的交换输出
  2. personal-index 我的个人主页的介绍
  3. 专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变
  4. 打开表时提示 Out of resources when opening file......错误解决
  5. libsvm中tools(easy.py,subset.py,grid.py,checkdata.py)的使用
  6. linux sed在容器中怎么用,概述LFCS 基础之sed用法
  7. 圣迪奥康扉多功能防辐射卡
  8. SAP Cloud Application Programming 里的@(path) 注解
  9. [JavaWeb-JavaScript]JavaScript_Array数组对象
  10. ionic3 调用本地相册并上传图片
  11. 23种设计模式(五)单一职责之装饰模式
  12. 如何使用R2DBC连接数据库?
  13. 机器学习十大算法简介
  14. bpsk调制matlab,MATLAB仿真-BPSK调制.doc
  15. 波波夫:无线电的先驱
  16. 申报深圳市专精特新中小企业需要哪些条件,及有什么好处
  17. 关于printf的输出——进制转换
  18. Gerry。沙漠苦旅。
  19. 翻译 Duckietown an Open, Inexpensive and Flexible Platform for Autonomy Education and Research
  20. java实现Word文档(doc、docx)在线查看功能(前台+后台)

热门文章

  1. 用easyx画五角星_冷军画了一把破剪刀, 竟然卖到了160万,被专家抨击:乱涂鸦!得奖后专家顿时不说话了...
  2. Sass 内置函数总结
  3. matlab图片包微盘,如何用Matlab绘制二维图形资料下载
  4. python爬取天气数据的header_[python爬虫]爬取天气网全国所有县市的天气数据
  5. html 图片 把绝对路径改为相对路径,html中想把图片绝对路径 改成相对路径怎么操作?...
  6. php获取两个字符,php获取两个字符串之间的子字符串
  7. Tensorflow实现简单的手写数字神经网络模型
  8. 中文文本分类:你需要了解的10项关键内容
  9. 想开公司没钱租用办公地,注册地址怎么办?
  10. C++ string类和字符串的访问和拼接操作