Delphi・VCLでの、GDI+、Direct2D、及び、Delphi・FMX での文字描画で、反転文字描画を行うには まぁ 反転指示をした行列で指示すればまぁ出来るだろうなぁとは予想出来てるんですが、さて、極々普通の WindowsGDI ではどうやるんだろう? LOGFONT にはそういう指示は無いし?
とか思ってネットで検索したら
VC++では、SetWorldTransform() という機能があるらしい
と分かったんだけど、さて、Delphi では?
普通に WindowsAPI は使えるはずだけど・・・
とネットで検索したら、すぐに見つかったw
例えば PaintBox コンポーネントを貼り付けてそこに描く場合
var
t : TXForm;
・・・
with PaintBox1.Canvas do begin
SetGraphicsMode(Handle, GM_ADVANCED);
with t do begin
eM11 :=-1.0;
eM12 := 0.0;
eM21 := 0.0;
eM22 := 1.0;
eDx := 200.0;
eDy := 200.0;
end;
SetWorldTransform(Handle, t);
Font.Color := clBlue;
Font.Height := -32;
TextOut(0,0,'あいうえお');
end;
これで (200,200)の位置にX反転した「あいうえお」が描画出来る
・・・え? これだけなのか?w
uses節には何も追加してないし
ややこしい手続き等もしていない
こんな技があったのか・・・w 知らなかったwww
これを使えば、LOGFONT 使わなくても文字の変形や回転も出来る いつから出来るようになっていたんだろう? Windows2000から? そっか〜 まぁ、Delphi 7J までは Windows95/98/Me/NT で動くプログラムが作れたのでその時には使えなかったのだろうから別に良いんだけど
とか思ってネットで検索したら
VC++では、SetWorldTransform() という機能があるらしい
と分かったんだけど、さて、Delphi では?
普通に WindowsAPI は使えるはずだけど・・・
とネットで検索したら、すぐに見つかったw
例えば PaintBox コンポーネントを貼り付けてそこに描く場合
var
t : TXForm;
・・・
with PaintBox1.Canvas do begin
SetGraphicsMode(Handle, GM_ADVANCED);
with t do begin
eM11 :=-1.0;
eM12 := 0.0;
eM21 := 0.0;
eM22 := 1.0;
eDx := 200.0;
eDy := 200.0;
end;
SetWorldTransform(Handle, t);
Font.Color := clBlue;
Font.Height := -32;
TextOut(0,0,'あいうえお');
end;
これで (200,200)の位置にX反転した「あいうえお」が描画出来る
・・・え? これだけなのか?w
uses節には何も追加してないし
ややこしい手続き等もしていない
こんな技があったのか・・・w 知らなかったwww
これを使えば、LOGFONT 使わなくても文字の変形や回転も出来る いつから出来るようになっていたんだろう? Windows2000から? そっか〜 まぁ、Delphi 7J までは Windows95/98/Me/NT で動くプログラムが作れたのでその時には使えなかったのだろうから別に良いんだけど


このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。