2012年10月21日日曜日

ゆっくりMovieMaker3 開発日記 - 10 「OpenTypeフォントで書かれたテキストの画像化」

本日の作業内容
  • 各種データクラスのデフォルト値の設定
  • 字幕・キャラ素材表情オブジェクトの設定分離
  • OpenTypeフォントの画像化が可能かどうかの調査
  • アイテム編集コントロールの作り込み



画像に文字を描く
http://dobon.net/vb/dotnet/graphics/drawstring.html

Googleで「C# 文字 画像化」等で検索すると、System.Drawingを用いたテキストの画像化の方法は見つかるのですが、これだと制約上「OpenTypeフォント」が使用できません。

たかがフォントだ。と割り切って、非対応と言うことにしても良いのですが、一度サポート掲示板で「OpenTypeフォントは使えないのですか?」という書き込みがあったので、できる限り意見を取り入れたく、ググってました。



がしかし、いくらググってもSystem.Drawingを用いたテキストの画像かは見つかっても、System.Mediaを用いたテキストの画像化が見つからない。(System.Mediaなら、OpenTypeフォントも扱える)

色々と検索ワードを変えてググってみるものの、いっこうに求めている方法は見つからない。
どうにか方法がないものかと考えていると、ふと以前(■2012/02/14 v2.0.0.0β1(クライアントの表記バージョン:v1.9.9.5))字幕の縁取り・影付き文字のプレビューに対応した時に使用した「outlinetextcontrol.cs」で、似たような処理をしていたことを思い出します。


outlinetextcontrol.csでは、テキストをGeometryに変換し、そこに縁取りや太字・イタリックなどの効果を付与していたのですが、今回はそれを画像化することで要求動作が実現できそうです。
具体的な方法はこちら
http://code.msdn.microsoft.com/windowsdesktop/CVBXAML-WPF-Windows-WPF-0738a600

今回、DESがpng表示に対応していないため、透過pngは使用できません。
なので、ファイルはbmpで保存。
Windows上のプレビューでは分かりませんが、DESに読み込ませると、きちんと背景が透過しているので、字幕としての使用が可能なようでした。

と言うわけで、問題解決。




読み手のことを一切考えない、まさしく日記って感じの文章が書けて満足。
たまにはこんな記事も良いかも。

1 件のコメント:

  1. 頑張ってください。
    いつもこっそり見てますw

    返信削除