📖 wpf-window-style-practice - Git hub に上げたもの
「 ウィンドウの形を消して、 スクリーンに ぽっかり浮かぶ ウィジェットみたいな ルックスもできるはずだぜ」
「 音楽サイトによくおいてそうなやつよね。絶対 四角なんて嫌だ、みたいなアプリケーション」
「 👆 初期状態で どんなウィンドウが出るかというと、 Windows 7 や Windows 10 では違うだろうし、
これからも Windows がアップデートするたびに違うと思うんだが……」
「 👆 タイトルバーや、リサイズのための 目には見えない端っこの当たり判定、 ウィンドウの影などが付いているぜ」
「 👆 WindowStyle="None"
を付けろだぜ」
「 👆 タイトルバーが 外れたぜ。 閉じるボタン をクリックできなくなったから、
お前のPCの知識で がんばって 閉じろだぜ」
「 👆 目には見えないが ウィンドウの端を持って サイズを変える、という機能は生きてるぜ」
「 👆 ResizeMode="NoResize"
を付けると、 ウィンドウの端っこをつまんでリサイズすることはできなくなるし、
なんでか ウィンドウの影まで消えるぜ」
「 わたしには それが何だか 分からない……、名前も分からないぜ。 超 邪魔」
AllowsTransparency="True"
Background="#00000000"
「 👆 上記の2つを付けろだぜ。
透明になると 何も見えなくなるから、緑色の楕円を塗っておくぜ」
「 👆 じゃあ ふつうにボタンを置こうぜ?
そして ボタンをダブルクリックしろだぜ」
namespace WpfWindowStylePractice
{
using System.Windows;
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// ウィンドウを閉じます
this.Close();
}
}
}
「 👆 this.Close()
って書いとけば ウィンドウは閉じれるな」
「 👆 メソッド名に マウスカーソルを合わせて右クリック、 名前の変更
を選べだぜ」
「 👆 CloseButton_Click
とかに名前を変えとけば 分かりやすいな。
ボタンの名前が 名詞ではなくて 動詞から始まると なんか気になるが……」
「 👆 名前の変更機能を使うと Button_Click
と紐づいていたところも 名前が変わってるんで」
「 こんな複雑な形だと ウィンドウの枠線を引くのも 手間だな」
「 輪郭線にマウスカーソルを合わせて 引っ張れば大きくなる、ということに 私たちは慣れてるんじゃない?」
「 図形によっては 外側ってどっち? ってなるんで 一般化は やりたくないぜ」
「 Tab
キーで ボタンへ移動して Enter
キーで押せるぜ」
「 タイトルの文字の当たり判定が 見た目よりでかくて、ボタンを覆ってしまってるんだぜ!」
「 クリック イベントを拾わずに うしろのオブジェクトに譲れないの?」
<!-- タイトル -->
<Label Grid.Row="1" Height="96" Margin="0,-400,0,0" FontSize="64"
Content="きふわらべの将棋盤"
Foreground="{StaticResource kifuwarabeJacketColor}"
HorizontalAlignment="Center"
IsHitTestVisible="False"/>
📖 [WPF/xaml] 上にかぶせたTextBlockを通り抜けて下のボタンがClickイベントを取れるようにする(IsHitTestVisible)
「 👆 IsHitTestVisible="False"
でいけた」
「 このウィンドウ、タイトルバー無いから、右へ左へ 動かせなくて 邪魔なんだけど?」
「 この紫色のところ マウスでドラッグして ウィンドウの移動できないの?」
「 デスクトップ画面上でウィンドウを動かしたいのよ。次は スクリーン上でのウィンドウの左上位置の座標を取得してちょうだい」
📖 WPF でウィンドウの位置やサイズを記憶・復元するには
📖 [WPF] ウィンドウ位置の保存、復元
📖 How to set the location of a WPF window?
「 👆 Windowオブジェクトが Left と Top のプロパティを持ってるから それを使えそうだぜ」
「 じゃあ マウスをプレスしたときに マウスカーソルのスクリーン座標と、
マウスカーソルのスクリーン座標と ウィンドウの左上のスクリーン座標の 差 を記録しておいて、
マウスドラッグ中に そのマウス位置をキャプチャーして
マウスカーソルの座標と ウィンドウの左上のスクリーン座標の差を考慮して
ウィンドウの Left と Top プロパティに与えろだぜ」
「 ぶつぶつ模様の つかむとこを作ろうと思うんだが、WPFって、網掛けのブラシは使えるのかだぜ?」
Crieitは個人で開発中です。
興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!