8.31_picture控件里画随机数、彩色折线图

生成随机数的列表和折线图

  • 需要添加的代码都在CXXXDlg::OnBnClickedButton1()函数里。m_list是给列表添加的变量,上篇文章里是m_ctllist。

    int index;
    index=((CComboBox*)GetDlgItem(IDC_COM_One))->GetCurSel();
    m_list.DeleteAllItems();     // 列表全部清空
    GetDlgItem(IDC_PICTURE1)->ShowWindow(FALSE);
    GetDlgItem(IDC_PICTURE1)->ShowWindow(TRUE);

    int **data;                 //建立保存随机数的二维数组
    data=new int *[index];
    for(int i=0; i<index; i++)
    {
        data[i]=new int[index];
    }
    //初始化二维数组
    for(int i=0; i<index; i++)
    {
        for(int j=0; j<index; j++)
        {
            data[i][j]=1;
        }
    }
  • 列表显示随机数
    for (int m = 0; m < index; m++)
    {   
       //也是给每一行编号的,和下面三行作用一样
        CString strItem = _T("");
        strItem.Format("Item %d", m);
        m_list.InsertItem(m, strItem);

        int n=1;

        CString strText = _T("");
        strText.Format(_T(" %d "), m);
        m_list.SetItemText(m, n, strText);

        //  设置列表中项的文本和数据
        for (n = 2; n < 4; n++)
        {
            int num = rand()%10-rand()%10;

            data[m][n]=num;            //  数组中保存随机数


            CString strText = _T("");
            strText.Format(_T(" %d "), num);  //类型转化

            m_list.SetItemText(m, n, strText);
            m_list.SetItemData(m, m);
        }
    }
  • 选择画刷,并画n=2、n=3两条线
CDC *pDC;
    pDC = m_picShow.GetDC();
    CPen Pen2(PS_SOLID,1,RGB(34,188,0));
    CPen Pen3(PS_SOLID,2,RGB(137,34,0));
    CPen Pen4(PS_SOLID,2,RGB(5,0,2));
    CPen Pen5(PS_SOLID,2,RGB(0,24,23));
    CPen Pen6(PS_SOLID,2,RGB(47,46,0));

    CPen *oldPenx = pDC->SelectObject(&Pen2);


    for(int n=2;n < 4;n++)
    {
        int j;
        int x=30;
        if(n==2)
            oldPenx = pDC->SelectObject(&Pen2);
        else if(n==3)
            oldPenx = pDC->SelectObject(&Pen3);
        else if(n==4)
            oldPenx = pDC->SelectObject(&Pen4);
        else if(n==5)
            oldPenx = pDC->SelectObject(&Pen5);
        else if(n==6)
            oldPenx = pDC->SelectObject(&Pen5);


        pDC->MoveTo(30,110-12*data[0][n]);

        for(j = 1;j < index; j++)
        {
            x+=15;
            pDC->LineTo(x,110-12*data[j][n]);
            //x+=30;
            //pDC->SelectObject(oldPenx);
        }
    }

    for(int i=0; i<index; i++)
    {
        delete[] data[i];
    }
    delete[] data;

猜你喜欢

转载自blog.csdn.net/weixin_38593332/article/details/82251357