以下一段代码是在Picture框画线,但是不能画出,请高手指点:
CDC *m_CDC=m_StaticPicture.GetDC(); //m_StaticPicture是控件Picture对象,其类型风格是矩形框。
CPen pen;
i=m_RouteIndox+1;
pen.CreatePen(PS_SOLID,1, RGB(128,128,128));
m_CDC->SetROP2(R2_NOT);
oldpen=m_CDC->SelectObject(&pen);
m_CDC->MoveTo(0,0);
m_CDC->LineTo(10,10);
m_CDC->LineTo(0,10);
m_CDC->SelectObject(oldpen);
pen.DeleteObject();

解决方案 »

  1.   

    RGB(128,128,128)是不是和控件Picture对象的背景色相同? 
    换一种颜色试试
      

  2.   

    我觉得是picture的关系,通过这种获得cdc的方法好像不能在它上面画线
    你换一个控件试试看,或者直接在client里画一个rect,然后在里面用同样的方法画,我试过,可以的
      

  3.   

    你必须先得到他的句柄(CWnd),再从句柄得到DC.然后画图.
      

  4.   

    可以画出来,一个小三角,源程序如下:void CMytoolDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CMytoolDlg)
    DDX_Control(pDX, IDC_PICT, m_StaticPicture);
    //}}AFX_DATA_MAP
    }void CMytoolDlg::OnPaint() 
    {
             //其中IDC_PICT是控件Picture的ID
    GetDlgItem(IDC_PICT)->RedrawWindow(); CDC *m_CDC=m_StaticPicture.GetDC();
    CPen pen;
    //int i=m_RouteIndox+1;
    pen.CreatePen(PS_SOLID,1, RGB(128,128,128));
    m_CDC->SetROP2(R2_NOT);
    CPen* oldpen=m_CDC->SelectObject(&pen);
    m_CDC->MoveTo(0,0);
    m_CDC->LineTo(10,10);
    m_CDC->LineTo(0,10);
    m_CDC->SelectObject(oldpen);
    pen.DeleteObject(); if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
                       ... ...
      

  5.   

    从CStatic中派生一个类,加入WM_PAINT,并在其OnPanint中进行画就可以了
    // VectorPlot.h : header file
    class CVectorPlot : public CStatic
    // VectorPlot.cpp 
    void CVectorPlot::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting
    CBrush br(GetSysColor(COLOR_BTNFACE));
    //画圆
    dc.Ellipse(CRect(m_pntLeftTop,m_pntBottomRight));
    //画x,y方向的轴线
    .............
    }