[Delphi:90373] フォントの重なりについて

211 views
Skip to first unread message

hiro

unread,
Apr 6, 2008, 5:53:32 AM4/6/08
to Del...@ml.users.gr.jp
hiroです お世話になってます 。
 
      for i := 1 to sLength do
       begin
        Canvas.TextOut(leftm,topm,Copy(S,i,1));
        topm:=topm+Fonthei;
       end;
などとして
Printer.Canvasに文字列を一時ずつ送ったとき フォントが重なって下になった文字が見えない部分が出来てしまうのを防ぐ
何か良い方法が有るでしょうか?

Hikaru Fukushi

unread,
Apr 6, 2008, 8:15:49 PM4/6/08
to Del...@ml.users.gr.jp
hiroさん、こんにちは。福士と申します。

> などとして Printer.Canvasに文字列を一時ずつ送ったとき
> フォントが重なって下になった文字が見えない部分が出来てしまうのを防ぐ
> 何か良い方法が有るでしょうか?

Fontheiを適切にしたい、という話ではないと思うので。

Canvas.TextOut(Win32APIのExtTextOut)で文字を描画するときは

> 現在選択されているフォント、背景色、および文字の色を使って
> テキストを描画します。
(MSDN LibraryのプラットフォームSDK→ExtTextOutより)

ということになっています。ここで背景の部分はDCの背景
モードが適用されます。Win32APIのSetBkModeを使用して背景
モードをTRANSPARENTに変更して描画するか(この場合は描画
終了後に背景モードを元に戻すことを忘れずに)、同等の効果を
もつCanvas.Brush.StyleをbsClearにして描画するか、いずれかの
方法が有効だと思います。


+=========+=========+=========+=========+=========+=========+=========+
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp
+=========+=========+=========+=========+=========+=========+=========+

hiro

unread,
Apr 6, 2008, 9:07:34 PM4/6/08
to Del...@ml.users.gr.jp
福士さん hiroです
有難うございました。 下記いずれでも解決できました。

with Printer do
begin
BeginDoc;
Canvas.Font.Name:=FontCombo.Text;
Canvas.Font.Pitch:=fpVariable;
Canvas.Brush.Style:=bsClear;//フォントの重なりをスケルトンにする
・・・
・・・

with Printer do
begin
BeginDoc;
Canvas.Font.Name:=FontCombo.Text;
Canvas.Font.Pitch:=fpVariable;
SetBkMode(Printer.Handle,TRANSPARENT);//フォントの重なりをスケルトンにする

・・・
・・・

Reply all
Reply to author
Forward
0 new messages