如何把windows的字体输出到一个位图?
———— 问题点数:47、回复次数:2Top
1 楼joke100(咱们去SLEEP吧...)回复于 2001-03-25 11:28:00 得分 47
在有该位图的内存DC上TEXTOUT,然后使用BitBlt传送到目标DC。。。
CDC* pDC = pWnd->GetDC(); // 将带文字的位图显示在这个DC上
CDC MemDC;
dcMemory.CreateCompatibleDC(pDC); // 创建内存DC
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); // 载入你的位图
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp); // 将位图选入内存DC
int x = 0;
int y = 0;
CString str = _T("嘿嘿");
dcMemory.TextOut(x, y, str); // 在内存DC上输出文字,此时内存中已有位图存在了
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY); // 将内存DC中的改造后的位图传送到本DC
dcMemory.SelectObject(pOldBitmap);
...
Top
2 楼happylaodu(青菜豆腐)回复于 2001-03-25 11:30:00 得分 0
1. 字体的设定:
LOGFONT logfont;
lstrcpy((LPSTR)logfont.lfFaceName,(LPSTR)"楷体_GB2312");
logfont.lfWeight=700;
logfont.lfWidth=20;
logfont.lfHeight=50;
logfont.lfEscapement=0;
logfont.lfUnderline=FALSE;
logfont.lfItalic=FALSE;
logfont.lfStrikeOut=FALSE;
logfont.lfCharSet=GB2312_CHARSET;
CFont myFont;
myFont.CreateFontIndirect(&logfont);
HFONT hFont=myFont; //不一定要。
//或用 HFONT hFont=CreateFontIndirect(&logfont);
2. 画到图上:
pDC->StretchBlt(m_pt.x,m_pt.y,m_size.cx,m_size.cy,&m_dcMem,0,0,m_bmInfo.bmWidth-1,
m_bmInfo.bmHeight-1,SRCCOPY); //位图画出来
HFONT hOldFont=(HFONT__ *)pDC->SelectObject(hFont);
//字体要事先设好,当作成员变量。
int oldMode=pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(50,20,"sample");
pDC->SetBkMode(oldMode);
Top




