2009年2月4日水曜日

[C#]週番号の取得

VB6で言う所のDatePart(DateInterval.WeekOfYear, Now)をC#でやると。。。


Calendar cal = CultureInfo.CurrentCulture.Calendar;
CalendarWeekRule cwr = CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule;
DayOfWeek firstDay = DayOfWeek.Monday;

int weekNumber = cal.GetWeekOfYear(Target, cwr, firstDay);


こんな感じで取れました。
firstDayのあたりはお好みで。

2009年1月27日火曜日

[WPF]SliderとTextBoxのバインド

XAML側でのバインド方法はすぐわかったんですけど、ビジネスロジック側でバインドする方法がなかなか見つからなかった。。。

【XAMLでやるとき】







【C#でやるとき】

Binding db = new Binding();
db.ElementName = "Slider1";
db.Path = new PropertyPath("Value");
this.TextBox1.SetBinding(TextBox.TextProperty, db);

2009年1月23日金曜日

[WPF]画像をピクセル等倍で表示する

WPFの特徴として表示するコントロール等のサイズを実行環境に合わせて調整する機能があるようです。
参考「WPF アプリケーションのピクセル スナップ」

でも、これ、困るんです。
JPG画像を表示したときに勝手に拡大されたり縮小されちゃってぼやけた感じになるのです。(なったのです。)

画像は600*400で72dpiの画像(dpiは関係ない?)で、これを最大化したフォームの中央にピクセル等倍で表示したかったのですが、普通のWindowsFormのやり方では800*533.333...で表示されちゃいます。
これをオリジナルのサイズで表示するにはこうやると良いっぽい。

【XAML】


 


【C#】

BitmapImage bi= new BitmapImage(new Uri("C:\test.jpg"));
this.ImageArea.Source = bi;
BitmapSource SourceData = (BitmapSource)this.ImageArea.Source;
this.ImageArea.Width = SourceData.PixelWidth;
this.ImageArea.Height= SourceData.PixelHeight;