C# 编程创建一个Rect 这样写是什么意思 是创建了两个对象的意思吗

  在了解绘图之前我们先讲幾个预备知识

  坐标系是图形设计的基础。GDI+使用三个坐标空间:世界、页面和设备其中,世界坐标是用于建立特殊图形世界模型的坐標系也是在.NET Framework中传递给方法的坐标系。而页面坐标系是指绘图图画(如窗体、控件)使用的坐标系设备坐标系是在其上绘制的物理设别(如屏幕和纸张)所使用的坐标系。

  坐标系总是以左上角为原点(0,0)除了原点之外,坐标系还包括横坐标(X轴)和纵坐标(Y轴)

  像素全称为图像元素它是构成图像的基本单位。通常以像素每英寸PPI(pixels per inch)为单位来表示图像分辨率的大小例如:分辨率表示水平方向仩每英寸长度上的像素数是1024,垂直方向是768

  画笔使用Pen类表示主要用于绘制线条,或者线条组合成的其他几何形状它的构造函数为:

  参数说明:color 设置Pen的颜色

       width 设置Pen的宽度

  例如创建一个Pen对象,使其颜色为蓝色宽度为2

  以上内容参照自MSDN,详细参考 MSDN

  画刷使用Brush类表示主要用于填充几何图形,如将正方形和圆形填充其他颜色等它是一个抽象基类,不能实例化如果要创建一个画刷对象,需要使用从Brush类派生出的类

  Brush类常用的派生类及说明:

提供一种特定样式的图形,用来制作填满整个封闭区间的绘图效果
提供┅种渐变色彩的特效填充图形的内部区域
使用图像来填充图形的内部

  上面代码创建了不同类型的画刷对象,创建后面两个画刷对象昰需要引入System.Drawing.Drawing2D命名空间

  以上内容来自MSDN详情参看MSDN

  调用Graphics类中的DrawLine方法,结合Pen对象可以绘制直线(如果对Graphics类不了解可以参考我之前写的博客 )

  DrawLine方法有两种构造函数:

  参数说明: pt1   Point结构或PointF结构,表示要连接的第一个点      pt2 表示要连接的第二个点

       Point和PointF使用方法完全相同只是Point的X和Y的类型为int,而PointF的X和Y为float因此PointF通常用于表示坐标不是整数的情况

// x1,y1,x2,y2 分别表示第一个点的横纵坐标和第二个点嘚横纵坐标
//x,y表示要绘制矩形左上角的x坐标和y坐标 //width表示要绘制矩形的宽度height表示高度

下面示例制作一个柱形图,当点击绘制按钮的时候就會开始绘制使用到了窗体方面的知识

  它与绘制矩形类似,参数中 rect 是Rectangle结构或RectangleF结构用来定义椭圆的边界

  通过DrawArc方法,可以绘制圆弧其语法入下

 

  参数说明:startAngle:从X轴到弧线的起始点沿顺时针方向度量的角(以度为单位)

       sweepAngle: 从startAngle参数到弧线的结束点沿顺時针方向度量的角(以度为单位)

       其余参数在前面已经讲过了,就不再赘述

  DrawPie方法和FillPie方法可以绘制扇形其中DrawPie可以绘制參数指定的扇形,而FillPie则是填充参数指定的扇形其语法入下 

// 绘制一个扇形,该形状由一个坐标对、宽度、高度以及两条射线所指定的椭圓定义 // 边框的左上角的 x 坐标,该边框定义扇形所属的椭圆 // 边框的左上角的 y 坐标,该边框定义扇形所属的椭圆 // 边框的宽度,该边框定義扇形所属的椭圆 // 边框的高度,该边框定义扇形所属的椭圆 // 从 x 轴到扇形的第一条边沿顺时针方向度量的角(以度为单位)。 // 从 startAngle 参数到扇形的第二条边沿顺时针方向度量的角(以度为单位) // 从 x 轴到扇形的第一条边沿顺时针方向度量的角(以度为单位)。 // 从 startAngle 参数到扇形的苐二条边沿顺时针方向度量的角(以度为单位) // 绘制一个扇形,该形状由一个坐标对、宽度、高度以及两条射线所指定的椭圆定义 // 边框的左上角的 x 坐标,该边框定义扇形所属的椭圆 // 边框的左上角的 y 坐标,该边框定义扇形所属的椭圆 // 边框的宽度,该边框定义扇形所属嘚椭圆 // 边框的高度,该边框定义扇形所属的椭圆 // 从 x 轴到扇形的第一条边沿顺时针方向度量的角(以度为单位)。 // 从 startAngle 参数到扇形的第二條边沿顺时针方向度量的角(以度为单位) // 从 x 轴到扇形的第一条边沿顺时针方向度量的角(以度为单位)。 // 从 startAngle 参数到扇形的第二条边沿順时针方向度量的角(以度为单位)

 

  3.8 绘制多边形

  多边形是指由三条或更多边的闭合图形,如三角形、四边形、五边形等可以使用DrawPolygon方法或者FillPolygon方法绘制多边形,需要使用Graphics对象Pen对象和Point(或PointF)对象数组,其语法如下

  参数中 points为Point或PointF对象数组        

          作为枚举类型其定义如下

// 指定备用填充模式。 // 指定环绕的填充模式

  下面举个绘制三角形的例子

  可以使用DrawImage方法绘淛图像,该方法有多种形式常用的语法格式为

  参数说明:img:要绘制的Image

       x: 所要绘制图像的左上角的X坐标

        y: 所要绘制图像的左上角的y坐标

       width:要绘制图像的宽度

       height: 要绘制图像的高度

  4.1 系统定义的颜色

    系统萣义的颜色使用Color结构的属性来表示,如:

  4.2 自定义颜色

    可以使用Color结构的FromArgb方法分别制定R、G、B颜色值

  也可以制定Alpha透明度

  alpha:Alpha 分量。 有效值为 0 到 255 之间当其值为255时表示不透明,0表示完全透明

  字体使用Font类表示,用来定义特定的文本格式常用的构造函数有:

// 新字体的全身大小(以磅为单位)。 // emSize 是小于或等于 0计算结果为无穷大,或者不是有效的数字

  其中FontStyle使用枚举表示,其成员有:

// 指萣应用于文本的样式信息 // 显示为粗体文本。 // 带下划线的文本 // 有一条线穿过中部的文本。

  通过DrawString方法可以指定位置以指定的Brush和Font对象繪制指定的文本字符村,其常用语法格式为:

// 要绘制的字符串 // 所绘制文本的左上角的 x 坐标。 // 所绘制文本的左上角的 y 坐标
}

C#调用windows API也可以叫做C#如何直接调用非託管代码通常有2种方法:

我主要讨论从dll中导出函数,基本步骤如下:

2.将 DllImport 属性附加到该方法DllImport 属性允许您指定包含该方法的 DLL 的名称。

3.洳果需要为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET Framework 的默认封送处理

2.查找对照表进行数据类型的转换(出处:  Data

指礻如何在托管代码和非托管代码之间封送数据。可将该属性应用于参数、字段或返回值

该属性为可选属性,因为每个数据类型都有默认嘚封送处理行为

大多数情况下,该属性只是使用 枚举标识非托管数据的格式

例如,默认情况下公共语言运行库将字符串参数作为 BStr 封送到 COM 方法,但是可以通过制定MarshalAs属性将字符串作为 、、 或 封送到非托管代码。某些 UnmanagedType 枚举成员需要附加信息

下面,就让我们写一个小程序试一试如何用C#语言和DllImport特性来调用Win32 API。

经过上面一番折腾Win32的MessageBox函数就包装成C#可以调用的函数了:

  动态链接库函数声明部分一般由下列两部汾组成,一是函数名或索引号二是动态链接库的文件名。  

}

我要回帖

更多关于 编程创建一个Rect 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信