1

透明な背景とクリックスルー可能な非長方形の形状のスプラッシュ画面をフォームにロードするようにしたい。これは可能ですか?作り方 ?

同じvsプロジェクト内で(スプラッシュ画面の一種として)WPFウィンドウを呼び出すForm1を作成する方法があるかどうか疑問に思いました。

VS-> addのproject-explorerでプロジェクトを右クリックしようとしましたが、WPFウィンドウを検索していました。しかし、私が追加できるのは「wpfUserControll」だけです。

これまでのところ良好ですが、アプリケーションを起動すると、System.Windows.markup.IQueryAmbientへの参照を追加する必要があるというエラーが表示されますが、リスト(.NET)に見つかりません。

私は何を間違っているのですか?WPFウィンドウをFormsアプリケーションプロジェクトに実装する適切な方法は何ですか?

すべての提案に感謝します。

編集:

これはAdobeFlashProfessional CS6のスプラッシュ画面であり、私が欲しいものをほぼ正確に説明しています。半透明および全透明の部分を含む非長方形の画像 http://webalazar.com/wp-content/uploads/2012/09/Adobe-Flash-Professional-CS6.png

4

2 に答える 2

3

これを行うには 3 つの方法があります。

1.) 完全に WPF に移行し、WinForms 固有のものが必要な場合は、WPF アプリケーションで WinForms .NET ライブラリを参照します。

2.) 必要なすべての WPF 機能 (スプラッシュ スクリーンなど) を含む新しい WPF ライブラリ (コードで参照できる .NET dll) を作成し、新しい WinForms .NET アプリを作成して WPF を参照します。プロジェクトを WinForms プロジェクトに追加し、WinForms アプリから WPF ライブラリを呼び出します。

3.) 何を達成しようとしているのか (特別なグラフィックス ウィンドウやその他の「ファンシーな」UI など)、およびそれにどれだけの時間/労力を費やしても構わないと思っているかに応じて、DirectX を学習するか、「gdi32. dll' をインポートし、その GDI+ 機能をインポートします。

編集:

WindowForm C# アプリで WPF スプラッシュ スクリーンを取得する手順は次のとおりです。

1.) 新しい C# Windows フォーム アプリケーションを作成し、好きなように呼び出して、好きな場所に保存します。

2.) ファイル -> 追加 -> 新しいプロジェクト

3.) 新しい C# WPF ユーザー コントロール ライブラリを追加し、SplashScreen という名前を付けます。同じファイルの場所に保存しようとすることに注意してください。別の場所に保存する場合は、必ず別の場所を選択してください。

4.) SplashScreen WPF ライブラリに作成されたデフォルトの「UserControl1.xaml」を削除します

5.) WPF プロジェクトを右クリックし、[追加]、[ウィンドウ] の順にクリックして、SplashScreen.xaml という名前を付けます。

6.) SplashScreen.xaml の既存のコードをすべて次のコードに置き換えます。

<Window x:Class="SplashScreen.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"
        Title="SplashScreen" WindowStartupLocation="CenterScreen">
    <Image Source="logo.png" Stretch="None" />
</Window>

7.) WPF プロジェクトを右クリックして [追加] -> [既存のアイテム] を選択し、ファイル フィルターが [すべてのファイル] に設定されていることを確認して、[logo.png] を選択します。

8.) 新しくインポートした「logo.png」のプロパティを表示し、「ビルド アクション」が「リソース」に設定されていることを確認します。

9.) Windows フォーム プロジェクトで、[追加] -> [新しい参照] を右クリックし、[プロジェクト] タブを選択して、作成したばかりの [SplashScreen] WPF プロジェクトを選択します。

10.) Windows フォーム プロジェクトで、[追加] -> [新しい参照] を右クリックし、[.NET] タブを選択して、[PresentationFramework]、[PresentationCore]、[WindowsBase]、および [System.Xaml] ライブラリを選択します。

11.) Windows フォーム プロジェクトの 'Program.cs' ファイルで、次の操作を実行できます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace MyGame
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Create a new 'splash screen instance
            SplashScreen.SplashScreen ss = new SplashScreen.SplashScreen();
            // Show it
            ss.Visibility = System.Windows.Visibility.Visible;
            // Forces the splash screen visible
            Application.DoEvents();
            // Here's where you'd your actual loading stuff, but this
            // thread sleep is here to simulate 'loading'
            System.Threading.Thread.Sleep(5000);
            // Hide your splash screen
            ss.Visibility = System.Windows.Visibility.Hidden;
            // Start your main form, or whatever
            Application.Run(new Form1());
        }
    }
}
于 2012-10-29T18:18:03.620 に答える
0
  1. Windows フォームを作成する
  2. FormBorderStyleなしに設定します
  3. TransparencyKey#00FF00に設定
  4. BackgroundImage不要な領域の色を #00FF00 に設定した png 画像に設定します
  5. 終わり!

フォームの背景画像として画像をロードすると、そのすべてのピクセルが透明キーと比較され、一致した場合はそのピクセルが透明としてレンダリングされます。

于 2012-10-29T18:54:33.483 に答える