c# GDI+简单绘图(二)-阿里云开发者社区

开发者社区> 嗯哼9925> 正文

c# GDI+简单绘图(二)

简介:
+关注继续查看

在上一片里已经向大家介绍了如何使用GDI+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.

1.首先我们来看下上一片中我们使用过的Pen.

Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细).

我们可以用Pen 来画虚线,带箭头的直线等

Pen  p = new  Pen(Color.Blue, 5);//设置笔的粗细为,颜色为蓝色
Graphics  g = this.CreateGraphics();

//画虚线
p.DashStyle = DashStyle.Dot;//定义虚线的样式为点
g.DrawLine(p, 101020010);

//自定义虚线
p.DashPattern = new  float[] 21 };//设置短划线和空白部分的数组
g.DrawLine(p, 102020020);

//画箭头,只对不封闭曲线有用
p.DashStyle = DashStyle.Solid;//恢复实线
p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头
g.DrawLine(p, 103020030);

g.Dispose();
p.Dispose();

以上代码运行结果:


 

2.接下来我们来看下Brush的使用

作用:我们可以用画刷填充各种图形形状,如矩形、椭圆、扇形、多边形和封闭路径等,主要有几种不同类型的画刷:

         SolidBrush:画刷最简单的形式,用纯色进行绘制

         HatchBrush:类似于 SolidBrush,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯色

         TextureBrush:使用纹理(如图像)进行绘制

         LinearGradientBrush:使用沿渐变混合的两种颜色进行绘制

         PathGradientBrush :基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制

我们这里只是简单介绍使用其中的几种:

Graphics g = this.CreateGraphics();
Rectangle rect = new Rectangle(10105050);//定义矩形,参数为起点横纵坐标以及其长和宽

//单色填充
SolidBrush b1 = new SolidBrush(Color.Blue);//定义单色画刷          
g.FillRectangle(b1, rect);//填充这个矩形

//字符串
g.DrawString("字符串"new Font("宋体"10), b1, new PointF(9010));

//用图片填充
TextureBrush b2 = new TextureBrush(Image.FromFile(@"e:\picture\1.jpg"));
rect.Location = new Point(1070);//更改这个矩形的起点坐标
rect.Width = 200;//更改这个矩形的宽来
rect.Height = 200;//更改这个矩形的高
g.FillRectangle(b2, rect);

//用渐变色填充
rect.Location = new Point(10290);
LinearGradientBrush b3 = new  LinearGradientBrush(rect, Color.Yellow , Color.Black , LinearGradientMode.Horizontal);
g.FillRectangle(b3, rect);

运行效果图:

3.坐标轴变换

winform中的坐标轴和我们平时接触的平面直角坐标轴不同,winform中的坐标轴方向完全相反:窗体的左上角为原点(0,0),水平向左则X增大,垂直下向则Y增大


 

接下来,我们来实际操作下,通过旋转坐标轴的方向来画出不同角度的图案,或通过更改坐标原点的位置来平衡坐标轴的位置.

Graphics g = this.CreateGraphics();

//单色填充
//SolidBrush b1 = new SolidBrush(Color.Blue);//定义单色画刷          
Pen p = new Pen(Color.Blue,1);

//转变坐标轴角度
for (int i = 0; i < 90; i++)
{
    g.RotateTransform(i);//每旋转一度就画一条线
    g.DrawLine(p, 001000);
    g.ResetTransform();//恢复坐标轴坐标
}


//平移坐标轴
g.TranslateTransform(100100);
g.DrawLine(p, 001000);
g.ResetTransform();

//先平移到指定坐标,然后进行度旋转
g.TranslateTransform(100,200);
for (int i = 0; i < 8; i++)
{
g.RotateTransform(45);
g.DrawLine(p, 001000);
}


g.Dispose();

  运行效果图:

 

4.最后我们来看下Graphics这个画板上我们还可以画什么

其实我们上面用到的都是在画一些简单的图形,直线,矩形,扇形,圆孤等,我们还可以用它来绘制图片,这可以用它的DrawImage方法.这里我不详细讲解,大家有兴趣可以自己去MSDN了解下.我们后面会讲到的截图就会用到这个方法.









本文转自stg609博客园博客,原文链接:http://www.cnblogs.com/stg609/archive/2008/03/16/1108407.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
2854 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7758 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9426 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5458 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
1131 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3227 0
+关注
4716
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载