■はじめに
今回は画像の表示と各種ボタンの使い方をやります。
キーワード:Image, Resources, ImageButton, 画像付きボタン, RepeatButton, 長押しボタン, HyperlinkButton, リンクボタン
[注意]
これまでの回で説明済みの操作方法等は、説明を省略したり簡略化している場合があります。
■開発環境
- Windows 10
- Visual Studio Community 2015 Update 3
- .NET Framework 4.x
■作ってみる
◇Image
まずは画像の表示をやります。
←この画像を保存して使ってください。
ファイル名は star.png
にします。
ソリューションエクスプローラーで「Properties」を開いて「Resources.resx」をダブルクリックします。
「リソースの追加」の▼
でドロップダウンから「既存のファイルの追加」で star.png
を選択します。
画像が追加されました。
ソリューションエクスプローラーの方もResources
フォルダが作成され、star.png
が追加されています。
star.png
を選択し、プロパティの「ビルドアクション」を Resource
に設定します。
ツールボックスからImageコントロールを画面デザイナにドラッグ&ドロップします。
ImageコントロールのSource
プロパティのドロップダウンから star.png
を選択します。
参考)Imageコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Source | 共通 | イメージファイル |
Stretch | 共通 | イメージ引き伸ばし方法(None/Fill/Uniform/UniformToFill)※参考 |
◇Button
次はボタンです。普通のは散々使ってきたので画像付きボタンを作ります。
ドキュメントアウトラインの「Grid」を右クリックし、「レイアウトの種類の変更」 - 「StackPanel」を選択します。
ボタンを2つ追加し、以下のようにプロパティを設定します。
<Button Content="Button" Height="30" Width="100" Margin="5"/>
<Button Content="Button" Height="30" Width="100" Margin="5"/>
下のボタンに StackPanel
をドラッグ&ドロップします。
StackPanelのOrientatil
をHorizontal
に設定します。
ボタンの中のStackPanel
にImage
をドラッグ&ドロップします。
画面デザイナだとわかりづらいので、ドキュメントアウトラインの方にドロップします。
Image
のSource
プロパティにstar.png
を設定、不要なプロパティを削除。
TextBlock
の方も以下のように設定します。
<Button Content="Button" Height="30" Width="100" Margin="5"/>
<Button Height="30" Width="100" Margin="5">
<StackPanel Orientation="Horizontal">
<Image Source="Resources/star.png"/>
<TextBlock Text="ボタン" VerticalAlignment="Center"/>
</StackPanel>
</Button>
参考)Buttonコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | ボタンに表示する内容 |
IsCancel | 共通 | キャンセルボタンにする(Esc キーで押した事になる) |
IsDefault | 共通 | デフォルトボタンにする(Enter キーで押した事になる) |
◇RepeatButton
押し続けることで連続的にクリックイベントが発生する長押しボタンです。
RepeatButton
はツールボックスには無いのでタグ入力します。
3つのボタンに同じイベントハンドラを設定します。
<RepeatButton Content="リピート1" Width="120" Click="RepeatButton_Click"/>
<RepeatButton Content="リピート2" Width="120" Delay="1000" Click="RepeatButton_Click"/>
<RepeatButton Content="リピート3" Width="120" Interval="500" Click="RepeatButton_Click"/>
<TextBlock x:Name="repeatText" Text="1" HorizontalAlignment="Center"/>
private void RepeatButton_Click(object sender, RoutedEventArgs e)
{
repeatText.Text = (int.Parse(repeatText.Text) + 1).ToString();
}
実行してみます。
ボタンを押し続けると下の数字がカウントアップしていきます。
「リピート2」ボタンはボタンを押してから1秒ぐらい経ってからカウントアップが開始します。
「リピート3」ボタンは1秒に2回ぐらいの間隔でカウントアップしていきます。
参考)RepeatButtonコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | ボタンに表示する内容 |
Delay | 共通 | ボタンを押してから繰り返し開始までの時間 |
Interval | 共通 | 繰り返し間隔 |
◇HyperlinkButton
そんなコントロールは無いですが、こんな感じで作れます。
TextBlock
を配置し、その中にHyperlink
タグを記述します。
NavigateUri
プロパティに起動するURLを、
RequestNavigate
イベントにリンククリック時の処理を記述します。
Hyperlink
タグの開始~終了タグの中に表示するテキストを記述します。
<TextBlock Margin="5">
<Hyperlink NavigateUri="http://help.qiita.com/" RequestNavigate="Hyperlink_RequestNavigate">Qiitaヘルプ</Hyperlink>
</TextBlock>
リンククリック時の処理を記述します。
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
// 絶対URIを起動
System.Diagnostics.Process.Start(e.Uri.AbsoluteUri);
// イベントを処理済みとしてマークする
e.Handled = true;
}
◇色々なコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Opacity | 外観 | 不透明度率。100で通常表示、0で完全に見えなくなる。 |
Visibility | 外観 | 表示/非表示 |
IsEnabled | 共通 | 有効/無効 |
IsTabStop | 共通 | TABキーでフォーカス移動するか |
ToolTip | 共通 | ツールチップ(ヒント) |
Width | レイアウト | 幅 |
Height | レイアウト | 高さ |
HorizontalAlignment | レイアウト | 水平位置 |
VerticalAlignment | レイアウト | 垂直位置 |
Margin | レイアウト | コントロール間の余白 |
Padding | レイアウト | コントロール内部の余白 |
FontFamily | テキスト | フォント名 |
FontSize | テキスト | フォントサイズ |
FontWeight | テキスト | 太字 |
おしまい