【绘制矩形】已知二维平面矩形的对角线两点坐标,如何确定四个点的坐标
2012-08-05 15:50
1746 查看
O--------------------------------------------------->X
|
|
|
|
↓Y
在Windows Form中,坐标系的定义如上图所示,有时我们要在窗口中绘制矩形,能够方便得到的是起始点的坐标和终点的坐标,而如何计算四个点的坐标方式也是很多的。
起始点为start, 终点为end, pointLT, pointLB, pointRT, pointRB分别为左上角,左下角,右上角,右下角
方法一:(很复杂不推荐)
将end.X, end.Y 分别与start.X, start.Y作比较,一共四类情况,赋值的时候非常复杂,写代码麻烦
if (start.X < end.X && start.Y < end.Y)
{
/*
S.....................
* ....................
* ....................
* ....................E
*/
pointLT = start;
pointLB.X = start.X; pointLB.Y = end.Y;
pointRB = end;
pointRT.X = end.X; pointRT.Y = start.Y;
}
else if (start.X > end.X && start.Y > end.Y)
{
/*
E.....................
* ....................
* ....................
* ....................S
*/
……
方法二(代码书写方便)
左上角是start与end两者坐标的较小值,利用这个思想确定四点坐标
pointLT.X = (start.X <= end.X) ? start.X : end.X;
pointLT.Y = (start.Y <= end.Y) ? start.Y : end.Y;
pointRB.X = (start.X >= end.X) ? start.X : end.X;
pointRB.Y = (start.Y >= end.Y) ? start.Y : end.Y;
pointRT.X = pointRB.X;
pointRT.Y = pointLT.Y;
pointLB.X = pointLT.X;
pointLB.Y = pointRB.Y;
显然方法二的思路明确,代码清晰,书写方便~
|
|
|
|
↓Y
在Windows Form中,坐标系的定义如上图所示,有时我们要在窗口中绘制矩形,能够方便得到的是起始点的坐标和终点的坐标,而如何计算四个点的坐标方式也是很多的。
起始点为start, 终点为end, pointLT, pointLB, pointRT, pointRB分别为左上角,左下角,右上角,右下角
方法一:(很复杂不推荐)
将end.X, end.Y 分别与start.X, start.Y作比较,一共四类情况,赋值的时候非常复杂,写代码麻烦
if (start.X < end.X && start.Y < end.Y)
{
/*
S.....................
* ....................
* ....................
* ....................E
*/
pointLT = start;
pointLB.X = start.X; pointLB.Y = end.Y;
pointRB = end;
pointRT.X = end.X; pointRT.Y = start.Y;
}
else if (start.X > end.X && start.Y > end.Y)
{
/*
E.....................
* ....................
* ....................
* ....................S
*/
……
方法二(代码书写方便)
左上角是start与end两者坐标的较小值,利用这个思想确定四点坐标
pointLT.X = (start.X <= end.X) ? start.X : end.X;
pointLT.Y = (start.Y <= end.Y) ? start.Y : end.Y;
pointRB.X = (start.X >= end.X) ? start.X : end.X;
pointRB.Y = (start.Y >= end.Y) ? start.Y : end.Y;
pointRT.X = pointRB.X;
pointRT.Y = pointLT.Y;
pointLB.X = pointLT.X;
pointLB.Y = pointRB.Y;
显然方法二的思路明确,代码清晰,书写方便~
相关文章推荐
- 已知wgs84经纬度如何转换成平面xy坐标?
- [Java]给定二维平面中的4个坐标点,如何判定这四个坐标点能否构成长方形?(经_典_面_试_题_目)
- 使用万能地图下载器进行坐标转换的时候如何确定平面坐标的选择
- 在平面内,已知一个矩形的四个角坐标,将矩形绕中心点转动一个角度,求旋转后的角坐标.
- HALCON已知平面两点图像坐标和对应机械坐标求仿射变换矩阵
- opencv: cv2.rectangle 通过确定对角线 画矩形
- 已知A,B两点及C点(不在直线AB上)坐标,求在直线AB上距离A点距离为线段AC长度的点D坐标
- 如何重写PictureBox的OnPaint方法绘制矩形,并实现拖动,鼠标悬停时提示拖拽方向
- RTH(Randomized Hough Transform)中计算p1,p2,p3三个点确定的平面在参数空间的坐标
- hdu 3627 Giant For 离散化+线段树 在一个二维平面内任意的添加一个点和删除一个点,然后来寻找一个横纵坐标都比已经添加的点大的点,首先选择横坐标最小的,其次是纵坐标最小的
- 已知一个Java类名,如何获取它的Maven坐标/依赖/dependency
- C#窗体中根据两点坐标绘制直线
- 已知三角形的两点坐标,和三个边长,求第三点的坐标
- 如何绘制3维矩形
- 如何重写PictureBox的OnPaint方法绘制矩形,并实现拖动改变矩形大小,鼠标悬停时提示拖拽方向(二)
- 章鱼哥出品—VB.NET 如何绘制圆角矩形,并适应窗体大小
- 如何用 matlab 在图片上绘制矩形框 和 添加文字 ?
- 如何实现经度纬度到平面坐标的相互转换?
- html5如何绘制矩形吗?谈下心得!
- 毕业设计——人脸检测——MATLAB 在图片上画矩形框(已知矩形左上角坐标、长、宽)