2012-03-12 7 views
2

私はスプラッシュスクリーン4をWinアプリケーションにしようとしています。スプラッシュスクリーンとしての半透過PNG

マイセットアップ:

フォームの境界線のスタイルがnoneに設定されています。開始位置はスクリーン中心です。 フォームの背景イメージは、丸みを帯びたエッジとドロップシャドーで「PNG」に設定されています。私が設定しているコードで

this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
this.SetStyle(ControlStyles.UserPaint, true); 
this.SetStyle(ControlStyles.DoubleBuffer, true); 
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); 

this.AllowTransparency = true; 
this.BackColor = Color.Transparent; 

が、私はテストを、それはフォームが透明背景色を持つことができないと言います。

それはdropschadow(PNGの半透明の部分)私は、それはまた私のPNGに影響を与えるcuzを、0%に不透明度を設定したくないも

とのトラブルの原因となるcuzの私は、透明キーを設定する必要はありません。

実際、私はちょうどウィンドウとして表示された私のPNGだけがほしいです。それの上にいくつかのダイナミックテキストと将来のプロセスバーが追加されます...

アイデア?どのようにフォームが透明な背景を持つことができるのですかADOBE PHOTOSHOP CS5のスプラッシュ画面のようなものです。

+0

あなたが求めているのは、プロジェクト - >追加 - >新しいフォームをクリックしたデフォルトのフォームでは利用できません。あなたがしなければならないのは、デフォルトの機能を拡張することです。投稿したコードにはすでに頭出しが入っています。これは、拡張フォームクラス(またはその一部の変更バージョン)に追加するものです。追加するその他のものは、フォームの形状を定義するカスタム領域です。透明性を忘れるいくつかのリソースのリンクがあります。 – Jason

+0

リソースのリンク:http://stackoverflow.com/questions/5092216/c-sharp-form-with-custom-border-and-rounded-edges and http://stackoverflow.com/questions/1592876/c-sharp-ボーダレスフォーム移動可能透明性キーを使用しないので、透明性についてはわかりません。 – Jason

+1

正直なところ、透明キーを使用する代替方法の潜在的な手間と複雑さを避けるために、PNGの枠線を編集することもできます(Microsoft Paintのピクセルを消去するか、 Photoshop、選択範囲を反転して枠線を削除する)、それを自分で再描画します。 – Jason

答えて

3

私はWinフォームでこれを行う方法を探していたので、私は私のソリューションを共有すると思った。

私のスプラッシュスクリーンイメージは、透明な背景と透明な背景に広がるさまざまなシャドウを持つ.pngです。コントロールの背景として一般的でない色を透明キーとともに使用すると、半透明の影の下に醜いパッチが残されます。

私は私が表示したい画像に、フォームの背景画像を設定し、そのようOnPaintBackground機能をオーバーライドして、望ましい結果を得ることができた:

bool painted = false 
    protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs e) 
    { 
     if (painted) return; 
     e.Graphics.DrawImage(BackgroundImage, new System.Drawing.Point(0, 0)); 
     painted = true; 
    } 

私はこの古いスレッドをぶつけていますこれは、私が試したいくつかの異なるキーワードコンボのためのGoogleのトップ結果だからです。

も参照してください。Transparent Splash Screenこれは別のSO投稿からこの解決策を見つけた場所です。

+0

私はこれを試しましたが、その絵画のイメージは非常に大きいものでした。イメージの配置も、ストレッチするように間違って配置されていますが、それはまだ別の方法を示しています。また透明色も設定できません。 – KMX

+0

おそらく画像のサイズを変更する必要があります。フォームのClientSizeをイメージと同じサイズに設定しました。フォーム上の唯一のコントロールは、画像を含むPictureBoxでした。 –

+0

背景画像が変更されないために_really_は動作しません。それは 'バックグラウンドのビットマップを取得する'と似ています。 – n00dles

0

ここには、WPFスプラッシュ画面の簡単な例があります。これはすべてXAMLにあります。私はそれを動作させるためにC#の行を書いていませんでした。

<Window x:Class="WpfSplashScreen.SplashScreen" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     WindowStyle="None" Background="Transparent" AllowsTransparency="True" 
     ShowInTaskbar="False" SizeToContent="WidthAndHeight" 
     WindowStartupLocation="CenterScreen"> 
    <Image Source="logo.png" Stretch="None" /> 
</Window> 

これは単なる一例であり、それは有用なものにするためにいくつかのより多くのコードが必要になるが、それはスプラッシュ画面がWPFであるいかに簡単です。

+0

thx 4 ur code、私は既にスプラッシュスクリーンプロジェクトを開始しましたが、urサンプルに似ていますが、これはかなり複雑です;) とにかく、 WPFは私のソリューションです、私はWPFを知ってうれしいです。 ^^ – Ace

関連する問題