.Net(VB、C#)のWPFで半透明ウィンドウを作る
枠線なし、リサイズ可能、半透明のウィンドウを作る。
1 2 3 4 5 6 7 8 9 10 11 12 | <Window x:Class="WPFSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStyle="None" ResizeMode="CanResizeWithGrip" AllowsTransparency="True" Background="#80808080" SizeToContent="WidthAndHeight"> <Grid> <TextBlock FontSize="50">半透明ウィンドウ</TextBlock> </Grid> </Window> |
このようなウィンドウを作った場合、タイトルバーが存在しないため、そのままではドラッグによるウィンドウの移動ができない。
ウィンドウの移動を可能にしたい場合は、マウスクリックイベントのハンドラにDragMoveメソッドを呼び出すコードを記述する。
また、キー入力イベントのハンドラにCloseメソッドを呼び出すコードを記述すれば、任意のキーが入力された時にウィンドウを閉じるようにできる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Namespace WPFSample Class Window1 Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 '' マウスクリックイベントのハンドラにDragMoveメソッドを追加 AddHandler Me.MouseLeftButtonDown, AddressOf MouseLeftButton_Down '' キー入力イベントのハンドラにCloseメソッドを追加 AddHandler Me.KeyDown, AddressOf Key_Down End Sub Private Sub MouseLeftButton_Down(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Me.DragMove() End Sub Private Sub Key_Down(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Me.Close() End Sub End Class End Namespace |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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; namespace WPFSample { /// <summary> /// Window1.xaml の相互作用ロジック /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); // マウスクリックイベントのハンドラにDragMoveメソッドを追加 this.MouseLeftButtonDown += (sender, e) => { this.DragMove(); }; // キー入力イベントのハンドラにCloseメソッドを追加 this.KeyDown += (sender, e) => { this.Close(); }; } } } |