我在窗体中加了个picture的控件,类型设为Rectangle,变量为m_map,ID为IDC_MAP,我想在程序启动的时候在在picture中打出网格。我在OnInitDialog()加入:
CDC *pDC=m_map.GetDC();
pDC->LineTo(100,100); // 先画条线做个测试运行线没画出来,我将这两行代码放到OnPaint()中,线是画出来了,不过画到了窗体上,被picture覆盖了,我该怎么做才能在程序启动时让线画在picture上???
CDC *pDC=m_map.GetDC();
pDC->LineTo(100,100); // 先画条线做个测试运行线没画出来,我将这两行代码放到OnPaint()中,线是画出来了,不过画到了窗体上,被picture覆盖了,我该怎么做才能在程序启动时让线画在picture上???
做了,不过线还是没画出来。另外,我在OnInitDialog()中有设置picture的位置,
CRect rect;
GetWindowRect(&rect);
GetDlgItem(IDC_MAP)->SetWindowPos(NULL,rect.left+10,rect.bottom-235,384,192,SWP_NOZORDER); //设置picture在窗体中的位置如果加上这三行,线能画出来,不过picture的位置就变了,估计是位置没计算好;不加的话,线就画不出来郁闷!
int i;
CRect rect;
GetDlgItem(IDC_MAP)->GetClientRect(rect);
CPaintDC dc(GetDlgItem(IDC_MAP));
for (i=1;i<5;i++)
{
dc.MoveTo(0,rect.bottom/5*i);
dc.LineTo(rect.right ,rect.bottom/5*i);
}
CDialog::OnPaint();
CPaintDC dc(GetDlgItem(IDC_MAP));
dc.SetROP2(R2_NOT);
dc.LineTo(100,100); 线是可以画了,不过picture的背景颜色变了,我设置picture的颜色为White,画完线后picture变成了Etched,是不是在程序中还要设置picture的背景颜色?
可以用dc.FillSolidRect(rect,RGB(255,255,255));
涂成白的
而且,如果我不在OnPaint()中加重画,用个按钮来控制是可以的,只不过画出的线会消失。