Paint.NETのプラグインを作ってみた
マイクロソフトが開発を支援してるらしきペイントソフト。
ソースが公開されていて、C#メインで作られてる。
従来どおり、この手のソフトはプラグインで機能拡張できるので、とりあえずハイトマップ→ノーマルマップ変換Effectプラグインを作ってみた。
http://www.geocities.jp/anderson_luis_de_souza/
インストールしたディレクトリにあるPaintDotNet.Effects.dllとかが外部公開向けのアセンブリで、こいつらにプラグインの基底クラスが入っている。
それらを派生して実装すればプラグインができる。
プラグイン作成向けのドキュメントが見当たらなかったので、簡単にメモ
- Effectプラグインの本体はPaintDotNet.Effects.Effectを継承して実装。Renderメソッドが肝
- プラグインのパラメータを操作するダイアログはPaintDotNet.Effects.EffectConfigDialogを継承して実装
- プラグインのパラメータはPaintDotNet.Effects.EffectConfigTokenを継承して実装。こいつでダイアログとプラグイン本体間のパラメータのやりとりをする
- PaintDotNet.Effects.Effect.RenderはPaint.NET本体から別スレッドで呼ばれるっぽいのでスレッドセーフにしておかないとダメ
最後のスレッドセーフ云々はRenderArgsのSurfaceを直に弄る分には意識しなくても大丈夫っぽいけど、GDIのGraphics経由で弄るならlock(dstArgs.Graphics)としておかないと実行時に落ちるので注意。
大体こんなところかなー。