AGG第二十二课 conv_contour函数auto_detect_orientation的字体应用

1 提供如下的代码结构渲染字体

agg::conv_transform<...> conv (path,matrix);

agg::conv_curve<...> curve (conv);

agg::conv_contour<...> contour(curve);

curve.approximaltion_scale (scale);

contour.auto_detect_orientation (true);

contour.width (bold);

当bold大于零,表示放大,当bold小于零,表示缩小

2 采用conv_contour的理由

为了放大或者缩小字体

3 采用auto_detect_orientation的理由

从上面的所有关于该函数的说明都知道conv_contour扩展轮廓线实际上是会根据图形绘制的方向而有所不同,逆时针绘制的图形和顺时针绘制的图形,扩展轮廓线刚好相反,所以需要调用auto_detect_orientation设置为true,屏蔽顺时针和逆时针之间的区别。有些英文字母绘制是顺时针的比如a,逆时针比如c,详细可参考上传的图片,windows自带的图片查看器可打开!!

时间: 2024-11-08 09:05:38

AGG第二十二课 conv_contour函数auto_detect_orientation的字体应用的相关文章

NeHe OpenGL教程 第二十二课:凹凸映射

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十二课:凹凸映射 凹凸映射,多重纹理扩展: 这是一课高级教程,请确信你对基本知识已经非常了解了.这一课是基于第六课的代码的,它将建立一个非常酷的立体纹理效果. 这一课由Jens Schneider所写,它基本上是由第6课改写而来

AGG第二十六课 裁剪功能

AGG有四种类型的裁剪,分别工作在不同的层次 1. 基础渲染器Base Render 除非直接调用基础渲染器的绘制线段的方法,否则在一般情况下,都是在render_scanline的时候被调用,进行裁剪,这个时候已经进行了大量无用的工作.比如顶点源超出屏幕范围,在调用render_scanline函数之前,比如调用rasterizer对象的add_path函数,已经浪费大量的资源 2 光栅器rasterizer rasterizer主要应用于根据顶点源,生成线段的详细信息,这个时候调用裁剪,可以

JAVA学习第二十二课(多线程(二))- (多线程的创建方式一 :继承Thread类)

线程是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 创建新执行线程有两种方法. 一种方法是将类声明为 Thread 的子类.该子类应重写Thread 类的run 方法.另一种方法是声明实现 Runnable 接口的类.该类然后实现run 方法. 创建线程方式一:继承Thread类 一.创建线程的步骤: 1.定义一个类继承Thread类 2.覆盖Thread中的run()方法 3.直接创建Thread类子类的对象 4.调用start方法开启线程,并调用线程的任务run方法

AGG第二十八课 rasterizer的填充规则

AGG提供了很多额外的接口给SVG调用,因此很多的初学者像我,需要先学习SVG,然后了解接口的意义,才能够真正的掌握该接口,例如miter_join的含义. 1知识储备 字面上理解就是填充的规则,不就是图形的填充吗?哪有什么规则可言.对于单一的图形没有问题,如果是渲染圆环,两个环之间的区域填充颜色,该怎么办?这个时候就需要指定一种规则,一种填充的规则. AGG提供了两种算法来判断该点是否在填充区域内,如果该点在填充区域,然后填充该点.对于一个简单的无交叉的路径,是非常容易判断的.但是,对于一个复

Spring入门第二十二课

重用切面表达式 我们有的时候在切面里面有多个函数,大部分函数的切入点都是一样的,所以我们可以声明切入点表达式,来重用. package logan.study.aop.impl; public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } package logan.study.aop.im

linux学习笔记-第二十二课-LNMP环境搭建(一)

一.LNMP环境搭建前的准备 LNMP就是Linux系统下Nginx+MySQL+PHP这种网站服务器架构,所以需要下载mysql,php,与nginx这三套软件. MySQL : 32位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 64位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86

第二十二课 Shell的基础知识

一.shell介绍1.shell是一个命令解释器,提供用户和机器进行交互,每个用户都可以有自己特定的shell ,2.CentOS7 默认shell为bash,还有zsh,ksh它们有细节上的差异而已,我们可以查下系统中是否存在zsh: yum list |grep zsh bash有哪些特性? 二.命令历史(history)1.它的存储的文件为:/root/.bash_history 2.当我们退出终端后,它才会储存到以上的文件中.它的配制文件为:/etc/profile ,如果你修改里面的文

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十二课(迭代器、字节串)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 迭代器 Iterator: 用<>括号表示的一定是对象 什么是迭代器? 迭代器是访问可迭代对象的工具 迭代器是指用iter(obj) 函数返回的对象(实例) 迭代器可以用next(it) 函数获取可迭代对象的数据 迭代器函数iter和next iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象 next(iterator

第二十二课 单链表的具体实现

本节目标: 添加LinkList.h文件: 1 #ifndef LINKLIST_H 2 #define LINKLIST_H 3 4 #include "List.h" 5 #include "Exception.h" 6 7 namespace DTLib 8 { 9 10 template < typename T > 11 class LinkList : public List<T> 12 { 13 protected: 14 st