午後わてんのブログ

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

複数の画像ファイルを一度にトリミングして保存するアプリをつくった9

保存実行後にリストクリアを選択できるようにした
リストボックスでの複数選択して削除できるようにした
切り取り範囲の画像をクリップボードにコピーできるようにした
 
クリップボードからの画像を自動保存できるようにした
保存完了メッセージの表示の有無を選べるようにした
メモリ使用量表示の有無を選べるようにした
 
切り取り範囲の大きさの最大値を9999から99999に増やした
切り取り範囲の左上の位置の最大値も99999に増やした
表示倍率を上げると切り取り範囲の大きさも変化するんだけど
そのときに最大値を超えるとエラーが出るのはそのまま
保存後はリストをクリアのチェックボックスをメニューバーに移動した
切り取り範囲の色(枠の色)の選択をメニューバーに移動した
メモリ使用量の表示の変更
 
無駄な透過処理を削除したのでメモリの使用量がかなり減った
切り取り範囲の上でマウスを動かしているときの透過処理は完全に無駄だった
切り取り範囲の移動中の透過処理が二重になっていた
処理時間も短くなっているはず
 

f:id:gogowaten:20191015095028p:plain

メニューバーに移動したのは使用頻度が低そうな
保存後にリストをクリアするかどうかと
切り取り範囲の色の指定のふたつ
新しく加えたのが
保存した後に通知メッセージを出すかどうかと
メモリの使用状況を表示するかどうかのふたつ
 
 
メモリの使用状況の表示の有無

f:id:gogowaten:20191015095129p:plain

表示は物理メモリだけが対象
 
 
クリップボードからの画像の自動保存

f:id:gogowaten:20191015095157p:plain

切り取り範囲を自動で保存
↑の場合の結果保存された画像は
イメージ 4
 
設定は

f:id:gogowaten:20191015095234p:plain

保存場所を指定し無いと保存されない
クリップボードからの自動追加にチェックを入れる
クリップボード取り込みの設定で
クリップボードから取り込んだ時に自動で保存するにチェックを入れる
これでOK
後はクリップボードに画像をコピーするだけ
キーボードのPrintScreenキーで画面全体のコピー
Alt+PrintScreenで選択ウィンドウのコピー
 
 
切り取り範囲の大きさや位置の指定の最大値を一桁増やしたけど
32bit版では5000x5000ピクセルの画像を2倍拡大して
10000x10000にした上で
切り取り範囲も10000x10000ピクセルくらいにするとメモリ不足エラーになる
物理メモリに空きがあっても800から900MBくらい使用でエラー
64bit版では多分空きメモリがあれば大丈夫

f:id:gogowaten:20191015095311p:plain

5000x5000を4倍拡大して20000x20000で
切り取り範囲を10000x10000の状態でのメモリ使用量は
1941MBで約2GB
ここから切り取り範囲を移動させると急激にメモリを消費する
カーソルキーで1ピクセル移動しただけでも2323MBまで増えたので
搭載メモリが8GBの僕のPCではかなり危険
マウスでぐるぐるドラッグしたりカーソルキー押しっぱなしだと
PCが止まってしまうかも?
不必要なメモリの強制開放のタイミングは
切り取り範囲を左クリックして離した時と
拡大倍率のマイナスボタン(-)をおした時
 
参照した所
NumericUpDownの数値を選択済みにする方法 - Visual Basic - 教えて!goo
ListBoxで選択されている項目の取得と設定: .NET Tips: C#, VB.NET
 
 
 
ダウンロード
ファイル名 Pixtrim_20140702.zip(32bit)
Pixtrim_x64_20140702.zip(64bit)
トリミング - OneDrive
 
昨日はヤフーブログが重くて画像がほとんど表示されなくて
更新を見送った、なんかあったんかな
ブログの書庫を増やした
Pixtack紫陽花もPixtrimもパソコンに分けていたけど
わかりにくいのでPixtrimは専用の書庫を作った
一つ一つの過去の記事を移動するのが面倒だったので
Pixtack紫陽花の書庫を作るのは断念