16,550
社区成员
发帖
与我相关
我的任务
分享
public:
CMyDoc* GetDocument();
CDC *mdc;
CBitmap *cb;
HBITMAP bmp;
CMyView::CMyView()
{
// TODO: add construction code here
mdc=new CDC;
cb=new CBitmap;
bmp=(HBITMAP)::LoadImage(NULL,"1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
cb->Attach(bmp);
}
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
mdc->CreateCompatibleDC(pDC);
mdc->SelectObject(cb);
pDC->StretchBlt(0,0,800,1071,mdc,0,0,800,1071,SRCCOPY);
mdc->DeleteDC();
}
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
srand(time(NULL));
for(int i=1;i<8;i++)
for(int j=1;j<11;j++)
{
CPen pen(PS_SOLID, 2, RGB(0,0,255));
pDC->SelectObject(&pen);
pDC->Rectangle(Scale*j,Scale*i,Scale*(j+1),Scale*(i+1));
// CString str1; //此三行检查rec变量用
// str1.Format("%d",((*rec)+j+i*7-2)->id);
// MessageBox(str1);
}
mdc->CreateCompatibleDC(pDC); //创建一个与指定设备兼容的内存设备上下文环境(DC)
mdc->SelectObject(cb); //选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象
for(int m=1;m<8;m++)//char Bmp_name[13][7]; 从[1][1]kai
for(int n=1;n<11;n++)
{
if(((*rec)+n+m*7-2)->visible==true)
{
int id_num=((*rec)+n+m*7-2)->id;
// CString str1; //此三行检查id_num用
// str1.Format("%d",id_num);
// MessageBox(str1);
// MessageBox(Bmp_name[id_num]);
bmp=(HBITMAP)::LoadImage(NULL,Bmp_name[id_num],IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
// MessageBox(Bmp_name[id_num]);
cb->Attach(bmp);
mdc->SelectObject(cb);
// pDC->StretchBlt(0,0,Scale,Scale,mdc,0,0,Scale,Scale,SRCCOPY);
pDC->StretchBlt(Scale*n,Scale*m,Scale,Scale,mdc,0,0,Scale,Scale,SRCCOPY);
cb->Detach(); //这个很重要!!配合attach使用
}
}
// mdc->DeleteDC();
}
之后我点两次忽略才能重新出现图片是什么原因呢?