C#

TrackBarのカスタムドロー

TrackBarの棒部分の色を変えたかったので、カスタムドローに挑戦してみる。 まずシンプルにトラックの背景色だけを変えてみる。で、できたのがこれです。 namespace TrackBarTest { public class CustomTrackBar : TrackBar { [StructLayout(LayoutKind.Sequ…

Image.Save()でのエラー

一見正しく書いたつもりでもImage.Save()で画像を保存するときに例外が発生することがあります。 特に、ExternalExceptionで"GDI+ で汎用エラーが発生しました。"というメッセージの場合は原因が掴みにくく、ハマることがあります。 複雑な原因の場合もあり…

構造体をStreamに書き込む

ビットマップファイルを作ったりするときに必要ですが、ちょっと面倒です。構造体サイズ分のアンマネージメモリを確保し、そこに構造体をコピー。 さらにそこからbyte[]へコピーしてStreamに書き込んでいます。 public static void WriteStructToStream(Syst…

PropertyGridでEnum型の値を任意の文字列で表示する

元ネタはぬるり。: EnumDisplayName 新しく自分で宣言する型の場合はこれでかなり楽になります。 ですが、既存の型については各値に属性を付けることができない(できるのかもしれませんがわからなかった)ので、これは自前でTypeConverterを作るしかないか…

高精度タイマー+匿名メソッド

.NET 2.0から匿名メソッド(デリゲート)というのがあり、 button.Click += delegate { }; みたいな書き方ができる というのを少し前に知ったのでメモ。 System.Threading.Timer timer = new System.Threading.Timer(new System.Threading.TimerCallback(del…

色選択ComboBox

設定ダイアログでの色選択部品はどういうインターフェースがいいのかなあと考えつつ、とりあえずComboBoxを作ってみることに。 KnownColorをアイテムに表示しつつ、"参照..."アイテムを選択するとColorDialogが出るというの感じ。KnownColorはSystemColorを…

Listの拡張

記事一発目、.NETネタで。 色々な場面で使うことが多いSystem.Collections.Generics.List<T>クラス。もう少し痒いところに手が届くように…ということで拡張して使っています。 using System.Text; using System.Collections.Generic; namespace MyClasses { pub</t>…