`

用Graphics的 drawPath 来画曲线(1)

阅读更多

1 用最简单的代码 画一条最简单的曲线

代码在这里:

注意:Graphics的 drawPath 需要 flash player10

package
{
    import flash.display.GraphicsPathCommand;
    import flash.display.Sprite;

    public class drawCurveLine0 extends Sprite
    {
        public function drawCurveLine0()
        {
            super();
            graphics.lineStyle(0, 0x000000);
            var data:Vector.<Number>=new Vector.<Number>();
            data.push(200, 200); graphics.drawCircle(200, 200, 10); //起点
            data.push(250, 100); graphics.drawCircle(250, 100,5); //控制点1
           
            data.push(300, 200); graphics.drawCircle(300, 200, 10); //节点2
            data.push(400, 250); graphics.drawCircle(400, 250,5); //控制点2
           
            data.push(300, 300);
            data.push(250, 400);
            data.push(200, 300);
            data.push(100, 250);
            data.push(200, 200);

            var commands:Vector.<int>=new Vector.<int>();
            commands.push(GraphicsPathCommand.MOVE_TO);
            commands.push(GraphicsPathCommand.CURVE_TO);//样式:曲线
            commands.push(GraphicsPathCommand.CURVE_TO);
            commands.push(GraphicsPathCommand.CURVE_TO);
            commands.push(GraphicsPathCommand.CURVE_TO);

            graphics.drawPath(commands, data);//画路径


        }

    }
}

 

看明白了么?

就是定义一堆点的数组,再定义一个每两个点之间线型的数组,然后drawPath。

很简单吧,很简洁吧。

 

另:如果用GraphicsPathCommand.CURVE_TO,

貌似会认为你的节点数组里的点的作用为:

节点1,控制点1,节点2,控制点2,节点3.。。。。。。。。。。。

 

如果用GraphicsPathCommand.LINE_TO,则是画折现,点数组中点的含义变为:

节点1, 节点2, 节点3.  节点4,   节点5。。。。。。。。。

 

明天请看用Graphics的 drawPath 来画曲线(2),实现 鼠标拖动节点和控制点的功能。

分享到:
评论
3 楼 baixiaozhe 2010-04-07  
JGrapht  JGraphx 貌似都是java的绘图包,过一阵我要做java3d很有可能用到 谢谢分享
2 楼 zhoulei984623 2010-04-04  
不知楼主有研究过JGRAPHX没?
1 楼 zhoulei984623 2010-04-04  
哈哈  正需要

相关推荐

    曲线生成算法的C#gdi+实现(贝塞尔曲线、样条曲线、B样条曲线)

    - `Graphics.DrawPath`方法可以绘制`GraphicsPath`对象中的所有形状和曲线。 8. **应用实例**: - UI设计:创建平滑的按钮边框、滑块轨迹等。 - 游戏开发:定义角色移动路径、动画曲线等。 - 数据可视化:用...

    C# GDI+ 鼠标经典绘制样条曲线 nurbs 三次样条曲线

    对于Nurbs曲线,可以使用`GraphicsPath`类来构建路径,并使用`AddCurve`方法添加样条曲线。这个方法需要一组点和一个参数,表示曲线的光滑度。然后,通过`Graphics.DrawPath`方法将路径绘制到屏幕上。 **鼠标交互...

    C#实例开发/WinForm/绘制曲线 源码

    此外,你还可以使用`GraphicsPath`类来创建更复杂的曲线路径,然后用`DrawPath`方法绘制。`GraphicsPath`允许你添加直线、曲线和其他形状到路径中,然后一次性绘制。 总之,这个C#实例通过WinForm展示了如何利用GDI...

    使用delphi演示贝塞尔曲线的绘制

    在Delphi中,我们可以利用GDI+(Graphics Device Interface Plus)库来实现贝塞尔曲线的绘制。GDI+提供了一套完整的绘图API,包括画笔、刷子、路径、几何形状等,其中就包含了绘制贝塞尔曲线的方法。 贝塞尔曲线的...

    GDI+ 画图程序 绘制曲线、直线 VC++

    然后,使用`Pen`对象和`Graphics`对象画出曲线: ```cpp pen.SetColor(Gdiplus::Color(0, 0, 255)); // 设置为蓝色 graphics-&gt;DrawPath(&pen, path); // 绘制路径 ``` 记得在完成绘图后释放资源: ```cpp delete ...

    C#中Graphics绘制图形Demo

    下面将详细阐述`Graphics`类的核心概念以及如何使用它来绘制图形。 1. `Graphics`类介绍: `Graphics`类是C#中用于表示图形绘制环境的对象,它可以用来在任何支持GDI+(Graphics Device Interface Plus)的设备上...

    qt中绘制曲线

    在Qt中,可以使用QPainterPath来构造平滑曲线。例如,通过三次贝塞尔曲线连接两点,可以实现更自然的过渡。 ```cpp void drawSmoothCurve(QPainter *painter, const QVector&lt;QPointF&gt; &points) { QPainterPath ...

    安卓Android源码——安卓画曲线图代码.zip

    这个压缩包“安卓Android源码——安卓画曲线图代码.zip”很可能包含了实现这一功能的示例代码。下面我们将深入探讨如何在Android平台上进行曲线图的绘制。 1. **使用Android SDK绘图库** Android SDK本身就提供了`...

    vb.net graphics 成员

    `DrawBezier` 和 `DrawBeziers` 方法分别用于绘制单个和一系列的贝塞尔样条曲线,通过四个点来定义曲线的起点、终点和两个控制点。 ##### DrawClosedCurve 和 DrawCurve `DrawClosedCurve` 和 `DrawCurve` 方法...

    GDI+实现曲线交叉区域定位

    4. **绘制和填充**:使用Graphics对象的DrawPath方法可以将曲线画出来,而FillPath方法则可以填充交叉区域。填充颜色的选择可以用来区分不同的交叉部分。 5. **优化性能**:对于大规模的数据或复杂的图形,可以考虑...

    贝塞尔曲线(delphi)

    4. 使用`Graphics`对象的`DrawPath`方法绘制路径。 屏幕保护程序通常由Windows Forms或WPF框架构建,通过继承`ScreenSaverBase`类(在`System.Windows.Forms.ScreenSaver`命名空间下)来实现自定义行为。在本案例中...

    GDI+ 双缓冲绘制自由曲线

    3. **绘制路径**:在后台缓冲区的`Graphics`对象上调用`DrawPath`方法,传入之前创建的`GraphicsPath`对象,以在内存画布上绘制曲线。 4. **填充路径(可选)**:如果需要填充曲线内部,可以调用`FillPath`方法。这...

    C#由直线、曲线创建图形

    `AddLine()`, `AddBezier()`, `AddArc()`等方法添加路径元素,然后用`Graphics.DrawPath()`方法绘制。 4. **图形变换**: - 可以通过Graphics对象的`TranslateTransform()`, `ScaleTransform()`, `RotateTransform...

    vb 屏幕画笔 源码

    - `Graphics.DrawLine()` 或 `Graphics.DrawPath()`:使用Graphics对象绘制线条或曲线。 - `Bitmap.Save()`:将Bitmap对象(即画布)保存为图像文件。 了解以上知识点,你可以构建一个基本的屏幕画笔程序,提供丰富...

    GDI.net教程和使用标准GDI实现游戏品质的动画系统

    5. 使用路径:GraphicsPath类可以创建复杂路径,如曲线、贝塞尔曲线等,然后用Graphics.DrawPath()绘制。 三、游戏品质的动画系统 1. 时间管理:使用Timer控件或System.Threading.Timer来实现帧率控制,确保动画...

    VB 绘制正弦曲线_正弦曲线_VB_

    在VB(Visual Basic)编程环境中,我们可以利用GDI+(Graphics Device Interface plus)图形库来绘制复杂的图形,包括数学中的正弦曲线。正弦曲线是周期性函数的一个典型代表,它在物理、工程、计算机科学等多个领域...

    c# graphics画图项目

    本项目“c# graphics画图项目”就是利用C#的Graphics类来实现各种图形绘制和图像处理的功能。下面我们将深入探讨C# Graphics的相关知识点。 一、Graphics类 Graphics类是C#中用于在设备上下文上执行图形操作的基础...

    图像图像画向量字符

    在IT行业中,向量字符是一种...总之,使用C#和图像图像技术来画向量字符是一项结合了编程技巧与艺术创意的工作。通过熟练掌握相关类库和方法,我们可以创造出高质量、可缩放的向量字符,适用于各种屏幕尺寸和打印需求。

    Qt浮雕绘制曲线源码

    在设置好画笔属性和曲线数据后,我们使用`QPainter`的`drawPath()`或`drawLines()`方法来绘制曲线。如果使用`drawPath()`,需要先构建一个`QPainterPath`,通过`addPoint()`方法添加每个点,然后调用`drawPath(path)...

    《android Graphics(二):路径及文字》源码

    除了基础的绘图操作,Android还支持SVG(Scalable Vector Graphics)格式,可以使用`SvgDrawable`或者第三方库如`androidsvg`来加载和显示矢量图形。这样可以保证图形在不同分辨率的设备上都能保持清晰。 总结来说...

Global site tag (gtag.js) - Google Analytics