WPFとVB.NETでカラーピッカーその5、もっと色を登録できるようにした
前回は3日前
の続き
WPFとVB.NETでカラーピッカーその4、パレットを作って色を登録できるようにした ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14048893.html
http://blogs.yahoo.co.jp/gogowaten/14048893.html
レイアウト変更
登録できる□マスを増やした、120*10*10=12000箇所
レイアウト
Gridパネルを使って縦半分に仕切った
0列目に色表示の画像が詰まっているStackPanelを配置
1列目にHSVとARGBの各スライダーを配置
0列目の横幅はAutoに指定、1列目の横幅は0列目の残り全部
0列目の実際の横幅は起動時に設定することにした
spp2が色表示の画像が詰まっているStackPanel
DesiredSize.WidthはMarginを含めた横幅
これが250以下なら250に指定、250以上ならそのまま
アプリ全体の横幅Widthの指定は
TabPaletteはパレットを配置しているTabControlのことで
これの幅+spp2の幅+20にした、+20はつじつま合わせみたいなもの適当
アプリ全体の縦幅は
SizeToContentプロパティにSizeToContent.Heightを指定
これで表示されているものがぴったりになる縦幅に自動で合わせてくれる
SV画像の大きさを100に指定して起動した場合
SV画像の大きさを255に指定して起動した場合
重ねて比べると
こうしてみるとあまり大きさ変わらないなあ
パレットの部分は
TabControlにTabItemを配置
その中にWrapPanelを配置
その中に□マスになるBorderを配置
デザイン画面とXAMLではTabControlだけ配置している
っていう1行だけ
色データの入れ物、グローバル変数
今回のパレットは複数のページ(Item)になったので色データを入れておく変数の型を「リスト」から「リストのリスト」に変更、ややこしい
PaletteARGBからList(Of PaletteARGB)に変更
対になるマスのBorderを入れておくのが
Private PaletteBorderMainList As New List(Of List(Of Border))
こういうList(Of List(Of Border))っていうのもありなんだなあ
パレットの□マスにするBorderの作成、120個作る
sukimaは□と□の隙間の間隔、bdSizeは□の大きさ
作った□120個をbListに入れて、それをPaletteBorderMainListに入れる
色データ120個はargbListに入れて、それをPaletteArgbMainListに入れる
このメソッドで前回と違うのはこれだけ
これはタブページの枚数分繰り返されることになる
全体のパレットになるTabControlにTabItemを配置してその中にWrapPanelを配置
565行目がさっきの120個の□を追加するところ
TabControlの横幅決定もなんかイマイチでつじつま合わせみたいになった
横に12個□を並べた時にぴったりにしたかったので
(□の横幅と隙間の大きさ)*12
これでいい気がするんだけどこれだと足りないのでいろいろ足している
SystemParameters.BorderWidthはWindowsで設定されているアプリの枠の太さ
だと思う、Windows 10だと1
色データのシリアライズ
コメントアウトになっているところは前回のもの
前回はバイナリ形式で保存していたけど今回はxml形式にした
それ以外はほとんど同じだけど
Dim serializer As New Xml.Serialization.XmlSerializer(GetType(List(Of PaletteARGB)))
の型指定がややこしい
GetType(List(Of PaletteARGB)))
っていうところ
バイナリ形式をテキストエディタで開くと
xml形式のものだと
ファイルサイズは大きくなってしまうけど
たかが知れているのでこっちのほうが良さそうって事になった
シリアライズと同じ感じの変更
右クリックメニューの動作
ここは前回と同じかな、リストの名前が変わっているだけ
アプリ起動時に色データファイルをデシリアライズして取得した色データをパレットに流し込む処理
今後バージョンアップでパレットの枚数を増やした時にエラーにならないようにしたけど、出番はないかなw
横に広げた時はスライダーだけ広がって、それ以外の画像やパレットのサイズは変化なし
実行ファイルダウンロード先
ヤフーボックス
コード
Wpf_test94_カラーピッカー5 - Visual Studio Team Services
https://gogowaten.visualstudio.com/DefaultCollection/WPF/_git/WPF_test6?path=%2FWpf_test94_%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%94%E3%83%83%E3%82%AB%E3%83%BC5&version=GBmaster&_a=contents
https://gogowaten.visualstudio.com/DefaultCollection/WPF/_git/WPF_test6?path=%2FWpf_test94_%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%94%E3%83%83%E3%82%AB%E3%83%BC5&version=GBmaster&_a=contents