用ZedGraph控件作图圆

简介:

转自原文 用ZedGraph控件作图圆

 

用ZedGraph控件绘制圆
各位:
    我想利用第三方控ZedGraph在WinForm窗体中绘制图形如,圆,填充圆,只是简单的圆图形,但一直没有找到相应的方法,网上的资料都是些绘制图表,拆线,圆饼类。对我有些不太适用。

现求教各位。谢谢。主要是看重此软件的缩放功能,实时性比较好,因为我是做工业UI的。

Add an EllipseItem to the graph, then add the following code to your ReSize event for the form:
// Fix the ellipseItem to a perfect circle by using a fixed height, but a variable
// width
EllipseItem ellipse = zedGraphControl1.GraphPane.GraphItemList[0] as EllipseItem;
if ( ellipse != null )
{
   GraphPane myPane = zedGraphControl1.GraphPane;
   float dx = (float) ( myPane.XAxis.Max - myPane.XAxis.Min );
   float dy = (float) ( myPane.YAxis.Max - myPane.YAxis.Min );
   float xPix = myPane.AxisRect.Width * ellipse.Location.Width / dx;
   float yPix = myPane.AxisRect.Height * ellipse.Location.Height / dy;
 
   ellipse.Location.Width *= yPix / xPix;
 
   // alternatively, use this to vary the height but fix the width
   // (comment out the width line above)
   //ellipse.Location.Height *= xPix / yPix;
}
 
This will give you a true circle, with a fixed height and a variable width as you resize the graph to any size.
John

以上是在一英文网站上找到一点点相关资料,试了一下,不行,主要是“EllipseItem ”类型没有,不知本人水平有限还是怎么的,没弄出现。 图形 控件 
[解决办法]
就只画圆的话,用得着第三方控件吗?
[解决办法]
这里有人写不错还有三角函数例子
[解决办法]
1. 设置坐标范围都为正数就可以了,设置后不要忘记刷新:
    zedGraphControl1.GraphPane.YAxis.Scale.Min = 0;


    zedGraphControl1.GraphPane.XAxis.Scale.Min = 0;
    zedGraphControl1.AxisChange();
    zedGraphControl1.Invalidate();
    zedGraphControl1.Refresh();

2. 这个需要从GraphObj派生,覆盖Draw方法自己画,比如:

复制代码
public class MyEllipseObj : EllipseObj
{
public MyEllipseObj(){}
public MyEllipseObj(double x, double y, double width, double height) : base(x, y, width, height){}
public MyEllipseObj(double x, double y, double width, double height, Color borderColor, Color fillColor) 
: base(x, y, width, height, borderColor, fillColor) {}

public override void Draw(Graphics g, PaneBase pane, float scaleFactor)
{
if (pane is GraphPane && ((GraphPane)pane).Chart != null)
{
var oldClip = g.Clip.Clone();
g.SetClip((pane as GraphPane).Chart.Rect);
base.Draw(g, pane, scaleFactor);
g.Clip = oldClip;
}
else
base.Draw(g, pane, scaleFactor);
}
}
复制代码

然后用刀EllipseObj的地方改成MyEllipseObj

3. 同样还是调整坐标轴的设置:
   zedGraphControl1.GraphPane.YAxis.Scale.MajorStep = 0.2; // 调整刻度间距
   zedGraphControl1.GraphPane.YAxis.Scale.Max = 2; // 调整坐标轴最大值

4. 用饼图可以实现:
   http://zedgraph.dariowiz.com/indexe246.html?title=Pie_Chart_Demo

5. 可以。基本上所有图形对象都可以派生重写Draw绘图方法,比如:

复制代码
public class MyGraphPane : GraphPane
{
public override void Draw(Graphics g)
{
base.Draw(g); // 调用基类画图方法画出原来的图形
// 添加你自己的画图放啊
}
}
复制代码
1
 

然后用的时候把GraphPane替换成派生的MyGraphPane
var myPane = new MyGraphPen();
zedGraphControl1.GraphPane = myPane;

===============
很多问题网上都有现成的解答,多看看帮助和论坛讨论
http://zedgraph.dariowiz.com/

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6913743.html ,如需转载请自行联系原作者





相关文章
|
5月前
qt-绘制曲线(qcustomplot)
qt-绘制曲线(qcustomplot)
49 0
|
前端开发
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
354 0
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
|
定位技术
Threejs使用Shapes实现不规则几何体,自定义绘图
Threejs使用Shapes实现不规则几何体,自定义绘图
787 0
Threejs使用Shapes实现不规则几何体,自定义绘图
|
C#
WPF画图の利用Path画扇形(仅图形)
原文:WPF画图の利用Path画扇形(仅图形) 一、画弧 Path继承自Sharp,以System.Windows.Shapes.Shape为基类,它是一个具有各种方法的控件。 我们先看一段xaml代码: 画出图形的效果如下: 如上红色部门。
2985 0
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1549 0
|
前端开发 Windows
C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码
原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(System.Windows.Shapes)和StreamGeometry(System.Windows.Media)类。
2118 0
|
C# 前端开发
[原译]WPF绘制圆角多边形
原文:[原译]WPF绘制圆角多边形 介绍 最近,我发现我需要个圆角多边形。而且是需要在运行时从用户界面来绘制。WPF有多边形。但是不支持圆角。我搜索了一下。也没找到可行的现成例子。于是就自己做吧。本文描述了圆角多边形的实现,也包括如何用在你的项目里。
1478 0
|
C#
WPF绘制光滑连续贝塞尔曲线
原文:WPF绘制光滑连续贝塞尔曲线   1.需求 WPF本身没有直接把点集合绘制成曲线的函数。可以通过贝塞尔曲线函数来绘制。   贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控制开始和结束方向。
1526 0
|
Web App开发 数据库