午後わてんのブログ

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

斜めの半透明グラデーションが正確になったPixtack紫陽花

透明グラデーションの左の無駄を省いて4倍の高速化
透明グラデーションの左上からの斜めを正確にした
左と左右は不正確なまま
 

f:id:gogowaten:20191014112946p:plain

左右から中央にかけての透明グラデーション結果
昨日までは左右で透明度が違っていて、中央もずれていた
 
 

f:id:gogowaten:20191014113001p:plain 左右対称になるように直した

 

f:id:gogowaten:20191014113029p:plain

左からは昨日までのエラーを直して約4倍速くなった
 
 

f:id:gogowaten:20191014113051p:plain

最初はこれでいいと納得していたんだけど
 
 

f:id:gogowaten:20191014113110p:plain

範囲100%に透明グラデーションかけた後に
アルファ値が255、つまり完全不透明なものが残るのは間違っている
 
 

f:id:gogowaten:20191014113128p:plain

だいたい重ねがけしていっても必ず一番端のピクセル
ずっと255から変化しなくてそれ以外のピクセルは1になるのはおかしい
というのを右下だけ明らかに色が浮いているを見て思いついた
でもこれはLockBitsを使ってコピー元に書き戻すときに最後の1Byteを
省いていたからだった
 
 

f:id:gogowaten:20191014113144p:plain

左上からの斜めの半透明グラデーションだけ直せた
 
 

f:id:gogowaten:20191014113204p:plain

5回重ねがけしたところ
すべてのピクセルが透明度1に近づいていく
完全透明の0にしないで1になるのは仕様
 
 

f:id:gogowaten:20191014113219p:plain

斜めの半透明グラデーションの処理
今のところ納得しているけどもっといい処理の仕方はないかなあ
 
1000x1000=1000000ピクセルでの時間は約0.2秒
CPU:PhenomII 720(1.6GHzに固定)
イマドキのCPUだとどれ位の速さなんだろう
 
今回透明グラデーションの検証用に作ったZoomボタンは
選択画像を30倍にしてピクセル毎のアルファ値を書き込んだ画像を
新たに追加するもので
制限は元の選択画像の総ピクセル数が200までのもの
 
ダウンロード
ファイル名 Pixtack_20140201.zip