none
VB问题 RRS feed

  • 问题

  •         Dim x As System.Drawing.Graphics
            x = Me.CreateGraphics
            x.DrawBezier(Pens.Red, 100, 30, 80, 223, 243, 200, 400, 100)
            x.DrawLine(Pens.Green, 100, 30, 80, 223)
            x.DrawLine(Pens.Green, 243, 200, 400, 100)
           上面的代码中,请解释一下,切线、控制点是如何影响曲线的?
           
    2009年10月8日 5:26

答案

  • 你好!
         你画的贝塞尔样条的方法不对,应该这样画:
        ' Create pen.
        Dim blackPen As New Pen(Color.Black, 3)
    
        ' Create points for curve.
        Dim start As New Point(100, 100)
        Dim control1 As New Point(200, 10)
        Dim control2 As New Point(350, 50)
        Dim end1 As New Point(500, 100)
        Dim control3 As New Point(600, 150)
        Dim control4 As New Point(650, 250)
        Dim end2 As New Point(500, 300)
        Dim bezierPoints As Point() = {start, control1, control2, _
        end1, control3, control4, end2}
    
        ' Draw arc to screen.
        e.Graphics.DrawBeziers(blackPen, bezierPoints)
    
    第一个贝塞尔样条是从点数组中的第一个点到第四个点绘制成的。第二个点和第三个点是确定曲线形状的控制点。每条后续曲线只需要三个点:两个控制点和一个结束点。前一条曲线的结束点用作后一条曲线的起始点。
    贝塞尔曲线是数值分析中的概念,具体可以参考:
    http://zh.wikipedia.org/zh-cn/%E8%B2%9D%E5%A1%9E%E7%88%BE%E6%9B%B2%E7%B7%9A
    周雪峰
    • 已标记为答案 夏宇翔 2009年10月9日 2:25
    2009年10月8日 11:06
    版主