[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/06/27(Wed) 03:22
投稿者名:KeroKero
Eメール:
URL :
タイトル:
ピクチャボックスへのテキスト描画について
はじめまして。
PictureBoxへのテキスト描画について不可解な現象が発生して困っております。

フォームにPictureBoxを配置(Name=pic,AutoRedrawはTrue)し、
下記のコードを実行しました。

    With pic
        .Cls
        .BackColor = RGB(0, 0, 255) '背景は青
        .ForeColor = RGB(255, 255, 255) '描画色は白
        .FontSize = 72
        
        pic.Print "XYZ"
        
    End With
    SavePicture pic.Image, "c:\test.bmp"

保存されたファイルをmspaintで開き、バケツツールにて背景(青色)の部分を
白色で塗りつぶすと、マシンによって文字の輪郭が残ってしまう場合があります。
(アンチエイリアス処理(?)されたような状態になっている感じです)

問題が発生したマシンではディスプレイ設定の「画面の色」が32bitでした。
他に手がかりはない状態です。

解決方法をご存知の方はご教授下さい。よろしくお願い致します。

投稿時間:2007/06/27(Wed) 06:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ピクチャボックスへのテキスト描画について
> 保存されたファイルをmspaintで開き、バケツツールにて背景(青色)の部分を
> 白色で塗りつぶすと、マシンによって文字の輪郭が残ってしまう場合があります。
> (アンチエイリアス処理(?)されたような状態になっている感じです)

画面のプロパティ→デザイン→効果→次の方法でスクリーンフォントの縁を
滑らかにするにチェックが入っていませんか?

[ClearType]又は[標準]に設定しているとそのようになります。

投稿時間:2007/06/27(Wed) 11:31
投稿者名:KeroKero
Eメール:
URL :
タイトル:
Re^2: ピクチャボックスへのテキスト描画について
花ちゃん様、ご回答有り難うございます。

> 画面のプロパティ→デザイン→効果→次の方法でスクリーンフォントの縁を
> 滑らかにするにチェックが入っていませんか?
>
> [ClearType]又は[標準]に設定しているとそのようになります。

ご指摘の通りでした。

ところで画面のプロパティに影響されずにテキストを描画する
方法はあるのでしょうか?
(複数台のマシンにインストールする必要があり、個々に設定を
変更してもらうのは問題があるかもしれないので...)

よろしくお願い致します。

投稿時間:2007/06/27(Wed) 12:39
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ピクチャボックスへのテキスト描画について
> ところで画面のプロパティに影響されずにテキストを描画する
> 方法はあるのでしょうか?

何をされているのか知りませんが、プログラムの方の問題ではないので
画面のプロパティ の方で変更するのが筋かと思います。

>ところで画面のプロパティに影響されずにテキストを描画する
>方法はあるのでしょうか?
上記だけを回避するなら、そのようにすればいいだけですよ。

即ち、変更されない(影響されない)フォント(FixedSys 等の)を使用すればいいのでは。

投稿時間:2007/06/27(Wed) 14:34
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: ピクチャボックスへのテキスト描画について
> ところで画面のプロパティに影響されずにテキストを描画する
> 方法はあるのでしょうか?

Print メソッド以外の方法で描画するとか。

たとえば、(コード量は増えますが)GdipDrawString API で描画するようにすれば、
GdipSetTextRenderingHint API(必要に応じて GdipGetPixelOffsetMode も)を
使って、アンチエイリアスの有無(品質)を制御できます。

投稿時間:2007/06/28(Thu) 01:02
投稿者名:KeroKero
Eメール:
URL :
タイトル:
Re^4: ピクチャボックスへのテキスト描画について
花ちゃん様、魔界の仮面弁士様、ご回答有り難うございます。

やりたいことは、任意のテキストをBMPファイルとして保存した上で
別の画像に合成したいのです。
本来、画像にテキストを上書きすればOKなのですが、マシンによって
使用できるフォントが異なっているため、BMPとして保存したかったのです。
その際にテキスト境界が汚くなってしまうのが問題でした。

魔界の仮面弁士様ご指摘のGdipDrawString APIを用いた方法でやってみたいと思います。

ありがとうございました。