以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  不知这算不算一个bug  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41503)

--  作者:东坡一剑
--  发布时间:2013/10/21 11:57:00
--  不知这算不算一个bug

帮助文件中有这样一段代码:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
points(3) As Point
points(
0) = New Point(10, 10)
points(
1) = New Point(10, 100)
points(
2) = New Point(50, 10)
points(
3) = New Point(10,10)
g.DrawLines(Pens.Green, points)
p.Repaint()

执行以后绘制出一个三角形。

如果我们将红色代码删掉,不会画出我们想象中的V形,而会从V形的最末一点引出一条通向(0,0)点的直线。

不管你将点设为几个,都将出现这个问题,除非你设为画一个封闭的多边形。

现在的问题是:

1、如果DrawLines仅仅是用于绘制多边形则显得多余,因为已经有了DrawPolygon.

2、当然,DrawLines还可以用来绘制非凸多边形,但是既然可以用指定点的方式来轻松达到这个目的,又为什么非要让它在参数为非封闭点集时拥有一个不伦不类的默认(0,0)点功能呢?这可真是一个画蛇添足的事。

 

大家可以测试一下,如果觉得我说得有道理,都向狐爸反映一下,看能不能改进。


--  作者:狐狸爸爸
--  发布时间:2013/10/21 12:00:00
--  
Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g As Graphics = p.Graphics
Dim points(2) As Point
points(0) = New Point(10, 10)
points(1) = New Point(10, 100)
points(2) = New Point(50, 10)
g.DrawLines(Pens.Green, points)
p.Repaint()

--  作者:东坡一剑
--  发布时间:2013/10/21 12:16:00
--  
谢谢!学习了,唐突之处请见谅!
--  作者:狐狸爸爸
--  发布时间:2013/10/21 12:40:00
--  
呵呵,没有唐突可言,有问题尽管上论坛提问。