怎样用C++的MFC编写一个示波器控件

数字存贮示波器的制作
要求:编程实现一个数字存贮示波器。示波器的踪数1-10可变,示波器的数据采样点可达1024。
示波器可以实现图形以不同的形式显示(如波形图,柱图等)。
示波器的横向,纵向均可以用鼠标进行分辨率调整。
示波器提供文件接口,可以文件读写。
结果以DLL形式封装。

创建一个客户程序对示波器进行测试。

参考:SIMULINK的示波器。

网上有类似的,就是不知道你有没有帐号下载:个用于MFC的示波器控件源代码。

谢谢你,但是注册账号好难啊~~

//bg
if(1){
    cairo_pattern_t *pat = cairo_pattern_create_linear(0, 0, w, w);
    cairo_pattern_add_color_stop_rgb(pat, 0.0, 0.98, 0.98, 0.98);
    cairo_pattern_add_color_stop_rgb(pat, 0.5, 0.7, 0.7, 0.9);
    cairo_pattern_add_color_stop_rgb(pat, 1.0, 0.95, 0.95, 0.95);

    cairo_rectangle(cr, 0, 0, w, h);
    cairo_set_source(cr, pat);
    cairo_fill(cr);
    cairo_pattern_destroy(pat);
}

图片说明

//grid line
if(1){
    for(int i=1; i<10; ++i)
    {
        int x = w/10 * i;
        cairo_move_to(cr, x, 0);
        cairo_line_to(cr, x, h);
    }

    for(int i=1; i<6; ++i)
    {
        int y = h/6 * i;
        cairo_move_to(cr, 0, y);
        cairo_line_to(cr, w, y);
    }

    const double dash_def[] = {5, 5};
    int len_dash_def  = sizeof(dash_def) / sizeof(dash_def[0]);

    cairo_set_dash(cr, dash_def, len_dash_def, 0);
    cairo_set_line_width(cr,1);
    cairo_set_source_rgba(cr,0.0,0.5,0.0,0.5);
    cairo_stroke(cr);
}

图片说明

//test scope
if(1){
    cairo_new_path(cr);
    cairo_move_to(cr,0,0);
    for(int i=0; i<300; ++i)
    {
        cairo_line_to(cr, i, sin(pi/100 * i) * 100 + 200);
    }

    cairo_set_dash(cr, 0, 0, 0);
    cairo_set_line_width(cr,1);
    cairo_set_source_rgb(cr,1.0,0.0,0.0);
    cairo_stroke(cr);
}

图片说明

免费下载
http://www.codeproject.com/Articles/14075/High-speed-Charting-Control
http://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface

借用开元的库,,,或者相关的源码