BackStyleが透明のLabelのようなOCXを作成


ひばお  2006-02-08 20:56:18  No: 94055

BackStyleプロパティが透明のLabelのようなOCXを作成しようとしています。
UserControlのBackStyleプロパティを透明にすると、
UserControlのhDCにDrawTextしたものまで透明になってしまいます。
UserControl上に標準のLabelは載せたくありません。
環境はVB6です。よろしくお願いします。


魔界の仮面弁士  2006-02-08 21:41:51  No: 94056

MaskColor / MaskPicture の指定が、正しく行われていないのかも。


ひばお  2006-02-08 22:27:24  No: 94057

設定は、
MaskColor=&H8000000F&
MaskPicture=(なし)
です。MaskColorが適用されるのはMaskPictureを設定した場合ですよね。


魔界の仮面弁士  2006-02-08 23:25:11  No: 94058

> MaskColorが適用されるのはMaskPictureを設定した場合ですよね。
ですね。

> MaskPicture=(なし)
(親フォームではなく) UserControl に直接描画するのであれば、
どこを透過させ、どこを可視にするのかを指定するために、
MaskPicture の指定が必要かと思います。

# そのほか、必須ではない設定項目として、HitTestイベントとか、
# Windoless/ClipBehavior/HitBehavior プロパティとか。


ひばお  2006-02-09 00:44:47  No: 94059

> (親フォームではなく) UserControl に直接描画するのであれば、
> どこを透過させ、どこを可視にするのかを指定するために、
> MaskPicture の指定が必要かと思います。

これは設定された文字が表示されるように
動的にMaskPictureに設定する画像を作成するということでしょうか。


魔界の仮面弁士  2006-02-09 01:04:52  No: 94060

> 動的に
そうなりますね。

輪郭部分にアンチエイリアスがかけて、半透化させるような
事はできませんが、単純に文字部分だけ切り抜くような形でよいなら、
文字列を描画するときに、それに対応した Picture オブジェクトを
動的に生成して、それを指定すれば大丈夫でしょう。

# もし、速度面で間に合わないようであれば、コンテナ側に
# 直接描画する事を検討してもよいのかも。


ひばお  2006-02-09 03:29:36  No: 94061

そうですね、ちょっとその2パターンを試してみます。


ひばお  2006-02-10 22:25:26  No: 94062

コンテナ側に直接描画することにしました。

デザイン時に配置しているコントロールを移動するときに
コンテナ側を再描画したいのですが、移動が終了したときの
イベントなどありましたら、おしえてください。

コントロールのリサイズはPaintイベントが発生するので、
そのタイミングで再描画できるのですが…


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加