当前位置: 代码迷 >> VC >> 初学VC++遇到的有关问题
  详细解决方案

初学VC++遇到的有关问题

热度:407   发布时间:2016-05-05 00:14:09.0
初学VC++遇到的问题
我已经从文件中读取了两列数据分别存放在数组a[1000]和b[1000]中(数据量比较大),a数组中的值表示横坐标,b数组中的值表示纵坐标,在VC++6.0中该怎么实现a和b表示的点画成曲线,另外在MFC中,我想点击画图按钮,能将画出的图形显示在对话框的某块区域。求高手指教!

------解决方案--------------------
       CWnd *pwnd=GetDlgItem(IDC_PICTURE);//作图区域,假设你在IDC_PICTURE上画
CDC *dc=pwnd->GetDC();
CPen penBlack(PS_DASH,2,RGB(0,0,0)); //黑色
dc->SelectObject(&penBlack);//选择画笔

for(int i=0;i<1000-1;i++)
{
    dc->MoveTo(a[i],b[i]);     
    dc->LineTo(a[i+1],b[i+1]);
}

ReleaseDC(dc);

------解决方案--------------------
引用:
C/C++ code?123456789101112       CWnd *pwnd=GetDlgItem(IDC_PICTURE);//作图区域,假设你在IDC_PICTURE上画    CDC *dc=pwnd->GetDC();    CPen penBlack(PS_DASH,2,RGB(0,0,0)); //黑色    dc->SelectObject(&am……


+1

至于你说的点画图按钮就画的功能可以在类中加一个bool isPaint;变量。
构造函数初始化的时候 isPaint = false;
将楼上的代码改为:
if(isPaint)
{
 CWnd *pwnd=GetDlgItem(IDC_PICTURE);//作图区域,假设你在IDC_PICTURE上画
    CDC *dc=pwnd->GetDC();
    CPen penBlack(PS_DASH,2,RGB(0,0,0)); //黑色
    dc->SelectObject(&penBlack);//选择画笔
 
    for(int i=0;i<1000-1;i++)
    {
        dc->MoveTo(a[i],b[i]);     
        dc->LineTo(a[i+1],b[i+1]);
    }
 
    ReleaseDC(dc);
}

然后在按钮的响应下面加上:
isPaint = true;
repaint();  //重画一下窗口

这样就可以了
------解决方案--------------------
VC中窗口重绘是要重载OnDraw函数的吧,你找本VC的书看下二维绘图部分。
------解决方案--------------------
学习了,待会试试~~~~~~~~~~~~~~~~~~~~~~
  相关解决方案