3

コンテンツの境界線の境界線の半径が5のウィンドウが必要です。写真のように:

ここに画像の説明を入力してください

C#とWPFでこれを行うにはどうすればよいですか?Windows APIでこれを行う方法はありますか?

4

2 に答える 2

5

WPFは標準のオペレーティングシステムウィンドウでレンダリングされます。そのスタイルを変更する必要がある場合は、いわゆるウィンドウクロームを変更する必要があります。基本は、透明なホスティングウィンドウを作成し、WPFを使用してその中にすべてを描画することです。これにより、好きなようにドライブできます。もちろん、コーナーの半径も同様です。例については、こちらをご覧くださいこの記事でもっと完全なもの。自分で検索したい場合は、キーワードwpfcustomchromeが役立ちます。

于 2012-06-27T13:04:02.147 に答える
0

私はこの仕事をする方法を見つけました:

最初にWindowsAPICodePackが必要でした。それを、http: //archive.msdn.microsoft.com/WindowsAPICodePack/からダウンロードし   ました。ダウンロードした後、解凍して、/binariesフォルダーに必要なDLLを見つけました。必要なDLLIIは2つあります。

Microsoft.WindowsAPICodePack.dll

Microsoft.WindowsAPICodePack.Shell.dll

次に、Visual Studio(.NET 3.5)でWPFアプリケーションを作成し、これら2つのdllをアプリケーションに追加しました。

[ソリューションエクスプローラー]タブで参照を右クリック>[参照の追加]

次に、MainWindow XAMLコードを変更しました:

<WindowsAPICodePackShell:GlassWindow x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WindowsAPICodePackPresentation="clr-namespace:Microsoft.WindowsAPICodePack.Controls.WindowsPresentationFoundation;assembly=Microsoft.WindowsAPICodePack.Shell"
xmlns:WindowsAPICodePackShell="clr-namespace:Microsoft.WindowsAPICodePack.Shell;assembly=Microsoft.WindowsAPICodePack.Shell"
Title="WPF AeroGlass Demo" Height="300" Width="300" Loaded="GlassWindow_Loaded">
<Border CornerRadius="10" Background="Gray"></Border>
</WindowsAPICodePackShell:GlassWindow>

そして私のMainWindow.xaml.csコード:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.WindowsAPICodePack.Shell;

namespace WpfApplication1
{
    /// 
    /// Interaction logic for MainWindow.xaml
    /// 
    public partial class MainWindow : GlassWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void GlassWindow_Loaded(object sender, RoutedEventArgs e)
        {
            SetAeroGlassTransparency();
        }
    }
}

そして、私がアプリを実行すると: ここに画像の説明を入力してください

于 2012-06-28T08:57:08.307 に答える