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个像素。通常这些像素从窗口客户区域的左上角开始测量,如上面的示例所示。但是,情况并不总是如此。例如,在某些情况下,需要以窗口的左上角为原点来绘图,甚至以屏幕的左上角为原点来绘图。但在大多数情况下,除非文档说明书说明,否则都可以假定像素值是相对于客户区域的左上角的。

Point和PointF相关推荐

  1. Android 属性动画(Property Animation) ValueAnimator 的介绍

    先说下属性动画与视图动画的区别: 视图动画系统仅提供为 View 对象添加动画效果的功能,因此,如果您想为非 对象添加动画效果,则必须实现自己的代码才能做到.视图动画系统也存在一些限制,因为它仅公开 ...

  2. Android 高清加载巨图方案 拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处:  http://blog.csdn.net/lmj623565791/article/details/49300989:  本文出自: ...

  3. 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_验证码)

    关于Graphics也有了基本了解下面想说的的是学这个东东干什么呢,到底如何应用 目前常见应用 1.验证码(参照网上的) 2.打印排版(会提到关于条形码大小设置) 3.自定义控件 一.验证码 1 cl ...

  4. winform动态的文字效果

    效果图如下 private void Form1_Load(object sender, EventArgs e){Graphics Car_Paint = panel1.CreateGraphics ...

  5. ASP.NET2.0打通文件图片处理任督二脉【月儿原创】

    ASP.NET2.0打通文件图片处理任督二脉 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.1 1.最简单的单文件上传(没 ...

  6. ASP.NET图象处理详解

    作者:未知     请与本人联系 在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功能.而现在,ASP.NET的推出,我们已经没有必要再使用第三方控件来实现,因为ASP.NET 已经具有强大 ...

  7. android写代码截屏微信,android 模仿微信头像裁剪

    android 在android开发中经常会碰到修改头像的功能需求, 而在修改头像>中最难的部分就是在头像的裁剪功能.虽说网上一大堆裁剪的例子,但最重要的是要理解里面的实现原理,这样以后自己改起 ...

  8. 使用bitblt提高GDI+绘图的效率(转)

    最近在做使用GDI+绘制K线界面发现传统的GDI+绘制方式效率比较低,根本无法满足K线界面及时刷新的速度要求. 所以做了个GDI+绘制图形界面的试验,改试验主要在一个600×600的区域内每隔10MS ...

  9. 技术图文:如何改进算法的运行效率?

    背景 前段时间,一位好友发给我如下的文件: 每个CSV文件中的数据由三个属性组成,第一个属性为ID,第二个属性为X坐标,第三个属性为Y坐标.由于是二维数据,可以绘制出每个文件的散点图,把这些散点图连接 ...

最新文章

  1. VR Cinema 来了!未来的影院也许是酱紫滴
  2. ASP.NET MVC系列:添加控制器
  3. Windows Azure Cloud Service (27) 在Windows Azure发送邮件(上)
  4. 数据结构--百度百科
  5. sql查询两个表结果相减_SQL 操作结果集 -并集、差集、交集、结果集排序
  6. step2 . day5 C语言中的结构体和枚举
  7. 总结Java常见面试题和答案
  8. 群聊金山云与英特尔的“AI as a Service”,你都get到了什么?
  9. ThreadPoolExecutor中的keepAliveTime详解
  10. 清华2020计算机系张晨,2020清华特奖入围名单公布:电子系学霸两篇顶会一作
  11. 想赚钱广而告之是必不可少的
  12. 简单易懂源码解析字符串拼接
  13. BPM≠Workflow+EAI (上)
  14. ncm转MP3的工具
  15. 安装苹果电脑双系统 启动Windows时候鼠标键盘无反应
  16. C语言程序设计的七个准备步骤
  17. 设计模式(一) 简单工厂模式
  18. 用python找千字文的重复字
  19. 显卡内存一直被占用解决方式
  20. 对于bugku中杂项啊哒题的尝试解法

热门文章

  1. 王淮经验谈:我的码农原则
  2. 你是否发现 职业能力危机,请 警惕
  3. Perl迎来25岁生日
  4. DCT原型 ——傅里叶级数
  5. ffmpeg和SDL学习笔记
  6. H.264编解码流程
  7. 应该把script标签放在哪里
  8. ADOQuery 查询 删除 修改 插入
  9. ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案
  10. hadoop中实现定制Writable类