コンテンツの境界線の境界線の半径が5のウィンドウが必要です。写真のように:
C#とWPFでこれを行うにはどうすればよいですか?Windows APIでこれを行う方法はありますか?
コンテンツの境界線の境界線の半径が5のウィンドウが必要です。写真のように:
C#とWPFでこれを行うにはどうすればよいですか?Windows APIでこれを行う方法はありますか?
WPFは標準のオペレーティングシステムウィンドウでレンダリングされます。そのスタイルを変更する必要がある場合は、いわゆるウィンドウクロームを変更する必要があります。基本は、透明なホスティングウィンドウを作成し、WPFを使用してその中にすべてを描画することです。これにより、好きなようにドライブできます。もちろん、コーナーの半径も同様です。例については、こちらをご覧ください。この記事でもっと完全なもの。自分で検索したい場合は、キーワードwpfcustomchromeが役立ちます。
私はこの仕事をする方法を見つけました:
最初に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();
}
}
}
そして、私がアプリを実行すると: