ユーザーに何らかの色を選択してもらうことはよくある。そのようなときに便利なのが、今回紹介するCoding4Fun Toolkitで提供されている3種類のカラーピッカーコントロールだ。
powered by Insider.NET
Windowsランタイムアプリを開発するときに欲しくなるコントロールとして、色を選択するためのコントロール(以降、総称として「カラーピッカー」という)が挙げられる。背景色やフォントの色、あるいは描画する線の色などをエンドユーザーに設定してもらうようなアプリを開発するときには、必須といってもよいだろう。オープンソースのコントロールキット「Coding4Fun Toolkit」には3種類のカラーピッカーが含まれており(次の画像)、本稿ではそれらを使う方法を紹介する(利用に際しては必ずライセンス情報を確認すること)。なお、本稿のサンプルは「Windows Store app samples:MetroTips #101」からダウンロードできる。
ユニバーサルプロジェクトを使ってユニバーサルWindowsアプリを開発するには、以下の開発環境が必要である。本稿では、無償のVisual Studio Community 2013 with Update 4を使っている。
*1 SLAT対応ハードウエアは、Windows Phone 8.1エミュレーターの実行に必要だ。ただし未対応でも、ソースコードのビルドと実機でのデバッグは可能だ。SLAT対応のチェック方法はMSDNブログの「Windows Phone SDK 8.0 ダウンロードポイント と Second Level Address Translation (SLAT) 対応PCかどうかを判定する方法」を参照。なお、SLAT対応ハードウエアであっても、VM上ではエミュレーターが動作しないことがあるのでご注意願いたい。
*2 事前には「Windows 8.1 Update 1」と呼ばれていたアップデート。スタート画面の右上に検索ボタンが(環境によっては電源ボタンも)表示されるようになるので、適用済みかどうかは簡単に見分けられる。ちなみに公式呼称は「the Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2 update that is dated April, 2014」というようである。
*3 Windows Phone 8.1エミュレーターを使用しないのであれば、32bit版のWindows 8.1でもよい。
*4 マイクロソフトのダウンロードページから誰でも入手できる(このURLはUpdate 4のもの)。
*5 本稿に掲載したコードを試すだけなら、無償のExpressエディションやCommunityエディションで構わない。Visual Studio Express 2013 with Update 4 for Windows(製品版)はマイクロソフトのページから無償で入手できる。Expressエディションはターゲットプラットフォームごとに製品が分かれていて紛らわしいが、Windowsランタイムアプリの開発には「for Windows」を使う(「for Windows Desktop」はデスクトップで動作するアプリ用)。また、2014年11月12日(米国時間)に新しくリリースされたVisual Studio Community 2013 with Update 4(製品版)もマイクロソフトのページから無償で入手できる。Communityエディションは本稿執筆時点では英語版だけなので、同じ場所にあるVisual Studio 2013 Language Packの日本語版を追加インストールし、[オプション]ダイアログで言語を切り替える必要がある。
本稿では、紛らわしくない限り次の略称を用いる。
Visual Studio 2013 Update 2(Update 3/4も)では、残念なことにVB用のユニバーサルプロジェクトのテンプレートは含まれていない*6。そのため、本稿で紹介するコードはC#のユニバーサルプロジェクトだけとさせていただく。なお、VBのプロジェクトでもCoding4Fun Toolkitは利用できる(PCLは除く)。
*6 VB用のユニバーサルプロジェクトは、2015年にリリースされるといわれているVisual Studio 2015(開発コード「Visual Studio 14」)からの提供となるようだ。「Visual Studio UserVoice」(英語)のリクエストに対する、2014年6月18日付けの「Visual Studio team (Product Team, Microsoft)」からの回答による。
Coding4Fun Toolkitは、ソースコードがGitHubで公開されており、パッケージはNuGetから導入できる。プロジェクトに導入する手順などは、「WinRT/Metro TIPS:オープンソースのコントロール集「Coding4Fun Toolkit」を使うには?[ユニバーサルWindowsアプリ開発]」をお読みいただきたい。
以下では、NuGetからCoding4Fun Toolkitをプロジェクトに導入してあるものとして、話を進める。
エンドユーザーに純色(=各色相において最も彩度が高い色)を選んでもらう場合は、シンプルなColorSliderコントロール(Coding4Fun.Toolkit.Controls名前空間)が適しているだろう(次の画像)。
上の画像のUIは共有プロジェクトに置いたユーザーコントロールに実装してあり、次のコードのようになっている(通常の画面でも同様)。エンドユーザーがColorSliderコントロールで選択した色はColorプロパティで得られる。
<UserControl
……省略……
xmlns:c4f="using:Coding4Fun.Toolkit.Controls"
>
……省略……
<StackPanel ……省略…… >
<TextBlock FontSize="18" >ColorSlider</TextBlock>
<c4f:ColorSlider x:Name="ColorSlider1" Width="400" Height="40"
Orientation="Horizontal" IsColorVisible="True" Color="Red" />
<TextBlock FontSize="15" Text="{Binding Color, ElementName=ColorSlider1}" />
</StackPanel>
……省略……
色相だけでなく彩度/明度*7もエンドユーザーに決めてもらうには、ColorPickerコントロール(Coding4Fun.Toolkit.Controls名前空間)がよいだろう(次の画像)。
上の画像のUIはユーザーコントロールに実装してあり、次のコードのようになっている(通常の画面でも同様)。エンドユーザーがColorPickerコントロールで選択した色は、やはりColorプロパティで得られる。
<UserControl
……省略……
xmlns:c4f="using:Coding4Fun.Toolkit.Controls"
>
……省略……
<StackPanel ……省略…… >
<TextBlock FontSize="18" >ColorPicker</TextBlock>
<c4f:ColorPicker x:Name="ColorPicker1" Width="400" Height="400" Color="#00a2e8" />
<TextBlock FontSize="15" Text="{Binding Color, ElementName=ColorPicker1}" />
</StackPanel>
……省略……
*7 ColorPickerコントロールのソースコードを眺めてみたところ、HSV色空間(H:Hue=色相/S:Saturation=彩度/V:Value=値または明度)を使っていた。マイクロソフトOfficeや「ペイント」などで使われているHSL色空間(H:Hue=色相/S:Saturation=彩度/L:Lightness=輝度)とは異なるものだ。MSDN「色」も参照のこと。
カラーピッカーというと、六角形に配置された色のパレットから選択するものを思い浮かべる人もいるだろう。Coding4Fun Toolkitには、それもColorHexagonPickerコントロール(Coding4Fun.Toolkit.Controls名前空間)として用意されている(次の画像)。
上の画像のUIはユーザーコントロールに実装してあり、次のコードのようになっている(通常の画面でも同様)。エンドユーザーがColorHexagonPickerコントロールで選択した色は、これもColorプロパティで得られる。
<UserControl
……省略……
xmlns:c4f="using:Coding4Fun.Toolkit.Controls"
>
……省略……
<StackPanel ……省略…… >
<TextBlock FontSize="18" >ColorHexagonPicker</TextBlock>
<c4f:ColorHexagonPicker x:Name="ColorHexagonPicker1"
GreyScaleSteps="20" Color="#ffed60" />
<TextBlock FontSize="15" Text="{Binding Color, ElementName=ColorHexagonPicker1}" />
</StackPanel>
……省略……
オープンソースのCoding4Fun Toolkitでは、用途に応じた3種類のカラーピッカーコントロールが提供されている。エンドユーザーに色を決めてもらう必要があるアプリでは、きっと活用できるだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.