Diary of Sacred Fox - August 05, 2004

The Quintetには通算 179067 人(今日:0, 昨日:1)のお客様が来場しています

2004/08/05

さらにバグを直す

バグの見本市みたいなことになってしまっているIllust Logic Paint
描画命令があまりにも遅いのでちょっと手を入れる
描画をサボるために色々と姑息なことをやってみたりしている
しかし, それでも遅い…
元(別データ or 描画先)のイメージと指定色のXor Notをとって新しいピクセル値にするペンXor Not PenがGDI+にないものだからそれをエミュレートしている部分がとてつもなく遅い模様, 仕方がないのでColorMatrixを使っていたのだが, どこぞの実験みたいに『int tick = Environment.TickCount;』みたいなことを延々とやった結果此処がボトルネックになっているようだったので, ColorMapを使うことに…
一言で書けば簡単に聞こえるかもしれないが, 実はそこまで甘くはなく, 写像の個数はパレットの数 x (描画領域用, 任意のパレットで画面上に出現しうる全ての色を反転させなければならない大きいやつ x 1 + 数字領域用, こちらは白及び黒の行き先を指定するだけなのでまだ平和小さいやつ x 2)だけ必要で, 大きい写像にはそれぞれパレット数 x 3個のペアが入っているわけで… 頭痛い…
その代わり, 動作速度は3倍ぐらいには向上した予感, それでもVB版のほうがずっと速い, アルファブレンディングじゃXor Not Penは実現出来ないしなぁ…
何か良い方法があったら教えて下さい

XPのVisual StyleはApplication.EnableVisualStyles()を+ ButtonBaseから派生しているコントロールのプロパティを弄る必要アリ叩いておけばどのバージョンのDLLを使うかを指定するファイルmanifestがなくても何とかなるらしい
しかしながら, manifestを使わない方法だと時たま描画に失敗するバグがあるとか, それでも無いよりはましなのでこっちで実装することに, 流石にmanifestを書く気にはなれないので…

それにしてもタスクマネージャでメモリ利用量を表示させた状態でいろいろとプログラムを弄ると自分の想定したとおりのDispose() & GCメモリ利用が出来ているのが結構面白かったりする
これが何かやるごとにメモリを食いつぶしているようだったら要注意なんだけど, 流石にそんなことは無い模様