日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

實現字體鏡像的幾種方式

系統 3618 0
[size=medium][color=blue]??? 字體的鏡像一直是軟件沒有解決的一個問題,被困擾了幾年都沒人去研究解決。記得剛來公司的時候,也調查過這個任務,也找到一個很有價值的實例。當時找到萬一老師的delphi博客,上面有一篇文章《區域變換》 http://www.cnblogs.com/del/archive/2008/06/03/1212534.html 其中有:
    [/color][/size]
{建立路徑}
  BeginPath(cvs.Handle);
  cvs.TextOut(100, 0, 'F');
  EndPath(cvs.Handle);

  {將路徑轉換為區域}
  Rgn := PathToRegion(cvs.Handle);
......
7: begin {水平鏡像}
      TXF.eM11 := -1;
      TXF.eM12 := 0;
      TXF.eM21 := 0;
      TXF.eM22 := 1;
      TXF.eDx := 200; {需要右移一些才能看到}
      TXF.eDy := 0;
...
{執行變換并重繪}
  Rgn := ExtCreateRegion(@TXF, RgnDataSize, RgnData^);


  

?? 這幾部分的明顯實現了對字體鏡像的功能,由于當時只是看到功能,對這些東西的意義不是很透徹,所以這樣的建議被淘汰了,原因(最大的原因沒人明白其中的意義 )“好像是對一片區域的拷貝,這樣會有問題”。總覺得看著例子很正常啊!怎么會是有問題呢?后來在自己的調查中逐漸也了解了關于path,region的意義。path,region在gdi中也是兩種圖形,通過他們可以用簡單的方式畫出更加多樣的圖像。因為生成光繪的時候如果遇到中文字體的話,就沒辦法自己造字了,因為中文字有很多很多,所以這也是一個一直沒有解決的問題。
??? 后來在研究path圖形的時候,用到以下代碼可以取到字體的邊緣點數據。

    
    BeginPath(PDC);
    TextOut(PDC, x, y, PChar(TextStr), Length(TextStr));
    EndPath(PDC);

  

??? 這樣的話鏡像也可以很容易實現了:
    
    BeginPath(PDC);
    TextOut(PDC, x, y, PChar(TextStr), Length(TextStr));
    EndPath(PDC);

    count := GetPath(PDC, pts^, types^, 0);
    GetMem(pts, count * SizeOf(TPoint));
    GetMem(types, count);
    count := GetPath(PDC, pts^, types^, count);


  


定義:
    
    pts: ^TPArr;
    types: ^TTArr;
    count: Integer;

type
    TPArr = array[0..0] of TPoint;
    TTArr = array[0..0] of Byte;

  


??? 但是這樣畫出來的自己怎么看上去都沒有textout出來的那么清晰,但是也只能這樣了,好像有個GetGlyphOutline聽說得到的點數據會更精確一些,不過沒有確認,這個有些復雜。

??? 另外的方面就是directx 和 opengl 的實現方法,由于對這兩種技術一直沒有機會接觸,所以也就沒有發言權了。

實現字體鏡像的幾種方式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 綦江县| 大丰市| 赫章县| 屏边| 团风县| 喀喇沁旗| 连山| 绥江县| 阳朔县| 罗定市| 江山市| 行唐县| 田东县| 正镶白旗| 沾益县| 绥芬河市| 屯留县| 南丰县| 长子县| 青岛市| 元阳县| 武乡县| 兴宁市| 思南县| 留坝县| 历史| 北安市| 新野县| 昭觉县| 华阴市| 蒙自县| 江油市| 阳朔县| 宁安市| 枣强县| 革吉县| 上蔡县| 大同县| 通山县| 手游| 谷城县|