1、给出几个坐标点,如何绘制平滑曲线? 
只要平滑就行,最好我的程序能知道曲线的各个点,因为这个曲线我还有其他用途。2、如何用程序把单帧图片变成视频文件?
这里要求用程序,而不是视频处理元件
有好多图片,最好能压缩一下,要不可能播放不了我是个新手 刚来的 我已经帮助过两个人 还得了20分呢
希望大家互相帮助一下 元旦快乐呀

解决方案 »

  1.   

    1 去找本数值逼近的数看三次样条曲线怎么画
    2 你可以用Windows AVI开头的那堆API来写AVI,也可以用Windows Media Format SDK来写WMV文件。
      

  2.   

    jiangsheng(蒋晟.Net)兄:
        你好 谢谢你的回答 要文回答的好不好 好!精彩!你用最简短的语言表达了这么复杂的事情,其中可读性、逻辑性都很强,在下佩服,佩服,我想象中你一定是身穿披风,头带草帽,哦错了,是礼帽,的一个大侠,路见不平,八道香主。然后划下一个Z字,就消释在茫茫黑夜里。
        
        最后我还有一句话想对你说,“我有点没听懂,你能在详细解释一下吗”
      

  3.   

    http://www.jcwcn.com/html/C++/02_09_09_896.htmGraphics graphics( pDC->m_hDC );Pen pen(Color::Blue, 3);
    Point point1( 50, 200);
    Point point2(100, 150);
    Point point3(160, 180);
    Point point4(200, 200);
    Point point5(230, 150);
    Point point6(220, 50);
    Point point7(190, 70);
    Point point8(130, 220);Point curvePoints[8] = {point1, point2, point3, point4,
    point5, point6, point7, point8};
    Point* pcurvePoints = curvePoints;GraphicsPath path;
    path.AddClosedCurve(curvePoints, 8, 0.5);PathGradientBrush pthGrBrush(&path);
    pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));
    Color colors[] = {Color(0, 0, 0, 255)};
    INT count = 1;
    pthGrBrush.SetSurroundColors(colors, &count);graphics.DrawClosedCurve(&pen, curvePoints, 8, 0.5);
    graphics.FillPath(&pthGrBrush, &path);
    http://www.programfan.com/article/showarticle.asp?id=2649
    GLfloat ctlpoints[4][4][3]; // 控制点的存储空间
    GLUnurbsObj *theNurb; // 指向NURBS曲面对象的指针
    void InitSurface()
    {
     int u, v;
     for (u = 0; u < 4; u++) {
      for (v = 0; v < 4; v++) {
       ctlpoints[u][v][0] = 2.0 * ((GLfloat)u - 1.5);
       ctlpoints[u][v][1] = 2.0 * ((GLfloat)v - 1.5);
       if ((u == 1 || u == 2) && (v == 1 || v == 2)) ctlpoints[u][v][2] = 6;
       else ctlpoints[u][v][2] = -6;
      }
     }
    }
    void Init(void)
    {
     GLfloat mat_diffuse[] = {0.8, 0.6, 0.3, 1.0}; // 定义曲面材质 
     GLfloat mat_specular[] = {0.8, 0.6, 0.3, 1.0};
     GLfloat mat_shininess[] = {45.0};
     glClearColor(0.0, 0.0, 0.0, 1.0);
     glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
     glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
     glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); 
     glEnable(GL_LIGHTING);
     glEnable(GL_LIGHT0);
     glDepthFunc(GL_LESS);
     glEnable(GL_DEPTH_TEST);
     glEnable(GL_AUTO_NORMAL);
     glEnable(GL_NORMALIZE);
     InitSurface(); // 初始化控制点
     theNurb = gluNewNurbsRenderer(); // 创建一个NURBS曲面对象
     // 修改NURBS曲面对象的属性
     gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 5.0);
     gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);
    }
    void CALLBACK Display()
    {
     GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0}; // NURBS曲面的控制向量
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清屏
     glPushMatrix(); // 入栈
     glRotatef(30.0, -1.0, 0.0, 0.0); // 旋转变换
     glScalef (0.5, 0.5, 0.5); // 缩放变换
     gluBeginSurface(theNurb); // 开始曲面绘制
     gluNurbsSurface(theNurb, 8, knots, 8, knots, 4 * 3, 3, &ctlpoints[0][0][0], 4, 4, GL_MAP2_VERTEX_3); // 定义曲面的数学模型,确定其形状
     gluEndSurface(theNurb); // 结束曲面绘制
     glPopMatrix(); // 出栈
     glFlush(); // 强制刷新

    http://www.codeproject.com/bitmap/createmovie.asp
    #include "QTMovieFile.h"
    CQTMovieFile movFile;
    OnCreate(){
        InitGraphicsWorld(hBackDC,hBackBitmap);
    }
    OnPaint(){
        hdc = BeginPaint(hWnd, &ps);
        //...Drawing Code onto the hBackBitmap
        EndPaint(hWnd, &ps);
        movFile.AppendNewFrame();
    }
      

  4.   

    第一个问题可以用以下API:
    Private Declare Function PolyBezier Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) As Long
      

  5.   

    谢谢大家的回答(掌声) 
        下面我对第一个问题作一个简单的小结
        首先,我荣幸的告诉大家第一个问题已经解决了(欢呼声)
        我昨天忙活了一整天,总算是解决了
        我也是刚刚整理出来一个眉目,不敢独享
        我们来看一下我提的这个问题,“1、给出几个坐标点,如何绘制平滑曲线? 只要平滑就行,最好我的程序能知道曲线的各个点”
        这个问题有两点要求:
          1、给出几个坐标点,如何绘制平滑曲线
          2、要求能够反算,简单点说就是我给出任何一个x坐标要求能够给出对应曲线上的y值(我也不知道术语是什么)
        如果我的要求只有第一点,那么上面各位朋友告诉我的都没有问题。但是大家都没有考虑问题的第二点,无论是蒋晟兄的NURBS曲面对象,还是VBToy同志的画Bezie曲线函数,都是能把曲线画出来,而不能进行反算。
        要想解决第二点我觉得没有什么办法,只有自己动手把曲线画出来,因为只有曲线是自己画的,曲线上的各个点你才能知道。
        所以我又上网搜索曲线的画法,我找到了两种,三次bezier曲线和样条插值曲线,这两种曲线有一定的差别,我只知道一点,就是对于bezier曲线刚开始给出的几点坐标只是控制点,而对于样条插值曲线那几点坐标是通过点(估计专业的朋友看到我写的非要骂死我不可)。因此我选择了样条插值曲线来画我的曲线。
        问题解决了,但是颇有感慨。
        1、在上学的时候我以为书本上的东西没有用,整天骂教委的人,现在才发现当学到一定程度之后,什么vb、vc都不是那么重要了,说白了它们都只是工具而已,就好比我这个问题其实是一个数学问题,认你vb在怎么精通也没有用。一句话,如果计算机不和相关行业联系起来,就是狗屁。
        2、一直以来,我们大家都是在使用老盖提供给我们的东西进行编程,久而久之大家都养成了一个习惯,就是人家提供什么,我们用什么。人家用传说中的一句封装就把大家弄的一点脾气都没有了,我也是这样,只要知道这api函数的功能是什么就行了,至于他是怎么实现的关我屁事。大家不觉得很可怕吗?
         奶奶个熊的,管我什么事,老子上一天班拿一份钱,人生苦短,来来来,喝 喝...
      

  6.   

    曲线画比较容易,转换成视频就比较麻烦了。我的网站上有一个画类似任务管理器中CPU繁忙程度的曲线图。你可以看看。VB资料->查询“画曲线图”;==========================
    免费的学习、交流、源码、工具下载网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  7.   

    主要是分少啊,所以第二个问题没人答啊
    借用 jiangsheng(蒋晟.Net) 那句 2 你可以用Windows AVI开头的那堆API来写AVI,也可以用Windows Media Format SDK来写WMV文件。你可以下载Windows Media Format SDK看看啊,你的英文最好过关