今天写了一个求点集合的凸包的一个算法,虽然结果求解出来了,但是想将过程用GDI+绘制出来,就需要将点绘制出来,然而c#GDI+中绘图的坐标与我们常用数学中笛卡尔坐标系是不一样的,所以就要转换GDI+中的坐标,通过以下的代码的就能够实现坐标系的转换,代码如下所示:

  

            //将GDI+中原始的坐标原点平移g.TranslateTransform(0f, this.Height);//变换x,y轴的正方向g.ScaleTransform(1f, -1f);  

ps:c#gdi+的坐标以区域的左上角为原点,往下为Y正方向,往右为X正方向。

ok,这样就搞定了。

注意:

  虽然这样能够将GDI+的坐标变为笛卡尔坐标系,但是Y轴的坐标刻度有点差别。我也不知道为什么。我用50,50为原点,100,100绘制一个矩形。但绘制出来后矩形的左下角距画布左边的距离和下边的距离不一样长,有点小偏差,其他的还好。我猜想可能是在上述代码将坐标原点平移的时候有点小问题,this.Height和GDI+的坐标的单位不一样吧。GDI+中的坐标是用默认用像素为单位,可能控件的高度和宽度所用的单位是用比像素更小的单位吧。所以在g.TranslateTransform(0f,this.Height)中并未实现将坐标移到左下角去,因为单位的不统一造成的。

  但是我现在也不知道控件大小的单位是什么,也不知道他们之间如何转换,也没找到相关的资料,希望哪位高手知道能够告知。自己也会进一步的研究,若有结果,会及时分享的。

转载于:https://www.cnblogs.com/mingjiatang/p/3724441.html

在GDI+中如何实现以左下角为原点的笛卡尔坐标系相关推荐

  1. c语言确定原点建立坐标系,在GDI+中如何实现以左下角为原点的笛卡尔坐标系

    今天写了一个求点集合的凸包的一个算法,虽然结果求解出来了,但是想将过程用GDI+绘制出来,就需要将点绘制出来,然而c#GDI+中绘图的坐标与我们常用数学中笛卡尔坐标系是不一样的,所以就要转换GDI+中 ...

  2. android投影坐标转换,关于android相机:透视投影中的笛卡尔坐标系

    我仍在为增强现实应用程序实施透视投影.我已经问过一些有关视口计算和其他摄影机问题的问题,Aldream在此主题中对此进行了解释 但是,我目前没有任何有用的值,我认为这取决于我对笛卡尔坐标空间的计算. ...

  3. matlab中应用surf函数画球形物体的三维坐标变换,从球坐标系转换到笛卡尔坐标系

    在Matlab中采用surf函数画三维图时,该函数使用笛卡尔坐标系绘制图形,因此在某些球形图案的绘制中,直接使用(theta,phi,z)参数无法得到球形图案,需要将图案对应的点从球坐标转变为笛卡尔坐 ...

  4. matlab 投影笛卡尔坐标转换,如何将一个三维笛卡尔坐标系中的坐标转换为另一个三维笛卡尔坐标系...

    我从一个坐标系开始,沿Z轴的一个点由P1 = [0 0 h]给出 由P2 = [h * tan(A),h * tan(B),0]给出的XY平面中的一个点 然后我求解垂直于从P2到P1的矢量的平面的方程 ...

  5. 2022re:Invent大会中,笛卡尔实验室通过将云平台迁移至亚马逊云科技

    在2022亚马逊云科技re:Invent全球大会上,亚马逊云科技宣布,领先的地理空间智能公司笛卡尔实验室(Descartes Labs)正在将其包括地理空间处理和分析平台在内的核心IT基础设施迁移至亚 ...

  6. GDI+ 中图片的绘制

    背景 GDI+ 中使用 Graphics 类的成员函数 DrawImage 来绘制图片. 原样绘制 使用 Graphics 类的 成员函数 DrawImage 来绘制图片,当仅指定绘制起始位置时按照图 ...

  7. GDI+ 中发生一般性错误(生成验证码时出现的错误)

    我在生成验证码时,出现这样的错误:GDI+ 中发生一般性错误. 怎么解决? 转载于:https://www.cnblogs.com/happyangle/archive/2008/06/11/1217 ...

  8. GDI+中发生一般性错误

    在PictureBox中有一副图,希望保存成图片,用 pictureBox1.Image("c:\\aa.jpg",System.Drawing.Imaging.ImageForm ...

  9. 图像对象paip.Image对象出现“对象当前正在其他地方使用或者GDI+中发生一般性错误的解决...

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ paip.Image对象现出"对象以后正在其他地方用使或者GDI+中产生一般性误错的决解 作者Attilax ,   ...

最新文章

  1. 12c PDB自启动
  2. Regex入门(一)
  3. Delphi使用资源文件全攻略
  4. 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
  5. [PHP语法]PHP基础语法与数据类型
  6. 10-300-020-简介-架构-简介
  7. [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...
  8. PAT 1085. PAT单位排行 (25) - 乙级
  9. 牛人开发软件-网站收集
  10. php 使用json 教程,如何在php中正确的使用json_PHP
  11. A Better Finder Attributes 7 Mac版(文件批量重命名)
  12. 来吧,用设计模式来干掉 if-else 啊~
  13. php header带session,PHP接口跨域header头以及Session跨域方法
  14. mouse without borders其他选择中英对照说明
  15. 【selenium 模拟拼图】滑动拼图验证码10分钟教程
  16. 如何从列联表获得对应分析的结果
  17. 《Delphi 4 开发大全》作者、Delphi研发团队开发工程师:史蒂夫·特谢拉(Steve Teixeira)访谈
  18. Python实现王者农药自动刷金币
  19. 解决pdf中翻译外文文献到word参考文献格式错误
  20. 安全加密邮箱哪个好?

热门文章

  1. 凯恩帝k1000ti参数设置_KND1000TI系统参数
  2. 关于request.getServletPath(),request.getContextPath()的总结
  3. oracle clusterware 11g,Oracle11gR2clusterware启动顺序
  4. 树莓派编译mysql卡死_关于树莓派编译工作空间卡死情况的解决办法
  5. Java使用String对象的split()方法分割字符串的小坑
  6. mysql添加外键约束的两种方式(重要)
  7. Centos7安装并配置mysql5.6完美教程
  8. sqlite for linux 可视化数据管理工具
  9. BZOJ3196 二逼平衡树 ZKW线段树套vector(滑稽)
  10. 解决ASP.NET MVC 下使用SQLite 报no such table的问题