たとえば、Image コントロール (ウィンドウのないコントロールのようです) があり、それが TextBox の上にあることを確認したいとします。何をしても、イメージ コントロールはテキスト ボックスの上に表示されません。
方法はありますか?
PS PictureBox を使用できることはわかっていますが、透過性をサポートしていないため、Image コントロールが必要です。
たとえば、Image コントロール (ウィンドウのないコントロールのようです) があり、それが TextBox の上にあることを確認したいとします。何をしても、イメージ コントロールはテキスト ボックスの上に表示されません。
方法はありますか?
PS PictureBox を使用できることはわかっていますが、透過性をサポートしていないため、Image コントロールが必要です。
イメージ コントロールはフォーム自体に描画されるため、通常のテキスト ボックスの上に配置する方法はありません。そのため、常に他のウィンドウ コンポーネントの下に配置されます。
VB6 のインストール メディアがある場合は、(おそらく) 必要な処理を実行できる TextBox を含む描画 (ウィンドウなし) バージョンのコントロールがあります。http://support.microsoft.com/kb/184687
おそらくより良いのであれば、ある種のカスタムユーザーコントロール..テキストボックスをオーバーレイしたいのは何ですか?
イメージ コントロールは、図形と同様にグラフィカル コントロールと見なされるため、常にテキスト コントロールより劣ります。本当に透明な画像が必要な場合は、代わりに Microsoft 2.0 フォームを使用できます (それがある場合のみ)。画像はテキストボックスの上に置くことができ、Backstyle を透明 (0) に設定することで透明にすることができます。
私の他の答えとは完全に異なるアプローチ(したがって別の答え)ですが、フォームのAutRedrawとClipControlsをfalseに設定すると、Imageコントロールをウィンドウコントロールと同じレイヤーにレンダリングできます。場合によっては、フレーキーな再描画が発生する可能性がありますが、迅速な解決策として試すことができます。
VB6 アプリの上に一種の注釈レイヤーを追加するために、透明なオーバーレイ コントロールを作成しました。記憶から説明しようと思いますが、それで十分な情報が得られない場合は、返信していただければ、コードを掘り下げてみます。
最初に、新しい UserControl をアプリケーションに追加します。ImageEx、PictureEx、TransparntImage などの名前を付けます。使用する必要のあるプロパティがいくつかあります。コントロールがウィンドウ化されていることを確認して、他のウィンドウ化されたコントロールの上に配置できるようにします。MaskColor プロパティを見つけて、シアン (または透過領域を示すために使用する任意の色) に設定します。マスキング動作を有効にする追加のプロパティがある場合があります。プロパティを参照してください。コントロールの背景色を MaskColor の色に設定します。この時点で、非表示のコントロールができました.私のコントロールでは、注釈用にサーフェスの上にペイントしましたが、PaintPicture を作成したり、非常に単純な方法でイメージ プロパティを設定したりすることもできます。
もちろん、これを再利用可能なコントロールにするには、MaskColor やイメージなどを設定できる独自のプロパティをコーディングして、必要なフォームにこれらのいずれかをドロップできるようにする必要があります。
いくつかのリンク: