1

重複の可能性:
C# WinForms を使用した透明な画像

を持つアプリをコーディングしていNo Borderます。また、BackgroundImage[これはスライドショーとして表示されます。タイマーで変更]。

サンプル画像 [透明性を体験するには、これをダウンロードする必要がある場合があります] :

画像

これを達成するために、次の2つの方法を試しました。

  • 使用WindowsFormsApplication:

    TransparencyKeyのプロパティを使用してForm、同じBackgroundColour を設定しました。[使用しFuchsiaました]。これで、境界線の一部のピクセルの色がFuchsia.

  • 使用WindowsPresentationFoundation:

    の を使用し、AllowsTransparencyを画像Windowに設定するBackgroundと、画像が透過表示で正しく表示されました。ここで、ペイントで以前にメモした [余白を設定して] ポイントに別の画像を追加する必要があります。 例:元の背景から画像を切り取ってから、前にメモした余白を設定して、フォームの正しい場所に配置しました。 しかし、これは間違ったマージンを設定する原因になります!

    アップデート :

    WPF ではBackgroundImage、グリッドで を使用すると余白の問題は解決しますが、透明度が機能せず、透明な領域が白くなります!

この問題から抜け出すためのヒントを教えてください!

4

2 に答える 2

3

画像に起因する問題です。たとえば、Paint.NET にロードして拡大すると、個々のピクセルを見ることができます。左上隅は次のようになります。

ここに画像の説明を入力

エッジのピクセルが部分的に透明になっていることに注意してください。したがって、この画像をフクシアなどの背景の上に描画すると、それらのエッジ ピクセルは灰色ではなくなり、背景と混ざり合っての色になります。TransparencyKey と一致しなくなったため、ビデオ アダプターはそれらをフィルター処理しません。それらはマゼンタのさまざまな色合いのフリンジとして表示されます。

画像を編集して、透明度のない「ハードな」エッジにする必要があります。

于 2012-06-12T10:07:06.133 に答える
0

WPF ウィンドウで:

WindowStyle=なし

透明性を許可=True

背景=透明

そして、あなたのコンテンツに画像を入れてもうまくいきませんか?

于 2012-06-12T08:54:56.273 に答える