c# GDI+简单绘图(二)

VisionPro与C# 图像显示十字光标 VisonPro与C#联合编程,图像显示中心十字。 阅读详情

在上一片里已经向大家介绍了如何使用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,  10 ,  10 ,  200 ,  10 );

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

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

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

以上代码运行结果:


 

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

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

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

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

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

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

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

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

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

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

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

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

// 用渐变色填充
rect.Location  =   new  Point( 10 ,  290 );
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, 0, 0, 100, 0);
    g.ResetTransform();
//恢复坐标轴坐标
}


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

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


g.Dispose();

 

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

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

转贴自http://www.cnblogs.com/stg609/archive/2008/03/16/1108407.html

C# GDI画图系列(二) 实现画图 效果图 已经实现了画矩形和画线条,还有撤销和重做功能。 Form1为上一篇新建的画布界面 在Form1中添加个menuStrip 添加一个窗体Form2, 把它的IsMdiContainer属性设置为true。 添加一个menuStrip控件 public partial class Form2 : Form { Form1 docForm; public Form2() { InitializeComponent() 阅读详情

相关推荐

C#用渐变色填充窗体的背景

C#用渐变色填充窗体的背景

C#_工业摄像头图像数据显示到窗口控件

需要摄像头厂商SDK using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DVPCameraTyp...

瞎点技能树 1172

c# 鼠标在窗体PictureBox上的十字光标定位

可以使鼠标在窗体的PictureBox上 按照PictureBox中图的坐标来 十字光标 定位,点击后绘制“点击处”在图中坐标的位置

实现绘图区的大十字光标

有时,我们需要用VB快速开发一个试验数据绘图处理程序,将绘图控件内的鼠标光标改变成与AutoCAD软件中使用的大十字光标的形式,将可以比普通的箭头光标达到更好的效果。那么我们如何实现这样的大十字光标呢? ----首先,我们明确一下要达到的效果,假若我们在一个Picture控件中绘图,那么,鼠标移动到这个控件上时,鼠标光标立即改变为大十字形状,光标中的横线从控件的左边界到右边界,竖线从控件的上边

向往大海专栏 2047

C#自定义控件之-winform美化

对于系统自带的窗体,博主实在不敢恭维,测试时使用方便快捷,但真正项目中无法使用,只因不美观的外表,每次都很头疼窗体的美化,这里列出一些需要解决的问题和自己收集到的解决方法,如有错误请指出。

初级文章【西门子】字符拼接成字符串

针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。 首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。 我们的目的是将char1-char10拼接成一个string。 第一种方式:第一步,将char放进数组。 ​​​​​​​ 相信大家都能看明白,但是我还是要解释解释 L取值2 T赋值到临时变量DBNO(INT) OPN DB [#DBNO]获取DB块,这一句.

NS_Speak(IVAV) 1万+

C# GDI+简单绘图二

 在上一片里已经向大家介绍了如何使用GDI+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.1.首先我们来看下上一片中我们使用过的Pen.Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.我们可以用Pen 来画虚线,带箭头的直线等Pen

janney95的专栏 504

中心对数比变换(Centered Log Ratio Transformation,CLR)的原理及scikit-bio介绍

中心对数比变换(Centered Log Ratio Transformation,CLR)是一种数据预处理方法,常用于成分数据分析领域。在成分数据中,各成分之间通常存在一定的约束关系,比如它们的和为固定值等,中心对数比变换可以有效地处理这种具有特殊约束的数据。官方文档scikit-bio是一个在Python3中处理生物数据的库成分统计 (skbio.stats.composition )模块中的,此函数将组合从Aitchison几何体转换到真实空间。这个clr。

RECORD LEARN PROGRESS 1万+
上一篇: c# GDI+简单绘图(一)
下一篇: C# GDI+ 简单绘图 (三)
Alexantao
博客等级 码龄19年 86粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值