C#で塗りつぶし

マップエディタとか作ってると塗りつぶしアルゴリズムとか欲しくなりますよね。私も欲しくなってずいぶん前に作りましたが、対象のアプリは完成せず放置プレイに。治そうとしてたところソースが読めなくなって実行したら落ちて何が何だかよくわからなくなってました。そのままにするのももったいないのでそっから掘りだして整形してライブラリにしたのでここで公開します。ビルド済みライブラリは
こちらから
最新のソースは
こちらから
ダウンロードできます。

使い方

using Kassyi.CsharpCommonLiblay;
を追加。塗りつぶしたいデータークラスに
IMap<TElement>
を実装させる。あとは
DrawingAlgorithms.Fill(map, fillstartPoint,p=>map.Data[p] = 1);
こんな感じで処理をラムダ式で指定してやればいいだけ。この場合mapの中のデーターを外から書き換えてますね。良くないw インターフェース実装させるのがめんどくさかったらソースいじって適当に改造してください。自動テストもあるんでそれを参考にするといいかも。

ライセンス

ライセンスはMSPLです。

謝辞

塗りつぶしのアルゴリズム自体は高速塗りつぶし法を元にしました。ありがとうございました。
//実際のところはC#に翻訳しただけだったり…w

そーりー

気分で作ったので突然構造が変わるかもしれません。また、自動テストで何度も厳しいチェックをしていますがバグがないとは言えないので暴走したらごめんなさい。


おまけであると便利かも拡張メソッドも入ってますw 名前が塗りつぶしライブラリじゃないのはもっと色々載せようと思ったんだけど気合とネタが足りなくてひとまずメモ帳で後悔(間違えではない)しまいました。サンプルアプリもつくろうと思ったけど中途半端で終わってます。

コメント

このブログの人気の投稿

初めてのC# -メモ帳でも作ってみる?-

【ファイル偽装】zipとしてもjpgとしても扱えるファイル

Javaにおいて引数付でスレッドを走らせる