C#の層状ウィンドウ上のアルファブレンド制御
-
14-11-2019 - |
質問
私は、WS_EX_LAYERED拡張スタイルセットを持つ階層形式を持っています。 CreateWindowex(...)API関数を使用して、子供「編集」コントロールを作成しました。それがそこにあるが描かれていない対照は塗られていない。
トップウィンドウでWS_EX_LAYEREDスタイルを使用するときは、WM_PAINTメッセージはもう送信されず、子コントロールもそれを受け取らないので、その理由が表示されないようになります。
フォームの不透明度が255に設定され、背景はUpdateLayeredWindow(...)APIを使用して透明な画像で描画されていることを確認してください。
編集コントロールの上にマウスを移動すると、テキストカーソルが表示され、その中のテキストをコピーできます。
私が対処しなければならない問題は、どういうわけかユーザーペイントを受け入れるためのコントロールを作ることです。
フォームと同じ手法でコントロールを描いてみましたが、その形式から互換性のあるDCを作成しましたが、これが可能なかどうかわからないため、私のコントロールはまだ描画されていません。
そのコントロールのwm_printclientを送信するとうまくいくか?その場合、DCは階層化された親フォームになりますか?私もこれを試してみましたが、それを作業することができませんでした。
標準形式: http://img580.imageshack.us/i/formy.png/
階層形式: http://img6.imageshack.us/i/layeredform.png/
私の質問は、編集コントロールをアルファブレンドユーザーペイントに受け入れる方法ですか?レイヤードフォームにアルファブレンドコントロールを描画するにはどうすればいいですか?
解決
最後に、私はそれをする方法を見つけました、
各コントロールのビットマップイメージを取得してフォームの背景に描画することは、次のようにしてください。
まだこれがベストプラクティスであるかどうかは
この方法はうまく機能しますが、完璧になり、より多くの対話+アルファ混和コントロールを追加する必要があります。その一方で、
ここには次のとおりです。> http://img84.imageshack.us/img84/3172/73845647.png