透明グラデーションの強度を設定できるようにしたPixtack紫陽花
昨日見つけたマウスで移動した後の透過処理の不具合を解消
透明グラデーションのボタンの名称変更、グラデ2→左、グラデ3→左右、グラデ4’→左上
透明グラデーションの高速化、LockBitsを横、左右にも適用
透明グラデーションの強度を設定できるようにした
四角形作成にも2色グラデーションと透明度を設定できるようにした
透明グラデーションの高速化、LockBitsを横、左右にも適用
透明グラデーションの強度を設定できるようにした
四角形作成にも2色グラデーションと透明度を設定できるようにした
透明グラデーションの強度
テスト機能→透明、半透明タブ
強さは1から10の10段階
強さを指定して右にある方向のボタンを押すと選択画像に
透明グラデーションが適用される
昨日の文字の2色グラデーションと同じように四角形作成にも使えるようにした
グラデーションの方向の指定は色に対して適用される
不透明度は0で透明、255で不透明
ダウンロード
ファイル名 Pixtack_20140131.zip
Pixtack紫陽花 - SkyDrive
https://skydrive.live.com/?cid=39DEECDB8489B195&id=39DEECDB8489B195%21305
https://skydrive.live.com/?cid=39DEECDB8489B195&id=39DEECDB8489B195%21305
今回の透明グラデーションの左と左右にも高速化のために
LockBitsを使ったんだけど理解していないせいか出来がいまいち
透明度は0から255の範囲なんだけど計算途中でそれを超えることがあって
255より大きければ255にするっている処理をしているから
正確ではなくなっているし無駄な処理もしている
左の透明グラデーションの場合の計算
If CByte(pixels(pos) * (1 - tStrength)) + (pixels(pos) * tStrength * x / (bmp.Width * gRange)) _
> CByte(255) Then
pixels(pos) = CByte(255)
Else
pixels(pos) = CByte(pixels(pos) * (1 - tStrength)) + (pixels(pos) * tStrength * x / (bmp.Width * gRange))
End If
tStrengthが強さで0.1から1.0
> CByte(255) Then
pixels(pos) = CByte(255)
Else
pixels(pos) = CByte(pixels(pos) * (1 - tStrength)) + (pixels(pos) * tStrength * x / (bmp.Width * gRange))
End If
tStrengthが強さで0.1から1.0
gRangeが範囲で0.1から1.0
xが横座標
Pixelsが画像のデータ
posがアドレス
自分でも何をやっているのかよくわかっていない
範囲や強さが最大値なら問題なくて縮めるとエラーが出る
わかっているムダが横座標が変わらないなら縦座標が変わっても透明度は変化しないから
横座標がかわるまでは1回しか計算しなくてもいいのに毎回計算していること
雰囲気的にわかるのが計算自体に無駄がある、間違っている
割り算がイマイチ理解できていないんだよなあ