3560|0

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

我用VC写了一个基于Freetype2 的DEMO程序,按照网上的例子,但不知道为什么,对小号的字体不支持。 [复制链接]

我用VC写了一个基于Freetype2 的DEMO程序,按照网上的例子,但不知道为什么,对小号的字体不支持。

        // TODO: Add extra initialization here
        FT_Init_FreeType( &library );

        FT_New_Face( library, "simfang.ttf", 0, &face );
       
        //大小要乘64.这是规定。照做就可以了。
       
        //FT_Set_Char_Size( face,16<< 6, 16 << 6, 96, 96);
        FT_Set_Pixel_Sizes( face, 21, 0);

void PrintChar(int x,int y,int ch,HDC hdc)
{
        FT_Load_Glyph( face, FT_Get_Char_Index( face, ch), FT_LOAD_DEFAULT  );
        //得到字模
        FT_Glyph glyph;
        int result = FT_Get_Glyph( face->glyph, &glyph );
        //TT_Get_Glyph_Metrics(_ttg,&_ttgm);
        //转化成位图
       
        int result0 = FT_Render_Glyph( face->glyph, FT_RENDER_MODE_NORMAL );

        //FT_RENDER_MODE_NORMAL
        int result1 = FT_Glyph_To_Bitmap( &glyph, ft_render_mode_normal, 0, 1 );
       
        FT_BitmapGlyph  bitmap_glyph = (FT_BitmapGlyph)glyph;
       
        //取道位图数据
        FT_Bitmap&  bitmap=bitmap_glyph->bitmap;
        TRACE("bitmap.num_grays:%d\n",bitmap.num_grays);
        //把位图数据拷贝自己定义的数据区里.这样旧可以画到需要的东西上面了。
        int width = bitmap.width;
        int height = bitmap.rows;
       
        unsigned char* expanded_data = new unsigned char[ 3 * width * height];
       
        for(int j=0; j         {
                for(int i=0; i < width; i++)
                {
                        expanded_data[3*(i+(height-j-1)*width)]=
                                expanded_data[3*(i+(height-j-1)*width)+1] =
                                expanded_data[3*(i+(height-j-1)*width)+2] =
                                (i>=bitmap.width || j>=bitmap.rows) ?
                                0 : bitmap.buffer[i + bitmap.width*j];
                        SetPixel(hdc,i + x,j + y,RGB(expanded_data[3*(i+(height-j-1)*width)],expanded_data[3*(i+(height-j-1)*width)],expanded_data[3*(i+(height-j-1)*width)]));
                }
        }
       
        TRACE("height:%d,width:%d\n",height,width);
        free(expanded_data);
               
}

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表