如题!!!
解决方案 »
- 各位,用wise打包后,怎么将卸载程序的快捷方法添加到开始菜单里面。
- VC++6.0里可以用GDI+吗?
- 请教:请问谁写过游戏杆校正程序.
- 够简单吧:菜鸟在窗体上放了一个按钮和一张图片,我想点击一下按钮,图片就向左移动一点,怎么实现呢?
- 关于LPTSTR,用惯了CString......
- vs2012 (rc) + windows8 (release preview)dll工程引用问题,vs2010无此问题 --结局
- Debug版正常而Release版出错,可能是什么原因?
- vc编译的32位的dll,在64位win 7上的问题
- 为什么用CStdioFile的ReadString读取文本,到其中的一行乱码(可能是unicode)就不能往下读了,怎么解决
- 本人创办了一小型的软件公司,现在有资本家有意合作,请问有什么好的合作方式吗?
- ASC码
- DLL如何发消息给EXE文件
HDC hMemDC = ::CreateCompatibleDC(hdc);
if(hMemDC == NULL)
return NULL;
CSize cs(GetWidth()+GetPenWidth(),GetHeight()+GetPenWidth());
HBITMAP hBmp = ::CreateCompatibleBitmap(hdc,cs.cx,cs.cy);
..... HBITMAP hOldBmp =(HBITMAP) ::SelectObject(hMemDC,hBmp);
PatBlt(hMemDC,0,0,cs.cx,cs.cy,WHITENESS); ........
CDC::FillSolidRect就可以了------------------------------------就这样
CDC* pDrawDC = pDC;
CBitmap bitmap;
CBitmap* pOldBitmap;CRect rect;
GetClientRect(&rect);
//========================================================
if (dc.CreateCompatibleDC(pDC))
{
if (bitmap.CreateCompatibleBitmap(pDC,
rect.Width(),
rect.Height()))
{
OnPrepareDC(&dc,NULL);
pDrawDC = &dc;
pOldBitmap = dc.SelectObject(&bitmap);
}
}
//========================================================
pDoc->Draw(pDrawDC,ViewID);
pDrawDC->TextOut(1,1,*str);
dc.DPtoLP(&rect);
//========================================================
if ( pDrawDC != pDC )
{
pDC->BitBlt( 0, 0,rect.Width(), rect.Height(),
&dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
bitmap.DeleteObject();
}
各位帮忙给看看,是什么问题?
pOldBitmap = dc.SelectObject(&bitmap);
dc.FillSolidRect(&rect,RGB(255,255,255));
{
CRect rect;
GetClientRect(rect);
CDC memDC;
CBitmap temBmp;
memDC.CreateCompatibleDC(pDC);
temBmp.CreateCompatibleBitmap(&memDC,rect.Width(),rect.Height());
CBitmap* pOldBmp=memDC.SelectObject(&temBmp);
CBrush brush(RGB(0,255,255));
CBrush* pOldBrush=memDC.SelectObject(&brush);
memDC.Rectangle(rect);
COLORREF oldColor;
oldColor=memDC.SetBkColor(RGB(255,0,0));
memDC.TextOut(100,100,"CSDN");
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,
0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
memDC.SetBkColor(oldColor);
}
上面设置的字体背景为红色,但显示时全是黑色的把字都盖了
那个定义的也不行刷子
帮我解释一下这个问题,有什么解决方法
做最下面的画布。-----------------------------
http://ma3310.vicp.net
{
CRect rect;
GetClientRect(rect);
CDC memDC;
CBitmap temBmp;
memDC.CreateCompatibleDC(pDC);
>>>temBmp.CreateCompatibleBitmap(&memDC,rect.Width(),rect.Height());
CBitmap* pOldBmp=memDC.SelectObject(&temBmp);
CBrush brush(RGB(0,255,255));
CBrush* pOldBrush=memDC.SelectObject(&brush);
memDC.Rectangle(rect);
COLORREF oldColor;
oldColor=memDC.SetBkColor(RGB(255,0,0));
memDC.TextOut(100,100,"CSDN");
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
>>>memDC.SelectObject(pOldBrush);
memDC.SetBkColor(oldColor);
}FROM MSDN:
A memory DC exists only in memory. When the memory DC is created, its display surface is exactly one monochrome pixel wide and one monochrome pixel high. Before an application can use a memory DC for drawing operations, it must select a bitmap of the correct width and height into the DC.
>>>temBmp.CreateCompatibleBitmap(&pDC,rect.Width(),rect.Height());
CDC dc;
CDC* pDrawDC = pDC;
CBitmap bitmap;
CBitmap* pOldBitmap;
CRect rect;
GetClientRect(&rect);
//========================================================
if (dc.CreateCompatibleDC(pDC))
{
if (bitmap.CreateCompatibleBitmap(pDC,
rect.Width(),
rect.Height()))
{
OnPrepareDC(&dc,NULL);
pDrawDC = &dc;
pOldBitmap = dc.SelectObject(&bitmap);
}
}
//========================================================
//pDoc->Draw(pDrawDC,ViewID);
>>>>>>>>>pDrawDC->FillSolidRect(0,0, 100,100, RGB(255,0,0));
pDrawDC->TextOut(1,1,_T("ABC"));
dc.DPtoLP(&rect);
//========================================================
if ( 1)//pDrawDC != pDC )
{
pDC->BitBlt( 0, 0,rect.Width(), rect.Height(),
&dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
bitmap.DeleteObject();
}