广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 8101 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
mainchen 葫芦墩家族
个人头像
个人文章 个人相簿 个人日记 个人地图
社区建设奖
头衔:
版主
级别: 版主 该用户目前不上站
版区: 星侨五术软体
推文 x22 鲜花 x36
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Delphi][教学] [教学] 提取 Windows 的 TTF 字体轮廓矢量数据
提取Windows的
TTF字体轮廓矢量数据
西安飞机工业公司设计部 朱朝阳

--------------------------------------------------------------------------------

---- Windows系统的TTF字体具有字体优美、可无级缩放等优点,最适合应用在CAD类图形处理等软件中。直接分析TTF字体的文件格式并读出每个字的轮廓矢量是相当困难的,我们可以借助API函数来方便地获得这些数据。

---- 调用函数GetGlyphOutline可以得到一个字的轮廓矢量或者位图。

---- 函数原型如下:

DWORD GetGlyphOutline(
HDC hdc, // ?#93;备句柄
UINT uChar, // 将要读取的字符
UINT uFormat, // 返回数据的格式
LPGLYPHMETRICS lpgm, // GLYPHMETRICS结构地?#125;
DWORD cbBuffer, // 数据缓冲区的大小
LPVOID lpvBuffer, // 数据缓冲区的地?#125;
CONST MAT2 *lpmat2 // 转置矩?#125;的地?#125;
);

---- 其中,参数uFormat取值如下:

GGO_NATIVE - 要求函数返回字符的轮廓矢量数据;
GGO_METRICS - 函数仅返回GLYPHMETRICS结构至lpgm;
参数lpgm指向GLYPHMETRICS结构,该结构描述字符的位置。
参数lpmat2指向字符的转置矩?#125;。

---- 本文以下C++ Builder?#123;序示范如何在画布上以指定的大小绘制字符串。

---- 首先,建立一个新项目,在主窗口上放置一个Image控件,一个Edit控件,一个Button控件;然后,在Button的点击事件中?#91;入如下代码:

#include < stdlib.h >

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect ClipRect = Rect(0,0,Image1->Width,Image1->Height);
Image1->Picture = 0;
StretchTextRect(Image1->Canvas, ClipRect, Edit1->Text);
}

---- 添?#91;如下子?#123;序:

//---------------------
void TForm1::StretchTextRect(TCanvas
*pCanvas, TRect ClipRect, AnsiString Text)
{
pCanvas->Font->Size = 100;
pCanvas->Font->Name = 「细明体";
pCanvas->Pen->Color = clBlack;
pCanvas->Pen->Mode = pmCopy;
pCanvas->Pen->Style = psSolid;
pCanvas->Pen->Width = 1;
int XSize = ClipRect.Width() / Text.Length();
int YSize = ClipRect.Height();

MAT2 mat2; // 转置矩?#125;,不用变换
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;

GLYPHMETRICS gm,gmm;

// 首 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被panasonic732在2004-12-20 23:27重新编辑 ]



献花 x0 回到顶端 [楼 主] From:未知地址 | Posted:2003-05-21 10:16 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.088445 second(s),query:15 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言