Point和PointF

Point和PointF

Point在GDI+的结构中是最简单的,在数学上它完全等价于一个二维矢量,包含两个公共整型属性,表示它与某个特定位置的水平和垂直距离。例如,为了从点A到点B,需要水平移动11个单位,并向下垂直移动11个单位。在坐标图中使用x和y,可以通过如下代码创建一个Point结构来表示:

Point ab = new Point(11, 11);

Console.WriteLine("Moved {0} across, {1} down", ab.X, ab.Y);
其中,属性X和Y都是可读写属性,可以在Point中直接设置这些值,例如下面的代码:

Point ab = new Point();

ab.X = 11;

ab.Y = 11;

Console.WriteLine("Moved {0} across, {1} down", ab.X, ab.Y);
按照惯例,水平和垂直坐标表示为小写的x和y,但是对应的Point属性是大写的X和Y。这是因为在C#中,公共属性的一般约定是名称以大写字母开头。

PointF与Point完全相同,但X和Y属性的类型是float,而不是int。PointF用于坐标不是整数值的情况。已经为这些结构定义了数据类型转换,这样就可以把Point隐式地转换为 PointF。但是上述转换没有相应的逆过程,要把PointF转换为Point,必须显式地复制值,或使用下面的3个转换方法,即Round()、Truncate()和Ceiling():

PointF mm = new PointF(20.5F, 10.9F);

Point nn = new Point();

nn.X = (int)mm.X;

nn.Y = (int)mm.Y;

Point ab1 = Point.Roundmm);

Point ab2 = Point.Truncate(mm);

Point ab3 = Point.Ceiling(mm);

PointF mm = nn;
在默认情况下,GDI+是以电脑屏幕上的像素作为单位的,Graphics对象方法把它们接收到的坐标看作其参数的方式。例如,点new Point(20,10)表示在屏幕上水平移动20个像素,向下垂直移动10个像素。通常这些像素从窗口客户区域的左上角开始测量,如上面的示例所示。但是,情况并不总是如此。例如,在某些情况下,需要以窗口的左上角为原点来绘图,甚至以屏幕的左上角为原点来绘图。但在大多数情况下,除非文档说明书说明,否则都可以假定像素值是相对于客户区域的左上角的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值