[C++] 获取字体点阵
来源:互联网 发布:怪物猎人p3数据库安卓 编辑:程序博客网 时间:2024/04/30 00:09
CMatrix
{
CMatrix
GLYPHMETRICS gm;
memset( &gm, 0, sizeof(gm));
MAT2 mat2;
mat2.eM11.value = 1; mat2.eM11.fract = 0;
mat2.eM12.value = 0; mat2.eM12.fract = 0;
mat2.eM21.value = 0; mat2.eM21.fract = 0;
mat2.eM22.value = 1; mat2.eM22.fract = 0;
//»ñÈ¡±¾×Ö·ûÐèÒªµÄ»º³åÇø´óС
DWORD cbBuffer = ::GetGlyphOutline( m_hDC
, nChar
, GGO_BITMAP
, &gm
, 0l
, NULL
, &mat2
);
if( cbBuffer == GDI_ERROR )
{
ASSERT( FALSE );
return matrix;
}
//¿ª±Ù»º³åÇø
LPBYTE lpvBuffer = new BYTE[cbBuffer];
//Ìî³ä×Ö·ûͼÏñ»º³åÇølpvBuffer
cbBuffer = GetGlyphOutline( m_hDC
, nChar
, GGO_BITMAP
, &gm
, cbBuffer
, lpvBuffer
, &mat2
);
UINT nStride = cbBuffer / gm.gmBlackBoxY;
int nMargeLeft = gm.gmptGlyphOrigin.x;
int nMargeTop = 64 - gm.gmBlackBoxY;
for( size_t y = 0; y < gm.gmBlackBoxY; y++)
{
for( size_t x = 0; x < nStride; x++)
{
for( int k = 0; k < 8; k++)
{
if( ( lpvBuffer[y*nStride+x] >> (7-k) ) & 1 )
{
matrix.SetElem( nMargeTop + y, 8 * x + k + nMargeLeft, 1);
}
}
}
}
delete [] lpvBuffer;
return matrix;
}
- [C++] 获取字体点阵
- [C++] 获取字体点阵
- [C++] 获取字体点阵
- [C++] 获取字体点阵
- 获取字体点阵
- 点阵字体文件查看器 c#(HZK16)
- [TTF字体]获取TTF字体的点阵信息
- 点阵字体的创建
- 输入点阵字体
- OpenGL点阵字体绘制
- 用GetGlyphOutline取字体点阵
- 点阵与失量字体
- 编程用的点阵字体
- 点阵字体(Bitmap font)
- ttf字体取点阵字模
- 点阵字体和矢量字体的区别
- 【C】12864点阵液晶显示
- [open source]点阵字体产生器发布
- 在Win2K/XP/2K3中 模拟实现VISITA效果对话框
- C程序员面试
- 右键文件关联
- 在console中 使用C Runtime 和 STL 显示 Unicode中文
- [MSSQL]将用户表 存储过程 变成系统的
- [C++] 获取字体点阵
- [WDM]驱动程序框架 我还没写完 好忙 没时间玩
- [C#] 生成略缩图
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- VS2005中使用主题统一页面风格
- [c++]记录Windows程序“应用程序错误”到异常日志
- 反汇编查看gcc行为
- java和C++的不同