現在、私はtranspareny効果に依存するWinformsアプリケーションを持っています。しかし、これは後ろの諺に絶対的な痛みであることが判明しています!イム学習としてWinformsは、特に透明性を扱っていません。C#Winforms-WPF interop
透明ビットとWPFコンポーネントをWPFコンポーネントで使用する方が簡単かどうかは分かりませんでした(WPFにアプリケーション全体を移動するのが好きですが、現実的ではありません)。私はWPFについては何も知らないので、ここでは理由はわかります!私はconsidereingいたものだった。
1)のWinFormsユーザーコントロール内のWPFコンポーネントを、例えばホストWPFコントロールの例:
<UserControl x:Class="WindowsFormsApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<Rectangle Name="rectangle1" Stroke="White" Fill="Black" RadiusX="10" RadiusY="10" Opacity="0.7" />
<Rectangle Margin="57,101,43,99" Name="dialog" Stroke="Gray" Fill="White" RadiusX="10" RadiusY="10" />
</Grid>
</UserControl>
2)WPFコントロールの白い四角形(ダイアログ)内のWinFormsユーザーコントロール(コンテンツ)をホスト。 3)コンテンツ(Winformsユーザーコントロール)がWPF-Controlの親でコードを呼び出せるようにします。
まず第一に、物事...
- はこれを行うために合理的なものですか私は間違ってツリーを吠えていますか?
- これは簡単な方法で実現できますか?
- 誰でも私をここで助けることができますか?
- 最後に、私にa)WPFを学び、b)自立するのに役立つオンラインリソースはありますか?
@TK:WPFとWinformsを混在させた透明度のレンダリングは問題であり、その解決可能かどうかはわかりません。 WPFとWinFormsは根本的に異なります。私は、相互にホストすることができますが、オーバーレイされたコンポーネントは正確にはレンダリングされないことを、どこか読んで思い出しています。彼らは明確な地域を必要とします。私はアダム・ネイサンの本でそのことを読んでいると信じていますが、ここには言及していないので、間違って覚えている可能性があります。 –
@Greg D:あなたは絶対に正しいと信じています。問題は、各コントロール(WPFまたはWinforms)が独自の空域を必要とすることです。これは、任意の時点で、画面上のピクセルがWPFピクセルまたはWinformピクセルのいずれかであり、その2つのハイブリッドではないことを意味します。私はWinformsコンポーネントをBMPファイルとしてレンダリングしてから、別のコントロールのバックグラウンドとしてbmpファイルをレンダリングすることでこの問題を解決しました。メッシー...はい、それは十分にうまくいくようです。 –
賢明なアプローチ。あなたの質問への答えでブレンド効果のビットマップとしてレンダリングするために、winformsコントロールをどのように入手したのかを投稿できますか? :) winformsコントロールの変更をキャプチャし、ビットマップを適切に更新するか、または透過効果の間にwinformsが静的を制御していますか? –