谁能给我一段GDI的函数?

skyover 2006-08-26 06:01:09
使用指定字体(可能为ttf,fon,pfm...,且未安装在系统内)和前景色背景色写几个字的一段函数?
返回一个Bitmap或者一个指针都行。

谢了
...全文
209 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
skyover 2006-08-27
只要实现类似于fontViewer的功能即可。。
回复
jun_01 2006-08-26
好像是字体左边带一个圈的在c#中不能输出。选了那些字体会自动变成默认的字体。

不过所有的特效字体都是truetype的,其实只有系统里的个别字体不行。
回复
skyover 2006-08-26
事实上,我是用C#...可是GDI+不能实现使用除了TTF以外的字体。所以求助于GDI.
回复
jun_01 2006-08-26
另外,以上只是把东西显示在一个窗体中,如果是bitmap:

先创建一个兼容bitmap和兼容dc,把bitmap选入dc。

再用以上代码绘制。
回复
jun_01 2006-08-26
void xxx::OnPaint()
{
PAINTSTRUCT ps = {0};
BeginPaint(m_hWnd, &ps);

HFONT hFont = CreateFont(18, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_DEVICE_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH, _T("宋体"));


SetTextColor(ps.hdc, RGB(255, 0, 0));
SetBkMode(ps.hdc, TRANSPARENT);

HFONT hFontOld = (HFONT)SelectObject(ps.hdc, hFont);

FillRect(ps.hdc, &m_rcClient, (HBRUSH)GetStockObject(BLACK_BRUSH));

DrawText(ps.hdc, _T("wa ka ka"), -1, &ps.rcPaint, DT_LEFT | DT_TOP);

SelectObject(ps.hdc, hFontOld);

DeleteObject(hFontOld);

EndPaint(m_hWnd, &ps);
}
==========
但愿它没有笔误,如果你是用mfc,可能这段代码会让你觉得不爽。
回复
youngwolf 2006-08-26
CDC* pDC = GetDC();
CDC TempDC;
TempDC.CreateCompatibleDC(pDC);
CBitmap TempBmp;
TempBmp.CreateCompatibleBitmap(pDC, 100, 100); //位图大小
TempDC.SelectObject(&TempBmp);
//TempDC.SelectObject(...);//这里可以选择你想要的字体
//TempDC.TextOut(...);//这里写字
ReleaseDC(pDC);
//此时TempBmp就是你要的
回复
skyover 2006-08-26
那你先给我一段使用随意字体的?
回复
jun_01 2006-08-26
且未安装在系统内?

那不会了。。。。
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2006-08-26 06:01
社区公告
暂无公告