透明や半透明の画像もコピペできるようになったPixtack紫陽花
開いる画像や開いていた画像に上書き保存しようとするとエラーになるのを修正
画像がない状態で画像を消去しようとするとエラーになるのを修正
画像がない状態で透過色を元に戻すのボタンを押すとエラーになるのを修正
画像がない状態で画像を消去しようとするとエラーになるのを修正
画像がない状態で透過色を元に戻すのボタンを押すとエラーになるのを修正
半透明の画像にカラーマトリックスを使った時は下の画像が残ってしまっていたのを修正
透明や半透明の状態を維持してコピペできるようにした
赤色の画像1を半透明にして
ここでカラーマトリックスを使うセピア色のボタンを押す
こうなって
このセピア色になった画像を移動させると以前は
下にある画像2がそのまま写り込んだ状態になってしまったけど
それがなくなって自然な状態にできるようになった
次はコピペの問題を修正
画像2を半透明にして
半透明になった画像2をコピーボタンを押してから
クリップボードから追加ボタンを押して貼り付けると
こうなっていたけど
コピペのボタンを押せばこうなるようにした
色も変化していないし半透明になっているし下の画像の映りもなくなっている
開いる画像や開いていた画像に上書き保存で落ちるのを修正
ってのが難しかった
今までは開いている画像ファイルはロックされた状態だったので
名前の変更や移動、削除とかができなかった
それはそれでいいやと思っていたけど上書き保存ができないのは
ちょっと不便かなと思い直して
ファイルを開くのにファイルストリームってのを使うようにした
これでロックされなくなったので色々できるようになったんだけど
今度はカラーマトリックスを使った色変換を実行すると
「メモリが不足しています」とエラーが出るようになった
もちろんメモリは足りているからわからなくて
ImageAttributeを使ったDrawImageでメモリが不足しています: DOBON.NETプログラミング掲示板過去ログ
http://dobon.net/vb/bbs/log3-38/23266.html
http://dobon.net/vb/bbs/log3-38/23266.html
これで解決できた
カラーマトリックスを使うときは32bitカラーが必要なのに
System.Drawing.ImageにPictureBox.Imageを読み込むと24bitカラーになって
これが原因だった
じゃあなんで今まではエラーにならなかったのか
たぶん今まではBitmapを使っていたからすべての画像が32bitで読み込まれていた
今回のファイルストリームってのは元の画像のカラーで読み込むから?
今見てみたら読み込んだ直後は8bitでもクリックしたり移動すると32bitになる
ワケガワカラナイヨ
でも動いているからいいや
参照したところ
表示中の画像ファイルが削除できない問題の解決法: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/graphics/drawpicture2.html
http://dobon.net/vb/dotnet/graphics/drawpicture2.html
ダウンロード
ファイル名 Pixtack_20140115.zip
Pixtack紫陽花 - SkyDrive
https://skydrive.live.com/?cid=39DEECDB8489B195&id=39DEECDB8489B195%21305
https://skydrive.live.com/?cid=39DEECDB8489B195&id=39DEECDB8489B195%21305