BackStyleプロパティが透明のLabelのようなOCXを作成しようとしています。
UserControlのBackStyleプロパティを透明にすると、
UserControlのhDCにDrawTextしたものまで透明になってしまいます。
UserControl上に標準のLabelは載せたくありません。
環境はVB6です。よろしくお願いします。
MaskColor / MaskPicture の指定が、正しく行われていないのかも。
設定は、
MaskColor=&H8000000F&
MaskPicture=(なし)
です。MaskColorが適用されるのはMaskPictureを設定した場合ですよね。
> MaskColorが適用されるのはMaskPictureを設定した場合ですよね。
ですね。
> MaskPicture=(なし)
(親フォームではなく) UserControl に直接描画するのであれば、
どこを透過させ、どこを可視にするのかを指定するために、
MaskPicture の指定が必要かと思います。
# そのほか、必須ではない設定項目として、HitTestイベントとか、
# Windoless/ClipBehavior/HitBehavior プロパティとか。
> (親フォームではなく) UserControl に直接描画するのであれば、
> どこを透過させ、どこを可視にするのかを指定するために、
> MaskPicture の指定が必要かと思います。
これは設定された文字が表示されるように
動的にMaskPictureに設定する画像を作成するということでしょうか。
> 動的に
そうなりますね。
輪郭部分にアンチエイリアスがかけて、半透化させるような
事はできませんが、単純に文字部分だけ切り抜くような形でよいなら、
文字列を描画するときに、それに対応した Picture オブジェクトを
動的に生成して、それを指定すれば大丈夫でしょう。
# もし、速度面で間に合わないようであれば、コンテナ側に
# 直接描画する事を検討してもよいのかも。
そうですね、ちょっとその2パターンを試してみます。
コンテナ側に直接描画することにしました。
デザイン時に配置しているコントロールを移動するときに
コンテナ側を再描画したいのですが、移動が終了したときの
イベントなどありましたら、おしえてください。
コントロールのリサイズはPaintイベントが発生するので、
そのタイミングで再描画できるのですが…
ツイート | ![]() |