已解决

【精华】关于.net绘图程序的几个问题已解决

学员:ntwuhaohao提问时间:2008-08-27 11:54:37

有以下几个问题向金老师请教一下
1, 在绘制圆函数块中
private void DrawCircles(PointF center,float radius)
可以通过center.x , center.y获取它的坐标参数,为什么还要
leftX = center.X - radius; //这求得是什么?????
leftY = center.Y - radius;
2,开始绘制函数块中
private void BeninDraw(Graphics g)
{
//清空并用背景色填充
g.Clear(Color.White);
//座标点水平垂直居中, 所得圆心座标传入DrawPic方法center参数
g.TranslateTransform(panDraw.Width / 2, panDraw.Width/2);

//定义半径r,取小值调用DrawPic绘制正圆,r可以除以2的任意倍数
float r;
r = Math.Min(panDraw.Width / 2, panDraw.Height / 2);
r = r / 4;
//将默认座标0.0传入,绘出的圆不是要位于左上角吗???
DrawPic(new PointF(0, 0), r, argu.recursion);
}
不知以上理解是否正确
3.在获取小圆座标函数块中
private PointF GetPointInCircle
在您的图解中求小圆的纵轴是 center.y —'三角函数对应的边'

pf.Y =(float)( center.Y + radius * Math.Sin(Math.PI * angle / 180)); //在代码中为什么会是加呢?事实上改成“减”的话也是一样的。
4.按回车键绘图
如果我想按 回车键绘图的话,是否需加入enter事件,我在里面加入调用代码后不行。
就以上这些,谢谢

采纳为答案

回答人:金旭亮回答时间:2008-08-28 16:38:20

呵呵,你很仔细。回答如下:
第1个问题:Graphic对象的画圆函数DrawEllipse()接收的是圆的外切正方形,而不是圆心,所以要获取左上角的坐标。
第2和第3个问题的关键在于示例程序中采用了坐标平移,将坐标原点从左上角移到屏幕中央,在这种情况下,坐标就有可能是负数了。
第4个问题,要检测回车,在Windows Form中很简单,响应KeyDown事件就行了,在此事件中检测按键然后启动绘图过程。但在Web页面上就必须使用JavaScript编程了,不过其方法是类似的。

学员对该答案的评价 谢谢老师

其他回答

回答人:金旭亮回答时间:2008-08-28 17:00:55
上面回答有些错误。
在确定圆心坐标时,Cos和Sin都有正有负,所以在 GetPointInCircle()中求pf.x和pf.y应该是一加一减,你说得对,这是我的错误。
程序虽然运行正常,是因为圆本身是对称的,它的另一点也在圆上。
回答人:amandag(高歌 .NET学习顾问)回答时间:2008-08-28 22:24:09
楼主很心细