C# Winfrom 中应用图表ZedGraph 绘制椭圆

xiaohuihuishanghai 2014-06-13 10:51:23
Winform 中的图表控件Zedgraph 中绘制椭圆,

效果图类似于如下图片:

绘制条件:左纵轴和右纵轴两点,根据两点的连线(非水平行的,而是斜线)作为椭圆的长轴,已知椭圆的的短轴,绘制出倾斜的椭圆。

实现的思路:因为Zedgraph 图表控件无法绘制椭圆,所以只能继承C# 自带的GDI 绘制椭圆,Graphics.DrawEcllipse();
因为 C# 绘制椭圆的条件为:椭圆外接矩形的左顶点坐标、椭圆外接矩形的宽和高,绘制的椭圆为垂直或者水平,因此
绘制倾斜的椭圆需要根据已知条件计算倾斜角度。

遇到的问题:因为图表的Y轴和X轴的实际意义不同 ,Y轴为地图上某个坐标点所在的海拔高度,X轴为地图上两个坐标点的水平距
离,例如第一个坐标点在图表中的坐标为:(0,120),第二个坐标点在图表中的坐标系为:(5000,40),椭圆的长轴 为Math.Sql((120-40)*(120-40)+5000*5000) 即 两个点的高度差的平方+X轴的的长度5000 ,椭圆的短轴为60 ,椭圆的倾斜角度为高和斜线的夹角,绘制的结果在图表中展示错误,绘制的椭圆的长轴的两个点并不是上边描述在图表中的两个坐标点。在调试过程中发现,原因是这样的,因为X轴和y轴代表的实际意义不同,因此X轴和Y轴的数值差距比较大并且X轴和Y轴不是等比例长度,因此当椭圆以Y轴为椭圆的长轴(长轴为5000.63995)而Y轴的的数值比较小,因此导致椭圆的长轴在Y轴上被拉得特别的长,在做旋转是椭圆的另一个顶点并不在两个一个坐标(5000,0)上,

请各位高手帮帮忙,此问题困扰了我好久了。表达不是很清楚,如有不清楚的我在补图。多谢
...全文
254 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuihuishanghai 2014-06-13
  • 打赏
  • 举报
回复
不好意思,图片传倒了

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧