齐白石的弟子擅长画牛:AGG AGG与FreeType库
来源:百度文库 编辑:九乡新闻网 时间:2024/05/16 08:02:17
AGG AGG与FreeType库2010-07-11 22:10
Linux、 FreeBSD等开源操作系统里一般使用FreeType来显示文字,Windows下的一些软件如Foxit也有FreeType的身影。
AGG的font_engine_freetype_int16字 体引擎就使用FreeType来取得字模,在Windows里,在使用font_engine_freetype_int16之前,我们得先编译好 FreeType:
- 从www.freetype.org下 载FreeType2,偶下载的是目前最新的freetype-2.3.9,解压。
- 以VC2005 Express为例,直接打开\builds\win32\vc2005里的freetype.sln编译即可。(不过这个版本的 freetype.sln好 像好点问题,要用文本编辑器打开,把第一行“Microsoft Visual Studio Solution File, Format Version 10.00”后面的“10.00”改成“9.00”才行)
- 对于其它编译器,如C++Builder,直接把\docs\INSTALL.ANY里列出的文件加入项目即可(不过加入这些东 西还真是比较麻烦,可以点 这里下载C++Builder的FreeType2库编译工程)。
- 把编译后的库文件(在\objs\win32里,注意编译版本)加入项目,并设置include路径为freetype- 2.3.9\include就可 以了
AGG使用FreeType的源代码:
- typedef agg::font_engine_freetype_int16 fe_type;
- typedef fe_type::path_adaptor_type vs_type;
- fe_type fe;
- if(!fe.load_font("c:\\windows\\fonts\\simhei.ttf",0,agg::glyph_ren_outline)) return;
- fe.height(36.0);
- fe.flip_y(true);
- fe.hinting(true);
- wchar_t *s = L"C++编程";
- std::vector data;
- vs_type vs;
- agg::conv_curve
ccvs(vs); - int x=20,y=100;
- for(;*s;s++)
- {
- if(!fe.prepare_glyph(*s)) continue;
- data.resize( fe.data_size() );
- fe.write_glyph_to( &data[0] );
- vs.init(&data[0], data.size(), x, y);
- x += fe.advance_x();
- y += fe.advance_y();
- ras.add_path(ccvs);
- agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba(0,0,1));
AGG AGG与FreeType库
AGG 成果
AGG 渲染器(Renderers)
AGG 插值器(Interpolator)
AGG 字体缓存管理器
AGG 光栅化(Scanline Rasterizer)
AGG 渲染缓存(Rendering Buffer)
AGG 线段生成器(Span Generator)
AGG 色彩类线段生成器
AGG 组合类线段生成器
用AGG实现高质量图形输出
AGG 坐标转换管道(Coordinate conversion pipeline)
AGG 使用字体引擎(Font Engine)
使用FreeType实现矢量字体的粗体、斜体、描边、阴影等效果
二十四史与四库全书
MFC类库与DirectXSDK
大境门与张库大道
钢板库建设与发展
余嘉锡与《四库提要辨证》
动态库与位置无关代码
钩子函数与动态链接库
linux 静态库创建与使用
领导与与员工
动态库与静态库的原理介绍1