WPF:ResourceDictionary
WPFのResourceDictionary、外部からのロードの例。
<UserControl.Resources> <ResourceDictionary Source="/CommonResource.xaml"/> </UserControl.Resources>
VS2010以降?は頭に"/"入れないとプロジェクトを正しく参照しないっぽい。
古い記事とかだと"/"無しが見られるので注意。
画像フォーマットのコンバータ
実行ファイルが置いてあるディレクトリ内のBMPファイルを
全てPNGファイルにコピーするPythonスクリプト。
Python書くのは久しぶりなので、色々と雑なのは悪しからず。
ディレクトリの、日本語パスには対応していないっぽい(駄目だった)。
Python2.4使用。
それと The Python Imaging Library (PIL)を使用。
http://www.pythonware.com/products/pil/
# -*- coding: shift_jis -*- import os, sys import Image import glob extentionIn = "bmp" extentionOut = "png" def main(): print ">>>",extentionIn,"形式のファイルを列挙." curdir = os.getcwd() # カレントディレクトリ名を取得 files = glob.glob(unicode(curdir+ "/*." + extentionIn)) #ファイルを列挙 for file in files: print file print ">>>",extentionIn,"から",extentionOut,"へコンバート開始..." #ファイルをコンバート for file in files: im = Image.open(file) outfile = file.split('.')[0] + "." + extentionOut print outfile try: im.save(outfile) except IOError: print file + ":" "保存失敗" print ">>> コンバート終了." main() print "終了するにはEnterキーを押して下さいな." raw_input()
Pixel-Snapとか
SnapsToDevicePixelsプロパティをTrueにすることで、アンチエイリアスを無効化。
Keyboard.Focus(UIElement)
キーボードのフォーカスを取得させる。ImageとかでもOK。
画像リソース埋め込みメモ。
ビルドアクションは"Resource"、出力ディレクトリに「コピーしない」でOK。
<UserControl.Resources> <BitmapImage x:Key="Icon_Edit" UriSource="/Icon/pencil.png" /> <BitmapImage x:Key="Icon_ZoomIn" UriSource="/Icon/zoom_in.png" /> <BitmapImage x:Key="Icon_ZoomOut" UriSource="/Icon/zoom_out.png" /> <BitmapImage x:Key="Icon_ZoomReset" UriSource="/Icon/cabin.png" /> <BitmapImage x:Key="Icon_SaveAsPic" UriSource="/Icon/save_labled_edit.png" /> </UserControl.Resources>
http://code.msdn.microsoft.com/windowsdesktop/CVBXAML-WPF-Windows-WPF-0738a600
WPFでの画像出力処理。
//PNGでの出力サンプル。Encoderは他にもBMP、JPEG、GIFなどが存在。 bitmap = ... //対象の画像。writeableBitmapクラスとか。 PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmap)); var dlg = new SaveFileDialog(); dlg.Filter = "PNG(*.png)|*.png"; if (dlg.ShowDialog() == true) { FileStream stream = new FileStream(dlg.FileName, FileMode.Create,FileAccess.Write); encoder.Save(stream); stream.Close(); }
writeableBitmapの場合、全体をちゃんと更新してから保存すること。
※エディタ等で見えている部分だけ描画する方式をとっている時、
見えてない部分が初期化状態のままで真っ黒という罠を回避するため。
WPFのScrollBar
ScrollBarのThumb(つまみ/スライダー)の大きさの指定は、
scrollbar.ViewportSize
のプロパティを適切な値に指定してやればOK。
ぶっちゃけ「あの部分の名前なんだっけ」のために当該プロパティを延々探すハメに。。。
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.primitives.track.thumb.aspx
詳細はこちらが詳しいので参照。
計算式自体は下記の通り。
ThumbSize = TrackLength * ViewportSize / (Maximum – Minimum + ViewportSize)
つまるところ、「表示範囲が含むスクロール値の量」を指定すれば良い。
例えば、10段階スクロールできて、表示範囲に7段階分表示されているなら、
7を指定すればスクロールバーの70%の大きさになる。
WPFでScrollbarを直接使用する頻度がどの程度あるかは知らないけども、
独自のScrollViewerの様な物を作る時に役に立つかも。
丁度そういう実装をしていたのでメモ。
Boost
boostpro
http://www.boostpro.com/
インストーラーが提供されている。
色々楽できる(いつも忘れるのでメモ)。