午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

透過処理の高速化(焼け石にお湯)?したPixtack紫陽花

グレースケールのボタンを押すとエラーになっていたのを修正
透過処理の高速化(焼け石にお湯)
 
画像1を半透明にする

f:id:gogowaten:20191014105721p:plain

選択中の画像の名前は右下に表示されていて
いま選択しているのは画像1.png
 

f:id:gogowaten:20191014105735p:plain

半透明や一部を透明にすると名前の末尾に_Tをつけるようにして
半透明の色を使っている画像と使っていない画像を見分けるようにした
 

f:id:gogowaten:20191014105811p:plain

透過色設定の中の3つのラジオボタン
再描画しない
これを選択した状態で半透明の画像を動かすとこうなる、ずっとこのまま
なのでこのボタンは透明や半透明の画像が1枚もない時に使う
何も処理しないので動作が一番早い
 

f:id:gogowaten:20191014105835p:plain

半自動再描画
これは今までの動作と同じでマウスでクリックするか
移動終了後に透過処理をする
 

f:id:gogowaten:20191014105847p:plain

自動再描画
これはマウスで画像を移動している最中も透過処理をするので
超重い、全く実用できない
最初から透過色がある画像だと透過処理されない不具合付きなので
やっぱり基本は半自動再描画
 
これでも速くなったので機能として付けてみた
以前はすべての画像に対して透過用の処理をしていたので
4枚画像があったら4x4で16回も描画していた
10枚なら100回なので重たいのは当然
そこから一番下の画像は1回で良くてその上は2回…一番上は画像の枚数分だけ
さらに動かしている画像に重なっていないものは無視するようにして
さらに重なっていても不透明な画像も無視するようにして
少しずつ速くなったけど今のスキルではこれがほぼ限界なので出した
未だにクラス、インスタンス、オブジェクトとか区別が付いていないんだよなあ
 
参照したところ
ダウンロード
ファイル名 Pixtack_20140119.zip