“窗体的坐标零点”? 设计 UI 组件要有一些基础经验,要知道分层架构的基本机制。设计界面时是以控件为承载“坐标”的出发点,(用户)控件可以组合到其它(用户)控件里边。 窗体怎么能当作设计的基础呢?
比如说你设计一个“图纸”控件,那么这个用户控件的坐标零点就是它们里边的各种图形元素的坐标零点,这个图纸用户控件可以放到其它用户控件中,或者直接放到窗体的任何布局内部。如果你满脑子只有“窗体”概念,那么岂不是把自己往绝路上引导?岂不是没学过控件(组件)设计开发技术?
扯了半天,好像g.ScaleTransform(1, -1);就可以达到自己想要的效果了。
至于说你的原始数据的 y 坐标改为从底向上的,那么本身并没有什么特别复杂的东西。比如说原始数据坐标是(x,y),你的图纸区域的高度是h,那么不过就是得到控件坐标(x, h-y) 而已,也就是把 y 坐标替换为 h-y 就行了。 真正的问题在于不要只被1分钟就学会的东西所蒙蔽。应该花点时间学习软件架构设计。
[quote=引用 8 楼 wddw1986 的回复:] 幸亏没让你去做地球仪,不然你要跑到月亮上才能把地球的模样做出来。
幸亏没让你去做地球仪,不然你要跑到月亮上才能把地球的模样做出来。
不可以。 你需要使用坐标转换, 转换主要包括,偏移,旋转。三种,前者是二维矢量,后者是标量。 通常的做法是,构建坐标系,全局坐标系,子节点的场景坐标系,绘图时统一向上转换为窗口坐标系,坐标系转换问题很简单了,上过初中的化,我相信你可以。
自己写一个转换函数 Point LgPtToScrPt(Point p) { Point pt = new Point(); pt.x = p.x; pt.y = this.Height - p.y; return pt; }
110,534
社区成员
642,575
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧