1 直接打开资源中的位图:
void CLoadDDBView::OnDraw(CDC* pDC)
{
CBitmap MemBitmap;
MemBitmap.LoadBitmap (IDB_1);
pDC->SelectObject (&MemBitmap);
}2 双缓冲作图
void CLoadDDBView::OnDraw(CDC* pDC)
{
CDC dcMem;
dcMem.CreateCompatibleDC (pDC);
dcMem.MoveTo (0,0);
dcMem.LineTo (100,100);
pDC->BitBlt (0,0,500,500,&dcMem,0,0,SRCCOPY);
}都有问题!都不能显示!我晕了!
void CLoadDDBView::OnDraw(CDC* pDC)
{
CBitmap MemBitmap;
MemBitmap.LoadBitmap (IDB_1);
pDC->SelectObject (&MemBitmap);
}2 双缓冲作图
void CLoadDDBView::OnDraw(CDC* pDC)
{
CDC dcMem;
dcMem.CreateCompatibleDC (pDC);
dcMem.MoveTo (0,0);
dcMem.LineTo (100,100);
pDC->BitBlt (0,0,500,500,&dcMem,0,0,SRCCOPY);
}都有问题!都不能显示!我晕了!
解决方案 »
- 弱弱的请教一个多线程调用问题
- VC中有没有不是全局函数却相当于全局函数的
- 请问如何实现圆角窗体?
- [求助]获取2000/xp下进程cpu时间和内存使用问题
- 我在对话框程序中调用了一个输入对话框,要求用户输入信息。但我想调用之前改变输入对话框中的静态文本的内容,如何做到?
- 树控件如何实现在每个条目前加个checkbox?
- 拥有Activx控件的网页,放在unix上的web服务器上可以的吗?
- IP协议定义了数据保,称为数据报(datagram),它是internet上数据通信的基本单元,这些数据报不超过1000字节长??
- 各位大侠请帮忙!在VC中能不能直接编写HTML....
- 我的一个对参数的困惑?
- 回答别人的帖子,专家分怎么算的
- 怎样“本地做抓图,用winsock传输,接收端直接显示。每秒25帧(局域网)。”
bitmap.CreateCompatibleBitmap(pDC,500,500);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&bitmap);
dcMemory.TextOut(100,0,"显示位图");
dcMemory.LineTo(300,300);
pDC->BitBlt(10,10,500,500,&dcMemory,0,0,SRCCOPY);
{
CDC dcMem;
dcMem.CreateCompatibleDC (pDC);
CBitmap MemBitmap;
dcMem.SelectObject (&MemBitmap);
dcMem.MoveTo (0,0);
dcMem.LineTo (100,100);
pDC->BitBlt (0,0,500,500,&dcMem,0,0,SRCCOPY);
} 还是不行!
但:void CLoadDDBView::OnDraw(CDC* pDC)
{
CDC dcMem;
dcMem.CreateCompatibleDC (pDC);
CBitmap MemBitmap;
MemBitmap.LoadBitmap (IDB_1); //新加一句
dcMem.SelectObject (&MemBitmap);
dcMem.MoveTo (0,0);
dcMem.LineTo (100,100);
pDC->BitBlt (0,0,500,500,&dcMem,0,0,SRCCOPY);
}
则可以!为什么,难道非要选入一张位图?还有,正确的例子也没有写:
MemBitmap.CreateCompatibleBitmap (pDC,500,500);
这句话呀!
写了反而错误!
你的代码怎么显示一片漆黑?而且也没有LineTo也没有画出来啊
默认的画笔是黑色的,当然线条看不见了。
初始化的。你在cdMem上面画个其它颜色(比如白色)的矩形覆盖它,
不就是不是黑色了吗?!
void CLoadDDBView::OnDraw(CDC* pDC)
{
CBitmap MemBitmap;
MemBitmap.LoadBitmap (IDB_1);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap *OldBmp = MemDC.SelectObject(&MemBitmap);
pDC->BitBlt(0, 0, Width, Height, &MemDC, 0, 0, SRCCOPY);
MemDC.SelectObject(OldBmp);
MemDC.DeleteDC();
MemBitmap.DeleteObject();
}2 双缓冲作图
void CLoadDDBView::OnDraw(CDC* pDC)
{
CDC dcMem;
dcMem.CreateCompatibleDC (pDC);
CBitmap bmpMem;
bmpMem.CreateCompatibleBitmap(pDC, 500, 500);
CBitmap *bmpOld = dcMem.SelectObject(&bmpMem);
dcMem.PatBlt(0, 0, 500, 500, WHITENESS);
dcMem.MoveTo (0,0);
dcMem.LineTo (100,100);
pDC->BitBlt (0,0,500,500,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(bmpOld);
dcMem.DelecteDC();
bmpMem.DeleteObject();
}
你要BitBlt 到设备上啊 !
dc创建的时候系统会给他挂一个系统的缺省位图,单色的。
所以一般需要先选了位图才能画。
好好查查msdn吧。
void CLoadDDBView::OnDraw(CDC* pDC)
{
CBitmap MemBitmap;
MemBitmap.LoadBitmap (IDB_1);
pDC->SelectObject (&MemBitmap);
}
不能使用局部变量 ==> CBitmap MemBitmap;
1 即使是从资源中加载位图,也需要创建双缓冲。
2 双缓冲中:即使MemDC什么也不做,也是需要选入一张位图,原因正如所说:
>>dc创建的时候系统会给他挂一个系统的缺省位图,单色的。
>>所以一般需要先选了位图才能画。