Quantcast
Channel: 午後わてんのブログ
Viewing all 420 articles
Browse latest View live

複数の画像ファイルを一度にトリミングして保存するアプリPixtrimをつくった22 メモリの開放し過ぎてた

$
0
0
前回の変更で別の不具合が出ていたのを直した
イメージ 1
クリップボードから取り込んだ画像を保存した後に
リストにある画像を選択するとエラーになっていた
消しちゃいけないものまでDisposeでメモリから削除していて
これを直したからメモリ使用量は増えるはず
なんだけどちょっとテストした限りではあんまり増えた感じしない

クリップボードから取り込んだ画像は名前を付けてImgCollectionっていうCollectionにまとめておいて、画像保存するときにそこから1枚づつ取り出している
この取り出し方が良くなかった
Dim obj = ImgCollection(myFormSetting.ListBox1.Items(i))
Dim img As Image = obj
こう(意味不明な処理)だったのを

Dim img As New Bitmap(DirectCast(ImgCollection(myFormSetting.ListBox1.Items(i)), Image))
こうした、あんまりわかっていないけどこれでエラーが出なくなって選択した画像が表示されるようになった

保存処理が終わったらimgをDispose()している
リストから選択された画像表示するときはCollectionから取り出している
前回はCollectionの中の画像まで消えていたから、その消えた画像を表示しようとしてエラーになっていた
今回はNewでBitmapを作成して、そこにCollectionの画像をコピペしたからDisposeで消えるのはコピペした画像だけどコピペ元のCollectionの中の画像は消えないってことかなあ

でも直ったと思う()


ダウンロード
ヤフーボックス

OneDrive
ファイル名
Pixtrim1.8.27.0.zip(32ビットWindows用)
Pixtrim1.8.27.0_x64.zip(64ビットWindows用)

プランター栽培トマト(レッドオーレ)のここ一ヶ月間の収穫まとめ

$
0
0

外観上の変化
イメージ 1
↑一ヶ月前
↓昨日
イメージ 2
イメージ 3
紆余曲折(物理)あってこうなった

2015/09/04以降の収穫まとめ
2015/09/07
イメージ 4
B株第5花房
日除けしたつもりだったけど割れた
この日の前日2015/09/06の88ミリの降雨で割れた

イメージ 5
虫のフンらしきものがくっついているけど

イメージ 6
割れた周辺を取り除いて

イメージ 7
皮もむいて洗ったからヘーキヘーキ
味は…忘れた、たぶん普通だったかな
普通=スーパーとかで販売されているミニトマトと同じくらいの表現

2015/09/10
イメージ 8
左2つがC株から、右はB株
また割れたところから虫に食べられたっぽい
これは食べるか捨てるかどうしようかなあと思いつつ
1日放置した結果
イメージ 9
しなびて無残な姿になっていたので捨てた
6個に増えているけどどの株から収穫したのか記録してなかった
割れたトマトは1日常温で放置すると萎びる

2015/09/16
イメージ 10
A株は側枝の第1と第2花房
B株は第4と第5と第6花房
C株は第3と第4花房

イメージ 12
小さいのは割れていないけど味はイマイチだった
っていうか本当に小さいな、中玉トマトなのにミニトマトより小さいw
小さい原因は開花時期や実の成長時期に肥料切れになっていたからだと思う

イメージ 11
B株第6花房は10個位花が咲いて1個しか実らなかった
割れてしまったけど味は良かった

2015/09/22
イメージ 13
割れていないものが収穫できた
この日から2015/10/14時点まで割れたものは1つもないことになる
割れてしまう原因は雨に当たるのもそうだけど
それよりも太陽かなあ、強い光や高温って印象

イメージ 14
小さいなあw
味の傾向も大きなのは美味しくて
小さいのはいまいちなのは変わらず

2015/09/29
イメージ 15
C株からは久しぶりの収穫

イメージ 16
B株からの上2つはかなり味が薄くていまいちで
C株の大きい方は色から見ても完熟手前だったせいかこれも今一歩
意外だったのが左下の一番小さなものが甘く美味しかった

2015/10/04
イメージ 17
B株第3花房で赤くなっているのは

イメージ 22
2ヶ月以上前の2015/07/19に開花したもので

イメージ 18
同じ花房の他の花は結実してどんどん大きくなっていったけど
これは小さいままで

イメージ 19
ほかの実が収穫を終え、開花から1ヶ月以上経った頃に大きくなり始めて

イメージ 20
少しづつ大きくなって

イメージ 21
やっと収穫
開花からは実に77日で積算温度は2002度
同じB株第3花房の他のものは37日、1066度だから
約2倍かかっている、なんだこれw
これだけ時間かかったらどんな味なんだろうと期待したけど
いつもの様に薄味で美味しくなかった、なんだこれw(2回め)

イメージ 23
C株からも2つ収穫

イメージ 24
C株からは中玉トマトらしい大きさで味も良かった

イメージ 25
特に大きい方はこれが中玉トマトレッドオーレの
本来の味と姿なんじゃないかと思わせるものだった(適当)

2015/10/07
イメージ 26

イメージ 27A株はトマト黄化葉巻病でもう成長しないから
付いていた実を収穫したら撤収するつもりだったので放置した結果
何故か少しづつ成長して脇芽も伸び放題で
曲がりくねった側枝の側枝の側枝でカオス

イメージ 28
A株からのものは小さめ

イメージ 29
断面図、色的には完熟
味はどれも同じくらいで普通だった

イメージ 30
C株のは種ができていないのは受粉できていなかったのかな

2015/10/09
イメージ 31
B株第9花房からは初、C株第5花房はこれで終わり

イメージ 32
B株からのものでは今までで一番美味しかった

イメージ 33
C株はもっと美味しい
これくらいのものが安定して収穫できたらいいなあ

2015/10/12
イメージ 34
C株第7花房
割れたわけじゃないけどかさぶたみたいなスジができていたけど
味は良かった

イメージ 35
株ごとの収穫数

イメージ 36

トマト収穫数総合計 91個
A株B株C株
まとも1489
裂果37167
合計512416
裂果率72.5%66.7%43.8%

割れていて食べられないような状態でもカウントしているから
収穫数というより結実数かな
個数ではA株がほかを圧倒しているのは早い時期に脇芽を伸ばしていたからかな
B株とC株で差がついたのは土の量かなC株の土の量はABの4分の1くらい

これから
イメージ 37
A株、全体的に小さめだけど40個位の実が付いている

イメージ 39
B株、これも40個くらいだけど大きいのもあって
そろそろ収穫できそうなものも
ただこのB株も葉っぱを見るとトマト黄化葉巻病っぽいんだよなあ
でもこれだけ成長しているから違うのかも?

イメージ 38
収穫数は少ないけど美味しいC株は
30個くらいで大きさもそこそこ


2015/09/09の台風以降は簡易的な日除けや雨よけは意味ないと思ってやめて
その後何度か雨に当たったけど今のところ裂果したものは1つもない
今の日本の夏はトマトに対して暑すぎるのかも、品種にもよるのかな
トマトが終わったところににんにくを植えようと思っていたんだけど
まだトマトが終わりそうになくて、にんにくどうしようってところ

プランター栽培トマトにおける台風や強風での被害と対策めいたなにか

$
0
0
2015/09/05から一ヶ月くらいのまとめ
イメージ 2
↑台風前
↓台風後
イメージ 1
イメージ 6
固定していなかった側枝が曲がったり裂けたり

イメージ 3
A株、吊り下げて固定したところから曲がっていた

イメージ 4
B株、これ見た時はこの側枝は枯れちゃうかと思ったけど
ほとんど影響なかった、トマト強い

イメージ 5
C株、曲がっていただけ

イメージ 7
B株の根本から脇芽が伸びていたけどこれは

イメージ 8
ぐったりしていたので

イメージ 9
破棄

イメージ 10
ほんの1ミリくらいしか繋がっていなかった

イメージ 11
割れなかった

イメージ 12
イメージ 13
割れたもの
台風だとこの程度の雨よけは意味がなさそう

A株はトマト黄化葉巻病みたいなので
この時付いている実が収穫できたら撤収しようと考えていて
じゃあ実が付いていない枝は不要ということで
イメージ 14
こうだったのを

イメージ 15
主枝の第4花房より上を切り取って

イメージ 16
曲がってしまった側枝を支柱に固定した
こんな状態だからA株はもう終わりだなあって思っていたけど
一ヶ月後の今では40個くらいの実が付いている状態なんだよねえ

B株の建て直し
イメージ 17
倒れてしまった側枝を起こして

イメージ 18
ビニール紐で支柱に固定

イメージ 19
裂けた箇所はそのまま
これでもこの後普通に成長した

イメージ 20
C株の曲がったところ、これもなんともなかった

イメージ 23
B株の頂点、風で支柱に何度もたたきつけられたみたいでボロボロ

イメージ 24
C株頂点
こっちもボロボロだけどこれは支柱にぶつかったんじゃなくて
風だけでこうなったのかも

イメージ 22
支柱の根本、かなり揺れたみたいだけど支柱は大丈夫だった

イメージ 21
2015/09/09の台風での降水量は212ミリでかなり降った
最大風速は14.5、最大瞬間風速は30.3でそこそこだったみたいだけど
そんなに強かったかなあって印象
それでも固定していない側枝は枝元から曲がったり避けてしまうことがわかった
気象情報は
気象庁 Japan Meteorological Agency
より引用

2015/09/24、25
イメージ 25
この日も風が強くて
最大風速は10.6、最大瞬間風速でも19.8m/s

イメージ 26
それでも被害はなかった

ひどかったのが2015/10/01
イメージ 27
支柱が傾いていた

イメージ 28
B株の支柱の傾き

イメージ 32
見た目大したことないけど
あちこち緩んでしまったみたいで揺するとグラグラする

イメージ 29
イメージ 30
実もいくつか落ちていた

イメージ 31
葉っぱの枝が折れている
こんなにひどい被害が出たし体感的にもかなり風が強かったから
さぞかしすごい記録なんだろうなあ

イメージ 33
今回の記録では最大風速9.5で最大瞬間風速が15.5
台風の時は最大風速は14.5、最大瞬間風速は30.3
体感的にも被害的にも台風の時よりもひどかったのに?
ワケワカラン

強風?から4日後にやっと傾いた支柱を直し始める
イメージ 34
イメージ 35
ビニール紐は耐候性のものなんだけど
紫外線より風でボロボロになる

イメージ 36
風にあたる面積を減らすためにクルクルねじって細く

イメージ 37
固定する箇所を増やしたり

イメージ 39
上に伸ばすと支柱の高さを超えてしまうので横にした
これくらい曲げても平気みたい

イメージ 40
まだおとなしい

揺れ幅
イメージ 38
180センチの支柱の根本、土の空間から揺れた角度は20度くらいかな
前回の台風の時よりも広がっている
先端の揺れ幅は
(20/180)*(π*180)= 62.8
20度/180度=0.111111111111
3.14*180センチ=564.2センチ
546.2*0.111111111=62.8センチ
計算あっているかしら

イメージ 41
イメージ 42
また風で枝元から断裂、こうなると復活できなさそうなので
イメージ 43
切り取り

イメージ 44
A株の主枝の収穫は終わったので切断

イメージ 45
イメージ 46
切断面、中は以外に綺麗だった

イメージ 47
空いたところに側枝を固定
ここから紆余曲折に拍車がかかる

イメージ 48
吊り下げのために支柱追加
もっと支柱があれば不安定な吊り下げじゃなくて固定ができるんだけど
10本全部使いきった

イメージ 49
イメージ 50
種をまいた頃はこんなことになるなんて想像していなかったw


2画面の画像表示アプリ作った、ヤフーブログへの画像投稿はドラッグアンドドロップでできるのをブログ開設5年目にして知るなど

$
0
0
2画面画像表示アプリ作った
イメージ 1
特徴は2画面、2つのウィンドウで別々の画像を表示
表示された画像をマウスドラッグできるから
ヤフーブログの編集画面とかにドロップすればアップロードができる


イメージ 3
表示されている画像をマウスドラッグでYahoo!ブログの編集画面へドロップすると

イメージ 2
いつものこのアップロードの画面が出てくる
これはウィンドウズのエクスプローラでもできることで
クリック2回で済む!
でもそれに気づいたのが一昨日w
それまでは
イメージ 5
画像をアップロードするボタンからファイル選択していて
クリック数最低でも5回、ファイル選択にはフルパスを貼り付けていたから
実際には7回もクリックしていた!
今までのしなくてよかったクリックの回数とか考えたくないw

イメージ 4
しかも今のエクスプローラはXPの頃と違ってかなり高機能
なので今回作ったアプリはエクスプローラがあるんだから
要らないんじゃないかって思いつつ
この記事を書いている

使い方
イメージ 6
エクスプローラなどから画像ファイルかフォルダをドラッグアンドドロップで
画像と同じフォルダにある画像ファイルがリストに追加される

イメージ 9
レイアウトは縦横で切り替えられる
画像の切り替えは画像の上でマウスホイールをクルクル
またはキーボードのカーソルキーの上下

イメージ 10
2つの画面それぞれでドラッグアンドドロップできる
意味なさそうだけど個人的に重要


イメージ 7
リストの表示の有無を切り替え

イメージ 8
画像表示形式、起動した時は「ウィンドウに合わせる」になっている


作った経緯
1ヶ月分溜まった写真からどれをブログに載せるか選ぶとき用で
同じものや場所の経緯や経過、変化を画像で確認しながら選びたかった
イメージ 11

対応OS
動くはずWindows 10
たぶん動くWindows 8と8.1
動くかもWindows VistaとWindows 7

仕様とか
表示できる画像形式はjpeg、png、bmp、gifだけ
しかも拡張子で判定しているだけw
画像ファイルがたくさんあると最初の表示に時間が掛かる
画像ファイルが2000くらいあるフォルダをドロップすると2,3秒かかる
リストに追加されるファイルの順番はファイル名の昇順だけで並び替えできない
バグとか不具合はいつもより少ないけどあるはずで
縦横配置の切り替えはズレるかも


ダウンロード先
OneDrive


久しぶりに作ったけど思ったよりいまいち
特にコントロール同士の連携がわかんなくて冗長になった
それでも500行くらい

2つの画像を並べて表示するアプリを少し調整した

$
0
0
きのうの
2つの画像を並べて表示するアプリを少し調整した
表示画像に余白ができないようにウィンドウの高さを調節するボタン追加
表示画像を変更する時のマウスホイールクルクルの時に
右クリックを押しながらクルクルで10個先の画像を表示できるようにした

アプリのウィンドウ高さ調節ボタン
イメージ 1
4:3の画像の上下に余白ができないようにウィンドウの高さを調節するときは
アスペクト比→4:3のボタン
手動で高さ調節してもそんなに手間は変わらないんだけどね
作っている最中はあったら便利だろう、便利なはずだっていう思い込み

イメージ 2
リスト表示なしのとき

イメージ 3
左右どちらも3:4画像の時

イメージ 4
縦配置の時

右クリック押しながらマウスホイール回転で10個先か後の画像表示
イメージ 5
ホイール下回転なら下側の画像





ダウンロード先
OneDrive
ヤフーボックス
13画像表示2画面_20151020_x64.zip64ビットウィンドウズ専用
13画像表示2画面_20151020_x86.zip32ビットウィンドウズ用

アイコンは作ったけど名前が決まらなくて変な名前になったまま
アプリを作るアプリをVisual Studio Community 2015に切り替えてから
テストで作っていた13番めの2画面画像表示アプリって意味



プランター栽培レッドオーレの収穫集計とか

$
0
0
割れていないものが収穫できるようになった?なった!

2015/10/18
イメージ 1
C株からは美味しいものが採れていて、今回はその中でも一番だった
後味がポテトチップスのコンソメ味なのは
ジャガイモも同じナス科だから近いものがあるのかもw

今回画像に入れる文字に使ったフォントは「さなフォン麦V2.58」
このフォントもいいね!
★Heart To Me★(フリー素材,写真,手書きフォント,ガーデニング,簡単レシピ)
http://www2g.biglobe.ne.jp/~misana/


2015/10/20
イメージ 2
C株第8花房からのはたくさんキズが付いている
これは台風の時の風で枝と擦れたからだったかな
良く言えば皮がしっかりしているレッドオーレは手で皮をむきやすい

今日2015/10/23
イメージ 4
C株全景、主枝の第8花房から1つと

イメージ 3
B株の主枝第9、10、側枝1の第1からそれぞれ1個づつ

イメージ 5
合計4つ

イメージ 6
大きいのが採れたなあ

イメージ 7
大きいのは直径4センチ
でもこれがレッドオーレの普通の大きさなのかも
8月9月に取れていたのもこれくらいのあったからね
割れていて美味しくなかったから採るじゃなくて取るだったなあ

イメージ 8
今回のB株からの大きなものは今までで一番美味しい!
今までの美味しかったものは甘味とうま味だけで酸味がなかったけど
少し酸味があってトマトらしい味

イメージ 9
C株からの小さなものは普通だったなあ
美味しいのは小さくて中の種が成長していないものより
大きく育ったものに多くあるかなあ

イメージ 10
C株側枝の第1、第2花房
この辺り大きくなっているから期待できそう
色がついてから7~10日くらいで真っ赤になる

イメージ 11
今回の記事では1個も収穫のなかったA株
70個くらい実が付いている、B株は50個、C株は30個
これから寒くなるからねえ、どこまで収穫できるかしら

中玉トマトのレッドオーレが真っ赤になるのは開花からの積算温度だと1000度前後かかっている
真夏だと35日、今くらいの1日の平均気温20度だと
1000/20=50日もかかる
今日2015/10/23開花したものが赤くなるのは、平均気温10度だとすると
1000/10=100日後だから2015/10/23+100=2016/1/31って来年の話になるのか!これは無理そうだなあ

開花してから結実して大きくなるのはそこそこ速い感じだけど、大きくなりきってから赤くなるまでが長く感じるんだよねえ

トマト収穫集計
イメージ 20
A合計51
B合計31
C合計19
A裂果計37
B裂果計16
C裂果計7
A無裂果計14
B無裂果計15
C無裂果計12
総合計101
無劣化合計41
100個越えた!

イメージ 16
総合計だとA株が圧倒していてC株が一番少ない

イメージ 17
割れずに収穫できた数だと3株ほぼ同数なんだけど
美味しいかったものに限るとC株が一番多いw


葉っぱにカビ広がる
イメージ 15
イメージ 14
黄化葉巻病の疑いがないC株が一番ひどい
涼しくなってきたらどんどん広がってきたので切り落としたけど
どうなるかなあ

スイートバジル
イメージ 12
イメージ 13
イメージ 18
花も実もたくさん
寒さに弱いからあと一ヶ月くらいかなあ

イメージ 19
この前作った画像を選ぶアプリを今回の記事作成に使ったけど、なんか違う
本の栞みたいな機能があれば良さそう


Zipファイルの中の画像ファイルを読み込んでPictureBoxに表示する VB .NET Visual Studio Community 2015

$
0
0
画像ファイルだけ入っているzipファイルの中の画像を読み込んで表示する
Visual Studio Community 2015で作成

イメージ 4
7つの画像ファイルが入っているzipファイルを読み込んで画像を表示したところ

デザイン画面(デザイナー)
イメージ 5
最初からあるForm1にFlowLayoutPanelを一個追加しただけ
Form1をダブルクリックしてコードを書く

コード
イメージ 6
エラーの処理とか書いていないので9行目で指定しているzipファイルに
画像以外のファイルが入っているとエラーになる



Imports System.IO.Compression
Imports System.IO

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.FlowLayoutPanel1.Dock = DockStyle.Fill
        Me.FlowLayoutPanel1.AutoScroll = True

        Dim dir As String ="D:\ブログ用\作業用\画像をまとめたもの.zip"
        Dim pb As PictureBox
        Dim fs As New FileStream(dir, FileMode.Open, FileAccess.Read)
        Dim zip As New ZipArchive(fs, ZipArchiveMode.Read)

        'PictureBoxを作成してzipファイルの中の画像ファイルを読み込んでImageに指定する
        For Each z As ZipArchiveEntry In zip.Entries
            pb = New PictureBox 'PictureBox作成
            With pb
'Zipファイルの中の画像ファイルを読み込んでPictureBoxのImageに指定する
                .Image = Image.FromStream(z.Open()) 
                .SizeMode = PictureBoxSizeMode.Zoom '画像の表示モードの指定
                .Size = New Size(120, 90)           'サイズ指定
            End With

            Me.FlowLayoutPanel1.Controls.Add(pb)  'FlowLayoutPanel1にPictureBoxを追加
        Next

       '後片付け
        fs.Dispose()
        zip.Dispose()

    End Sub
End Class


参照したところは
ここなんだけど自分のところではなんか違う
zipファイルを扱うのに必要なZipArchiveっていうのが出てこない!
イメージ 7
System.IO.Compression.って入れたら上の画像みたいに出てくるはずなんだけど
出てこないから真似できない!っていろいろ検索したけどわかんなくて
以前にエクセルVBAでも似たようなことがあったのを思い出して解決できた
答えは「System.IO.Compressionを参照に追加する」
以下はその方法


参照マネージャーを開く
イメージ 1
ソリューションエクスプローラーの上から2番目あたりを右クリック→
追加→参照

参照マネージャー
イメージ 2
アセンブリのフレームワークの中から
System.IO.Compressionを検索してチェックを入れてOK

イメージ 3
参照にSystem.IO.Compressionが追加された
これでzipファイルが扱えるようになった

イメージ 8
何かの追加なしにZipファイルを扱えるようになったのは最近らしく
.NET Framework4.5以降ということで確認したら4.5.2


画像ファルを読み込むときによく使っているのが
Image.FromStreamとImage.FromFile
FromFileは名前からもわかりやすい、ああファイルから読み込んでいるんだなあって
でもFromStreamはよくわからん、ストリームってなんなのって
ファルからメモリに読み込んで、そのメモリから読み込む感じなのかしら

イメージ 9
11行目でFileStreamをNewで作るときにZipファイルを指定してできたストリームを
12行目でZipArchiveをNewで作るときに読み込んでいる
18行目でそのZipArchiveの中のZipArchiveEntryそれぞれにOpenメソッドで開いて
開いた中から出てきたものをImage.FromStreamで取り込んでいる
ZipArchiveEntryってのはZipファイルの中にあるファイルやフォルダっぽい
それをOpenするとストリーム形式で渡してくれるってことかな
ストリーム大活躍だなあ(よくわかっていない)

トマトの味はヘタの形で予測できる?レッドオーレの1週間くらいのまとめと、美味しいけど玉ねぎが臭すぎてまずいトマトスープ

$
0
0

アブラムシ
イメージ 1
イメージ 2
イメージ 3
夏には見かけなかったアブラムシを見かけるようになった
一株につき10匹くらいいそう、全部羽根が付いたもの

白いの
イメージ 4
イメージ 5
白い粉を吹いたようなアブラムシ?

イメージ 12
イメージ 13
でかいなあと思いつつ測ってみたら3mmくらい
羽根を入れたら5mm以上
白黒とも増えている様子はないので放置


収穫
2015/10/25
イメージ 6
B株の第5、7花房からの小さなもの3つは
開花後しばらく経って忘れたころに大きくなりだしたもの

イメージ 14
小さな4,5,6はかなり薄味で美味しくない
A株からの1は意外に美味しかった
見た目は1に似ている3は普通だった
おおきな2,7はかなり美味しかった
ヘタの形が横に広がっているものより縦に立っているものが美味しいのかも?

2015/10/27
イメージ 21
イメージ 22
B株から2つ、C株から1つ

イメージ 23
レッドオーレの皮はもともと硬い上に
風で枝と擦れて傷になると、かさぶたみたくなってさらに固くなる

イメージ 24
C株の小さいのは味が薄めで、B株の2つは甘く美味しかった
C株のは花房の先の方でB株のは花房の枝元に付いたもの
ってのは味に関係あるかなあ
ブドウの実も房の位置によって甘さが変わるとかあるからね

2015/10/29
イメージ 28
収穫前日は風が強くて実が取れちゃうんじゃないかと思ってた
3番がちょっと味薄かった以外はどれもいい味
4,5は房の先端のものだから味と房の位置は関係ない?

イメージ 29
随分前の台風の時にできた傷かなあ

2015/10/31
イメージ 30
イメージ 31
C株第9花房からは初収穫
開花日9/4からの積算温度は1134度、日数54日、赤くなり始めてから14日
夏の頃は赤くなり始めて7日から10日で真っ赤になっていた

イメージ 32
翌日スープにしたんだけどマズかった
トマトは美味しいんだけど一緒に入れた玉ねぎが臭すぎて
味は美味しいんだけど臭すぎて不味いっていう不思議なものができあがった

この玉ねぎは
スライスした生の玉ねぎに缶詰の鯖が乗っかったものがあったんだけど
玉ねぎが臭すぎて生ではムリだったので残したもの

加熱してコショウをいっぱい入れればなんとかなると思って
15分くらい煮たけど部屋が玉ねぎ臭くなるだけだった
玉ねぎってもともと臭いけど魚の生臭さを加えると
それが触媒になって何倍にも臭くなるみたい

イメージ 33
春に収穫したにんにく
時間が経って乾燥しても欠片の皮の色は濃いまま
この皮はかなり硬くて皮というより殻

イメージ 34
中は普通のにんにくの色
さっきのスープにはこれも入れたんだけどね
玉ねぎが臭すぎてにんにくの臭いなんて全くしなかった

2015/11/03
イメージ 35
C株からは大きなものが採れた、4番は直径4センチ
どれも美味しかったけど優劣をつけると
1 < 4 < 2, 3 << 5, 6
こうしてみると味を予測できるのはやっぱりヘタの形かなあ
4は大きくて立派だけどヘタが横の広がっている
2,3,5,6はヘタが縦になっていて厚みもある

イメージ 36
上から

イメージ 37
中玉トマト

イメージ 38
5か6は少し傷があったので皮をむいたところ
お湯に通さなくてもそこそこむける

イメージ 39
種もしっかり成長している

イメージ 40
一番大きな4番は種が小さかった

収穫集計
イメージ 42
イメージ 41
割れてしまったものより割れずに収穫できたものが多くなった
9月中旬以降は1個も割れていないのかな

イメージ 43
イメージ 44
最近はB,C株の収穫が多くてA株は停滞している


イメージ 7
実の下のほうが変色している
大玉トマトだと見たことあるけど中玉トマトでもなるのかな
イメージ 8
取り除いた


花房からの脇芽
イメージ 9
とっくに終了したA株主枝の第1花房から脇芽が伸びていたけど
風に揺られて折れてしまったみたいでしおれている

イメージ 10
これも取り除いた
付け根を見ると接点がかなり小さい

C株
イメージ 11
これも終了した第1花房から伸びていたもので
成長して実も赤くなり始めるまで成長したけど折れそうなので

イメージ 20
紐で吊るした

C株一部の葉っぱが黄色くなる
イメージ 15
以前は肥料不足で株の下側の葉っぱが黄色くなったことがあったけど
今回は中間かそれより上の一部の葉っぱだけ黄色くなった
寒くなってきたからかなあ、でもB株はそんなんでもないしなあ

イメージ 16
原因はわからないけど追肥した

イメージ 17
B株

イメージ 18
C株
最近は寒くなってきたせいか水の消費量が少ないので
1日1回で済んでいる

追肥した三日後
イメージ 25
イメージ 26
イメージ 27
追肥したけど効果なく枯れてきた

イメージ 45
C株の成長点の10日前からの変化
ほとんど伸びていないのはA、B株も同じだから気温のせいかなあ



イメージ 19
この写真いいね

イメージ 46
スイートバジルも葉っぱが黄色くなってきた



大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中

$
0
0
大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中
似たような写真撮りすぎてどれを投稿しようか選ぶときに使いたい
この写真が良さそうだけどもっといいのがあるかもってパラパラ見ていて
やっぱりさっきのがいいなって、さっきのはどこーってよくなる

イメージ 1
見た目
左がフォルダの中の画像一覧で、右が一時的に選んだ画像

イメージ 2
エクスプローラなどからファイルかフォルダをドラッグアンドドロップすると
左のパネルに画像が一覧表示される

イメージ 3
目的の画像が見つかったら
左のパネルから右のパネルへドラッグアンドドロップで追加

イメージ 4
操作のほとんどはマウスドラッグ
下に表示されている大きな画像の上でマウスホイールを回すと
画像が切り替わる


不具合、仕様
選んだ画像パネルに同じ画像をドロップすると重複して登録される
登録した画像はアプリ終了までパネルから削除できない
登録画像を複数選択してのドラッグアンドドロップはできない
大量(3000枚とか)の画像が入ったフォルダや画像をドロップすると
表示まで時間が(2分以上)かかるか途中でエラーになるかも
32ビット版はフルHDの100倍とかの大きな画像(16000x16000ピクセルとか)を開くとエラーで止まる


このアプリを作るのに
使ったアプリはVisual Studio Community 2015
OSはWindows 10

参照したところ

対応OSはWindows
Windows 10 そのまま動くはず
Windows 8、Windows 8.1 動くはず
Windows Vista、Windows 7は.NETの新しいのを入れれば動くと思う

ダウンロード先
OneDrive

使ってみた
イメージ 5
3000枚の中から選んだところ

鉢植えトマト(レッドオーレ)C株側枝第1花房
イメージ 6
Pixtack紫陽花に渡して作ったけど
渡すときに複数同時に渡せないと不便だなあと思った
渡せるようにしたい






画像ファイルの読み込み時間
イメージ 15
画像ファイル700で6秒
画像ファイル数3000枚で1分かかる
しかも途中でキャンセルできない


見慣れないエラー?画面
イメージ 7
3000枚の途中、半分過ぎたあたりかなこの画面が表示された
OK押して続行押したら止まったところから読み込みだしたみたいで
その後は普通に表示された

その他
イメージ 8
画像一覧表示の表示方法変更
左上のボタンを押すと下画面に文字がいっぱい出てくる
もう一回左上のボタンを押すと元の画像表示に戻る

いっぱいある文字の画面の下にスクロールして
Viewの項目LargeIconのところを変更すると見た目が変わる

SmallIcon
イメージ 9
SmallIconっていってもアイコンを登録していないから
文字だけが表示される

イメージ 10
Tileは使えそう
View以外もいろいろいじれる


経緯
イメージ 11
前回の2画面のアプリがいまいちだなあって別のを作り始めてやっとここまでできた
今回のアプリで縮小した画像を一覧表示するのに使っているコントロールはListView
このListViewってのはスゴイ、3000個の画像を同時に表示させていても遅くなったりしないで普通に動く、スクロールバーもスルスル動く

縮小した画像をたくさん表示したくてListViewにたどり着くまで試したのが
FlowLayoutPanelにPictureBoxを並べる、FlowLayoutPanelはアプリのウィンドウの大きさに合わせて自動で整列してくれるのはいいけど遅い、超遅い
イメージ 13
赤色背景のところがFlowLayoutPanel


次にPictureBoxを自分で普通に並べる、FlowLayoutPanelよりは軽いけど2000個くらい並べると遅い、
イメージ 14
左の2列の縮小画像一個一個がPictureBox

どちらもアプリ自体が遅くなるんじゃなくてウィンドウズ全体のような、画面の書き換えが間に合ってない感じでマウスカーソルの移動もカクカクになっていた
タスクマネージャーで見ると
イメージ 12
デスクトップウィンドウマネージャーのCPU占有率が高くなっていた
今使っているCPUは3コアだから33%専有はシングルスレッドだとmax

今にして思うとPictureBoxもボタンやラベルと同じコントローラ
そのコントローラを何千個も表示するのは間違った方法だったんだなあって
ボタンが1000個あるアプリは作り方がおかしいってこと
それでもしばらく気づかなくて取った行動が
見えている範囲だけのPictureBoxを表示すればいいんだから
見えていない画面外のPictureBoxはRemove(削除)しておいて
スクロールバー動かして画面内に入ったらその分表示して見えなくなったのを
Removeしようっていう、こうして書いていてもめんどくさいくらいの処理
スクロールバーの位置は今どこなのかとか、ウィンドウの表示幅が変更された時は並び替えしてとか、スクロールした時表示するPictureBoxの個数はいくつでどこからどこまでになるのかとか
こんなにめんどくさいなら難しそうでめんどくさそうで敬遠していたListViewの方がマシなんじゃないかって思いついてListView使ったって流れてきた
実際ListViewはスゴイ、ちょっとめんどくさいけどスゴイ

最初の画像読み込みが時間かかるから読み込んでいる途中でも
読み込んだ分だけ表示して操作もできるようにしたいけど難しい
マルチスレッドっぽく動かせばできるみたいなんだけど説明読んでもわかんない
デリゲートってのがさっぱり

時間のかかる処理の進行状況を表示する: .NET Tips: C#, VB.NET

.NETマルチスレッドプログラミング 1:スレッドの実行と同期 (1/2):CodeZine(コードジン)

マルチスレッドで動作する.NETのプログラムサンプル | ラシカル開発記
このへんをもう少し眺めてみる

BackgroundWorkerの使い方メモ.NET VB、大量の画像ファイルを読み込んでListViewに縮小画像を表示

$
0
0
時間のかかる処理中でもアプリを操作できるように
BackgroundWorkerコンポーネントを使って処理時間をごまかす
BackgroundWorkerの使い方メモ
環境
OS:Windows 10
使ったアプリ:Visual Studio Community 2015


この前の記事のアプリ
画像を読み込んでいる時には操作も受け付けない状態なのを改善したくて
時間のかかる処理の進行状況を表示する: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/programing/displayprogress.html
ここを見てなんとかできそうなところまでできた

イメージ 1
Button1を押すと指定したフォルダの画像ファイルを読み込んで画像一覧表示開始
緑のバーが処理の進み具合のプログレスバー
Button2を押すと処理のキャンセル
画像を読み込んでいる最中でもアプリの操作ができるようにと
読み込みが終わった画像からどんどん表示されるように
一番時間がかかる画像を読み込んで縮小画像作成する部分を
BackgroundWorkerコンポーネントを使って処理している

指定したフォルダはエクスプローラだとこう見えている
イメージ 13
ファイル数は323個、フォルダ数は3個
ファイルは全て画像ファイル
パスは "D:\ブログ用\作物"

デザイン画面
イメージ 2
デザイン画面で追加するコントロールは
Button1、Button2、ProgressBar1、ListView1、BackgroundWorker1、ImageList1
大きさや配置以外のプロパティはそのままで変更なし
必要な変更はコードに書いた



コード

'時間のかかる処理の進行状況を表示する: .NET Tips: C#, VB.NET
Imports System.ComponentModel
Imports System.IO

Public Class Form1
    Private iconSize As New Size(64, 64)

    '最初の準備
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With ImageList1
            .ColorDepth = ColorDepth.Depth32Bit
            .ImageSize = iconSize
        End With
        With ListView1
            .Anchor = 1 Or 2 Or 4 Or 8
            .LargeImageList = ImageList1
        End With
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If BackgroundWorker1.IsBusy Then 'バックグラウンド処理中なら何もしない
            Return
        End If
        '画像ファイルだけ入っているフォルダを指定
        Dim dir() As String = Directory.GetFiles("D:\ブログ用\作物") '326ファイル
        'Dim dir() As String = Directory.GetFiles("D:\ブログ用\チェック用2") '3000ファイル
        Dim i As Integer
        Dim lv As ListView = ListView1
        Dim il As ImageList = ImageList1
        Dim kari As Bitmap = SystemIcons.Application.ToBitmap '仮のアイコン画像
        Cursor = Cursors.WaitCursor '待ちカーソル
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = UBound(dir)

        Dim lvi As New List(Of ListViewItem)
        For i = 0 To UBound(dir)
            lvi.Add(New ListViewItem(Path.GetFileName(dir(i)), i))
            il.Images.Add(kari)
        Next
        lv.Items.AddRange(lvi.ToArray)
        Cursor = Cursors.Default 'カーソルを元に戻す

        'バックグラウンド処理
        With BackgroundWorker1
            .WorkerReportsProgress = True '進行状況の報告できるように
            .WorkerSupportsCancellation = True 'キャンセルできるように
            .RunWorkerAsync(dir) 'バックグラウンド処理開始、画像ファイルのパスを渡す
        End With
    End Sub

    'バックグラウンド処理
    Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim dir() As String = e.Argument '渡されたファイルのパスを受け取る
        Dim i As Integer
        Dim img As Image
        Dim bgw As BackgroundWorker = DirectCast(sender, BackgroundWorker)
        Dim g As Graphics
        Dim w As Integer = iconSize.Width
        Dim h As Integer = iconSize.Height

        For i = 0 To UBound(dir)
            'キャンセルされたか判定して処理
            If bgw.CancellationPending Then
                e.Cancel = True
                Return
            End If

            Dim bmp As New Bitmap(w, h)
            g = Graphics.FromImage(bmp)
            'ファイルストリームで読み込んだ画像の縮小画像を作成してReportProgressを使ってProgressChangedに渡す
            Using fs As New FileStream(dir(i), FileMode.Open, FileAccess.Read)
                img = Image.FromStream(fs) '画像読み込み
                g.DrawImage(img, 0, 0, w, h) '縮小画像作成
                bgw.ReportProgress(i, bmp) '縮小画像を渡す
                g.Dispose()
            End Using
        Next
    End Sub

    'バックグラウンド処理で作成された縮小画像を受け取ってImageListの仮の画像に上書き(入れ替え)する
    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        Dim i As Integer = e.ProgressPercentage
        Dim lv As ListView = ListView1
        ImageList1.Images.Item(i) = DirectCast(e.UserState, Bitmap) '画像入れ替え
        If i = 10 Then lv.Refresh() '10個めの画像を受け取ったらListViewの再描画
        ProgressBar1.Value = i
    End Sub

    'バックグラウンド処理が終わった時の処理、必要はない
    Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        If e.Error IsNot Nothing Then
            MsgBox("エラー発生:" & e.Error.Message)
        ElseIf e.Cancelled Then
            MsgBox("処理を中止しました")
        Else
            MsgBox("完了")
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'バックグラウンド処理のキャンセルを要求
        BackgroundWorker1.CancelAsync()
    End Sub
End Class

イメージ 3

009:     '最初の準備
010:     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
011:         With ImageList1
012:             .ColorDepth = ColorDepth.Depth32Bit
013:             .ImageSize = iconSize
014:         End With
015:         With ListView1
016:             .Anchor = 1 Or 2 Or 4 Or 8
017:             .LargeImageList = ImageList1
018:         End With
019:     End Sub

起動時にListView1のLargeImageListにImageList1を指定する(17行目



036:         Dim lvi As New List(Of ListViewItem)
037:         For i = 0 To UBound(dir)
038:             lvi.Add(New ListViewItem(Path.GetFileName(dir(i)), i))
039:             il.Images.Add(kari)
040:         Next
041:         lv.Items.AddRange(lvi.ToArray)
042:         Cursor = Cursors.Default 'カーソルを元に戻す
043: 
044:         'バックグラウンド処理
045:         With BackgroundWorker1
046:             .WorkerReportsProgress = True '進行状況の報告できるように
047:             .WorkerSupportsCancellation = True 'キャンセルできるように
048:             .RunWorkerAsync(dir) 'バックグラウンド処理開始、画像ファイルのパスを渡す
049:         End With

Button1が押されたら
dir()に指定フォルダの中のすべてのファイル名を入れる(26行目
ファイル名がListView1の項目の表示名になる
lviに作成した項目(ListViewItem)を入れて
ImageListには仮の画像を追加していく(37-40
ListView1にすべての項目を追加(41
イメージ 10
すべての項目を作成、アイコン画像は仮の画像になっている
ここまでできたら
バックグラウンド処理開始の合図(48
BackgroundWorkerのDoWorkイベントに移る



BackgroundWorkerのDoWorkイベントの中
072:             Using fs As New FileStream(dir(i), FileMode.Open, FileAccess.Read)
073:                 img = Image.FromStream(fs) '画像読み込み
074:                 g.DrawImage(img, 0, 0, w, h) '縮小画像作成
075:                 bgw.ReportProgress(i, bmp) '縮小画像を渡す
076:                 g.Dispose()
077:             End Using

一番時間がかかるところはこのDoWorkイベントで処理することで
処理中でもアプリの操作が可能になる
画像ファイルを読み込んで、縮小画像作成
できた縮小した画像をImageList1に登録するんだけど
この登録処理はBackgroundWorkerのDoWorkの中では実行できないので
BackgroundWorkerのProgressChangedイベントを発生させて
そこに渡して登録処理をする
これが75行目のReportProgressメソッド
これにできあがった縮小画像を持たせてあげる



BackgroundWorkerのProgressChangedイベントの中
086:         ImageList1.Images.Item(i) = DirectCast(e.UserState, Bitmap) '画像入れ替え

e.UserStateで渡されたものを受け取ることができる
Bitmap画像なのでDirectCastでBitmapに変換して
ImageList1に登録、というか仮の画像に上書きしている

ここでなんで仮の画像を指定した後に縮小画像を指定し直すなんて面倒なことをしているのか、最初から縮小画像を指定すればいいじゃんってことなんだけど
最初は
039:             il.Images.Add(kari)
仮の画像を登録するこの39行目を実行しないで86行目で登録する
086:         ImageList1.Images.Add(DirectCast(e.UserState, Bitmap)) 
こうしていたんだけど、これだとここで処理が止まってしまう
理由はわからない
なので仮の画像を登録しておいて後から画像を入れ替えるのはどうだろうって
試したらうまくいったので今の方法になったってわけ

これでなんとか画像を読み込んでいる時間はごまかすことができた!
次に気になったのがListViewにListViewItemを作成して登録するところでも時間がかかっている!
でもこの部分はコントロールへの変更処理だからBackgroundWorkerでは処理できない
まずはどれくらい時間がかかっているか
323個のListViewItem作成登録とImageListへ画像登録にかかる時間
イメージ 4
これが最初の方法で、一個一個作成してはAddで登録
1.69秒

イメージ 5
ListViewItemは全部できあがったらまとめてAddRangeでListViewに登録
ImageListへは一個一個登録
0.32秒、5倍以上速くなった

イメージ 6
ListViewItemは一個一個、ImageListはまとめ(AddRange)て
0.65秒
さっきより少し遅い
でも両方共まとめて登録すれば速いかなあって思って

イメージ 7
0.35秒
両方共まとめて登録してみたら速くなったけどListViewItemだけまとめて登録の時とほとんど差がないってことは
画像の指定は一個一個でも、まとめてからのどちらでもいいけど
ListViewItemの登録はまとめたほうが速い!

イメージ 8
まとめて登録でも3041個だと8秒以上かかった

イメージ 9
CPUのクロックは3GHzの100%固定で計測
AMD PhenomⅡ X3 720


ここまで書いていてちょっと違うことに気づいた
DoWorkイベントの中から縮小画像をProgressChangedイベントへ渡して
画像の入れ替えをしていたけど
075: bgw.ReportProgress(i, bmp) '縮小画像を渡す
086: ImageList1.Images.Item(i) = DirectCast(e.UserState, Bitmap) '画像入れ替え
この入れ替えはわざわざ渡さなくても、DoWorkの中で処理できる、できた
なので75行目を
075: ImageList1.Images.Item(i) = bmp '画像入れ替え
076: bgw.ReportProgress(i)
こう書き換えて、86行目は要らない

書き直した、太字のところが書き換えたところ

'時間のかかる処理の進行状況を表示する: .NET Tips: C#, VB.NET
Imports System.ComponentModel
Imports System.IO

Public Class Form1
    Private iconSize As New Size(64, 64)

    '最初の準備
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With ImageList1
            .ColorDepth = ColorDepth.Depth32Bit
            .ImageSize = iconSize
        End With
        With ListView1
            .Anchor = 1 Or 2 Or 4 Or 8
            .LargeImageList = ImageList1
        End With
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If BackgroundWorker1.IsBusy Then 'バックグラウンド処理中なら何もしない
            Return
        End If
        '画像ファイルだけ入っているフォルダを指定
        Dim dir() As String = Directory.GetFiles("D:\ブログ用\作物") '326ファイル
        'Dim dir() As String = Directory.GetFiles("D:\ブログ用\チェック用2") '3000ファイル
        Dim i As Integer
        Dim lv As ListView = ListView1
        Dim il As ImageList = ImageList1
        Dim kari As Bitmap = SystemIcons.Application.ToBitmap '仮のアイコン画像
        Cursor = Cursors.WaitCursor '待ちカーソル
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = UBound(dir)

        Dim lvi As New List(Of ListViewItem)
        For i = 0 To UBound(dir)
            lvi.Add(New ListViewItem(Path.GetFileName(dir(i)), i))
            il.Images.Add(kari)
        Next
        lv.Items.AddRange(lvi.ToArray)
        Cursor = Cursors.Default 'カーソルを元に戻す

        'バックグラウンド処理
        With BackgroundWorker1
            .WorkerReportsProgress = True '進行状況の報告できるように
            .WorkerSupportsCancellation = True 'キャンセルできるように
            .RunWorkerAsync(dir) 'バックグラウンド処理開始、画像ファイルのパスを渡す
        End With
    End Sub

    'バックグラウンド処理
    Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim dir() As String = e.Argument '渡されたファイルのパスを受け取る
        Dim i As Integer
        Dim img As Image
        Dim bgw As BackgroundWorker = DirectCast(sender, BackgroundWorker)
        Dim g As Graphics
        Dim w As Integer = iconSize.Width
        Dim h As Integer = iconSize.Height
        Dim ic As ImageList.ImageCollection = ImageList1.Images
        For i = 0 To UBound(dir)
            'キャンセルされたか判定して処理
            If bgw.CancellationPending Then
                e.Cancel = True
                Return
            End If

            Dim bmp As New Bitmap(w, h)
            g = Graphics.FromImage(bmp)
            'ファイルストリームで読み込んだ画像の縮小画像を作成してImageListの画像に指定する
            Using fs As New FileStream(dir(i), FileMode.Open, FileAccess.Read)
                img = Image.FromStream(fs) '画像読み込み
                g.DrawImage(img, 0, 0, w, h) '縮小画像作成
                ic.Item(i) = bmp            '画像入れ替え
                bgw.ReportProgress(i)       '進行状況(何番目の処理中か)を渡す
                g.Dispose()
            End Using
        Next
    End Sub

    'バックグラウンド処理で作成された縮小画像を受け取ってImageListの仮の画像に上書き(入れ替え)する
    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs
                                                  ) Handles BackgroundWorker1.ProgressChanged
        Dim i As Integer = e.ProgressPercentage
        If i = 10 Then ListView1.Refresh() '10個めの画像を受け取ったらListViewの再描画
        ProgressBar1.Value = i
    End Sub

    'バックグラウンド処理が終わった時の処理、必要はない
    Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs
                                                     ) Handles BackgroundWorker1.RunWorkerCompleted
        If e.Error IsNot Nothing Then
            MsgBox("エラー発生:" & e.Error.Message)
        ElseIf e.Cancelled Then
            MsgBox("処理を中止しました")
        Else
            MsgBox("完了")
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'バックグラウンド処理のキャンセルを要求
        BackgroundWorker1.CancelAsync()
    End Sub
End Class

イメージ 11
わかっていないからまだおかしな所があるかも
イメージ 12
黄色ラインが変更や追加、灰色が削除のあった箇所
後はこの前のアプリにこの機能を付け加えられるかだなあ

ダウンロード
OneDrive
test32_バックグラウンド処理_20151107.zip
test32_バックグラウンド処理_20151107_x86.zip

大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その2

$
0
0
前回のアプリ
いくつか改良した
画像ファイルの読み込み待ち時間でも操作ができるようにした
表示の切り替え(パネルのレイアウト変更)をできるようにした
右の一時表示パネルのから選択画像を削除できるようにした
一時表示パネルから複数選択してドラッグアンドドロップできるようにした
一時表示パネルに同じ画像は登録できないようにした(重複の回避)


待ち時間でも操作ができるように
イメージ 1
3041個の画像ファイルのうち506個まで読み込んだところ
読込中は左上に進行状況が表示されるようにした

943個め
イメージ 2
読み込み途中でも操作できるので

2075
イメージ 3
右側の一時表示パネルにもドロップできる

イメージ 4
読み込みが終わっていない部分は縮小画像は表示されていないけど
クリックすれば下パネルに画像は表示されるし
右側の一時表示パネルにもドロップできる
これで少し普通のアプリっぽくなったなあ
この機能は昨日の記事

表示の切り替え
イメージ 5
左上の右のボタンを押すとパネルの表示が切り替わる

イメージ 6
もう一回押すと

イメージ 7
もう一回押すと元に戻る

複数選択してドラッグアンドドロップ
イメージ 8
他のアプリに渡せるようにした
前回は複数選択して渡しても実際には一個しか渡していなかった

登録アイテムの削除
イメージ 9
一時表示パネルから削除したい画像を選択して
右クリックメニューの外すで削除
これも複数選択で可能

イメージ 10
削除したところ

ダウンロード先
OneDrive
test30_ListViewで画像ストック_20151108.7z
test30_ListViewで画像ストック_20151108_x86.zip(32ビット版)
test30_ListViewで画像ストック_20151108.7z

まだ直したいところがあるけど、だいぶできたかなあ
あとは実際に使ってみてどうなるか


動的に作ったコントロールと あらかじめ配置されているコントロールの連携のテスト、クラス作成の練習

$
0
0
動的に作ったコントロールと
あらかじめ配置されているコントロールの連携のテスト
連携とか関連付けとかをラクにしたくてテストしてみた


イメージ 2
機能は
TabControlにTabPageの追加と削除
TabPageにボタンの追加と削除
追加したボタンクリックで連携しているLabelにボタンの数字を表示
Labelクリックで連携しているボタンの色変更
追加したボタンはどのLabelと連携するのかの指定をして、その確認

イメージ 3
「タブ追加1」ボタンでタブ1、「タブ追加2」ボタンでタブ2というTabPageが追加される
追加するときに連携するLabelを指定している、それぞれLabel1とLabel2


イメージ 4
「ボタン追加」ボタンで表示しているタブにボタンが上から順番に追加される
タブ2に追加されたボタンはLabel2と連携する

イメージ 5
追加されたボタンを押すとLabel2の表示が押したボタンと同じ数字になる
連携していないLabel1は変化なし

イメージ 6
Label2をクリックすると連携しているタブにあるボタンの中で
同じ数字のボタンの色が変化する

イメージ 7
タブの表示をタブ1に切り替えてボタンを3つ追加したところ

イメージ 8
追加されたボタンを押すとLabel1の表示が変化する、Label2は変化なし

イメージ 9
Label1クリックでボタンの色を変更したところ

テストアプリの中身は
デザイン画面
イメージ 10
ボタン5個、Label2個、TabControl1個
ボタン以外の名前は初期値
今回はTabPageを継承したExPageクラスを作成して使うので
TabControlを追加した時に自動で作成されるTabPage1とTabPage2は削除


Form1

イメージ 11

Public Class Form1
    'ボタン追加:タブにボタンを追加、右に追加
    'ボタン削除:タブにあるボタンを削除、右端のボタンを削除
    'タブに追加したボタンを押すと対応したLabelに自身のtextを表示
    'Labelをクリックで対応したボタンの色が変化

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label1.BorderStyle = BorderStyle.FixedSingle
        Label2.BorderStyle = BorderStyle.FixedSingle
    End Sub

    Private Sub Button1タブ追加1_Click(sender As Object, e As EventArgs) Handles Button1タブ追加1.Click
        Call AddPageタブ追加(Label1, "タブ1")
    End Sub

    Private Sub Button2タブ追加2_Click(sender As Object, e As EventArgs) Handles Button2タブ追加2.Click
        Call AddPageタブ追加(Label2, "タブ2")
    End Sub

    '表示しているタブページを削除
    Private Sub Button3タブ削除_Click(sender As Object, e As EventArgs) Handles Button3タブ削除.Click
        TabControl1.TabPages.Remove(TabControl1.SelectedTab)
    End Sub

    Private Sub Button4ボタン追加_Click(sender As Object, e As EventArgs) Handles Button4ボタン追加.Click
        Dim iPage As exPage = TabControl1.SelectedTab
        iPage.AddButtonボタン追加()
    End Sub

    '最後に作成されたボタンを削除
    Private Sub Button5ボタン削除_Click(sender As Object, e As EventArgs) Handles Button5ボタン削除.Click
        Dim iPage As exPage = TabControl1.SelectedTab

        'ボタンが1個でも在れば
        If iPage.Controls.Count > 0 Then
            iPage.RemoveButtonボタン削除()
        End If
    End Sub

    'Labelクリックで対応したボタンの色変更
    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click, Label2.Click
        Dim l As Label = DirectCast(sender, Label)
        Dim tp As exPage = TabControl1.SelectedTab
        tp.ChangeColorボタンの色変更(l)
    End Sub

    Private Sub AddPageタブ追加(l As Label, tabName As String)
        Dim eP As New exPage(l)
        eP.Text = tabName
        TabControl1.TabPages.Add(eP)
        TabControl1.SelectedTab = eP '追加したタブを選択状態にする
    End Sub

End Class






ExPage

イメージ 12

'TabPageを継承したexPage、
Public Class exPage
    Inherits TabPage
    Private BtList As New List(Of Button) '作ったボタンを入れておくリスト
    Private BtCount As Integer = 0 'ボタン数記録用
    Private BtHeight As Integer = 24 'ボタンの高さ、追加する時の位置決定に使う
    Private LastButton As Button '最後に追加されたボタン記録用
    Private WithEvents bt As Button 'イベント付き変数
    Private Form1Label As Label '連携するLabel記録

    Public Sub New(l As Label)
        Form1Label = l 'タブにあるボタンと連携するLabel指定する
    End Sub

    Public Sub AddButtonボタン追加()
        'ボタンの位置決め
        Dim nP As Point
        If BtCount = 0 Then
            nP = New Point(0, 0)
        Else
            nP = New Point(0, LastButton.Top + BtHeight)
        End If
        'ボタン作成
        bt = New Button
        With bt
            .Text = BtCount '& Me.Text
            .Location = nP
        End With
        'ボタン追加
        BtList.Add(bt)
        BtCount += 1
        LastButton = bt
        Controls.Add(bt)
        AddHandler bt.MouseClick, AddressOf DisplayLabelに表示 'クリックイベントに関連付け
    End Sub

    Public Sub RemoveButtonボタン削除()
        '表示ページの中で最後に追加されたボタンを削除する
        'Controls.RemoveAt(BtCount - 1)
        Controls.Remove(LastButton) '外す
        LastButton.Dispose() 'これ要る?
        BtList.RemoveAt(BtCount - 1) 'リストからも削除
        BtCount -= 1 'カウント1減らす
        If BtCount > 0 Then
            LastButton = BtList(BtCount - 1)
        End If
    End Sub

    Private Sub DisplayLabelに表示(sender As Object, e As MouseEventArgs) Handles bt.Click
        Dim ibt As Button = DirectCast(sender, Button)
        Form1Label.Text = ibt.Text
    End Sub

    Public Sub ChangeColorボタンの色変更(l As Label)
        If l.Equals(Form1Label) = False Then Return '対応Labelと違っていたらなにもしないで終了

        Dim bt As Button = BtList(l.Text)
        If bt.BackColor = Color.PeachPuff Then
            bt.BackColor = Color.PowderBlue
        Else
            bt.BackColor = Color.PeachPuff
        End If
    End Sub
End Class



タブ追加の処理は
Form1の
46:    Private Sub AddPageタブ追加(l As Label, tabName As String)
47:        Dim eP As New exPage(l)
47行目のNewでタブ作成の時に連携させるLabelを引数として渡して
ExPageの
09:    Private Form1Label As Label '連携するLabel記録
11:    Public Sub New(l As Label)
12:        Form1Label = l 'タブにあるボタンと連携するLabel指定する
11行目のsub NewでLabelを受け取って12行目で9行目の変数に記録している
これでLabelとタブが関連付けられた
9行目で宣言した変数はグローバル変数なのでExPageクラス全体で共有する変数になる、であってるかな


ボタン追加の処理
ボタンを実際に作成するのはExPageクラスの方で、呼び出すのはForm1
Form1のボタンクリックイベントでExPageのボタン作成メソッドを呼び出す
24:    Private Sub Button4ボタン追加_Click(sender As Object, e As EventArgs) Handles Button4ボタン追加.Click
25:        Dim iPage As exPage = TabControl1.SelectedTab
26:        iPage.AddButtonボタン追加()
27:    End Sub
25行目のSelectedTabは選択表示されているタブ

ExPageクラス
08:    Private WithEvents bt As Button 'イベント付き変数
24:        bt = New Button
34:        AddHandler bt.MouseClick, AddressOf DisplayLabelに表示 'クリックイベントに関連付け
24行目でボタン作成している、作成したボタンは8行目で宣言したイベント付き変数のbtに入れる
34行目でボタンのクリックイベントに関連付けしている


追加したボタンのクリックイベント
ExPageクラス
48:    Private Sub DisplayLabelに表示(sender As Object, e As MouseEventArgs) Handles bt.Click
49:        Dim ibt As Button = DirectCast(sender, Button)
50:        Form1Label.Text = ibt.Text
51:    End Sub
Form1LabelはExPageクラスのグローバル変数なのでExPageならどこからでも参照できる
ExPage(タブページ)作成ごとに連携するLabelを指定しているので、どのLabelと連携しているのか探さなくてもいいことになる


ダウンロード先
OneDrive
test33_コントロールの連携2.7z
test33_コントロールの連携2.7z


メモ
クラスの追加方法
イメージ 13
右のソリューションエクスプローラーをクリックして表示して
項目の上から2番めにあるアプリと同じ名前を右クリック
表示されたメニューから追加→クラス

イメージ 14
クラスを選択して、名前をつける、追加ボタンクリックで
新しいクラスが追加作成される
イメージ 15




今回のこのテストは前回の記事のアプリでラクがしたかったから
大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その2 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
イメージ 1
SplitPanelを使って中央で左右に分けている
それぞれListViewとPictureBoxを置いて連携、関連させている
右のListViewはTabControlのTabPageそれぞれに置いてあって
どのTabPageのListViewもPictureBox2と連携している

連携の内容は
PictureBoxの上でマウスホイール回転で画像の切り替え
縮小画像クリックで拡大画像をPictureBoxに表示

追加したい機能がTabPageの追加と削除
特に追加した時にどのコントロールと連携させるのか処理をラクにしたかった
今のはタブページは2枚固定、これだけでもかなりめんどくさい処理になっていて
タブを増減できるようにしたらもっとめんどくさくなりそうなので、どうしたらいいかなあって今回のテストになった
テストではうまくできた感じだけどどうなるかなあ
クラスを作成するときに、どれをプロパティにするのかメソッドにするのかの判断がさっぱりわかっていない、作りながら、作ってからこれはメソッドじゃなくてプロパティでいいやとかなっている
最初はTabControlを継承したクラスで作っていて、途中でTabPageを継承したクラスが必要になって追加して、できた!と思って少ししてからTabControlを継承したクラスは必要ないことがわかって作りなおしたりとか


プランター栽培トマト(レッドオーレ)の2週間くらいのまとめ

$
0
0
2週間くらいのまとめ
種まきから189日目のトマト(レッドオーレ)
イメージ 1
赤く色づいたのが増えてきた、これだけたくさんなのは初めて
これらが開花したのは約2ヶ月前で

イメージ 2
こんな感じだった頃

イメージ 3
たしかに脇芽を放置して伸び放題にしていたA株なんかはたくさん花が咲いていた
これが

イメージ 5
今こうなった

イメージ 4
B株も結構咲いていた、この花が

イメージ 6


イメージ 7
イメージ 8
10月下旬から収穫数が増えてきている

イメージ 33
3株とも30個くらいで並んでるけど
これからA株が増えそうなんだよねえ
今はまだ暖かいけど寒くなるだろうしどうなるかなあ

11/04
イメージ 10
数字は味の評価、3が普通
イメージ 9
赤くなってもヘタの近くに少し緑色が残っているものが初めて採れた
販売されている大玉トマトではよく見るけど、なんでこうなるんだろう
日当たりが良さそうなところにあったからそのせいかも?
味は他のと変わりなく美味しかった

11/06
イメージ 11
大きなのが採れた、けど注目したいのは小さい方の収穫した場所

イメージ 12
C株の根元近くの第1花房から伸びてきた脇芽から収穫

イメージ 14
第1花房は8/25にはすべての収穫を終えたと思っていたら
9/16には開花していた、何を言っているのかわからないよ

開花した9/16から収穫日11/6まで
イメージ 13
開花から51日目、積算温度1012度
ヘタが枯れて茶色くなっているし持った感じが軽かったので
期待はなかったんだけど食べたら美味しかった
甘さで言ったら今までで一番だったかも


11/7
イメージ 15
ABC株から1個づつ収穫
小さいB株のは薄味だった

11/10
イメージ 21
イメージ 22
イメージ 23
11/8と11/9は雨が降ったせいかいくつか割れてしまった

イメージ 24
合計6個
右下のはまだ真っ赤ではないけど割れてしまったので収穫した
この中では一番美味しかった

11/11
イメージ 25
気づかなかったけどまだ割れているのがあった1番
2番の白くなっているのは風で枝と擦れてできた傷
傷になったところは固くて食べられないので
傷ついた実は早めに諦めて摘果したほうが良さそう

11/12
イメージ 26
C株からの収穫は少ないけど大きなものが採れる

11/13
イメージ 27
C株の側枝第2花房からは初収穫で今まで最大のものが収穫できた(4番)
開花から56日で積算温度1088度
C株第10花房からも初収穫(5番)は開花から59日目、積算温度1153度
A株は脇芽を伸ばし放題にしていたから第何花房とかわかんないんだけど
大きなのが採れるようになってきた

イメージ 28
うーん、でかいw

11/16(今日)
イメージ 32
11/14,11/15には前回よりたくさん雨が降ったけど
1つも割れなかった
B株第11花房は2つしか実らなかったので初収穫だけどこれで終わり(3,4番)
開花から55日、積算温度1049度
1つの花房につける実の数は4個か5個が良さそうに感じる
株の調子が良くてもそれ以上つけると実が大きく成長しないとか
次の花房で実る数が少なくなる感じ



化成肥料
イメージ 17
追肥は化成肥料を10日に1回くらいの割合
これくらいの量を3つの株で分けて入れている

イメージ 16
次の追肥の時でも顆粒が溶けないでほぼそのまま残っているので

イメージ 18
1週間くらい経ったら適当なもので潰して

イメージ 19
水をかけて溶かしているだけど
これってどうなんだろう

イメージ 20
溶けたというより流れていった感じ
顆粒のままの形が残っていても毎日水をかけていたら
肥料の成分はどれくらい残っているのか

レッドオーレの皮は硬い
イメージ 29
熱湯にくぐらせて

イメージ 30
皮をむいて

イメージ 31
食べたほうが美味しいかな
育て方にもよるんだろうけどレッドオーレの皮は硬い
林檎の皮と同じくらいの硬さだと思うけど
りんごに比べたら果肉は柔らかいから
感覚的には林檎の皮より固く感じる

種まきから172日目のスイートバジル
イメージ 35
少し風の強い日があって斜めだったのがほぼ真横になった
イメージ 34
全体的に黄色くなってきた
少し前に追肥したけど回復しないから寒さのせいだろうねえ


大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その3、画像のしおり機能

$
0
0
大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その2 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
この記事の続き

イメージ 1

選んだ画像を一時的においておくタブページを追加できるようにした
タブページの縮小画像クリックで左の画像一覧表示と同期できるようにした(栞機能)
縮小画像の表示タイプを選べるようにした

タブページ追加
イメージ 2
タブ追加ボタンで増やせるようになった

左右のパネルの同期(栞機能)
イメージ 3
右パネルのメニューのその他の「同期する(栞)」にチェックを入れて

イメージ 4
右パネルに登録した画像クリックで
左パネルの元の画像の位置までスクロールして表示される

イメージ 5
栞とか目次とかそんな感じ
作っててこれが欲しかったんだって思った

縮小画像の表示タイプ
イメージ 6
変更は左上のコンボボックス
初期の表示タイプはLargeIconになっている
ListViewコントロールに最初から用意されているViewプロパティを
選べるようにしただけなので選択できるのは5種類

イメージ 7
Details
ファイルのフルパスも表示される

イメージ 8
SmallIcon
小さい画像は用意していないので全然小さくないw

イメージ 9
List
横並びになる

イメージ 10
Tile
これは何故か左右で表示が変になる
タイルってくらいだから画像だけ敷き詰めたいってことで

イメージ 11
表示タイプ選択の左のボタンを押すとこうなって
一旦違う表示タイプを選択してから
もう一度Tileを選択すると

イメージ 12
タイルっぽくなる!


今回の一番の変更点はタブページを追加できるようにしたっていう一番地味なところで
動的に作ったコントロールと あらかじめ配置されているコントロールの連携のテスト、クラス作成の練習 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
この記事で練習したのを取り入れて少しすっきり
それでも書いているとなんか違うなあってところは出てくるw
でも栞機能はいいのができたなあ


ダウンロード先
OneDrive
test30_ListViewで画像ストック_20151117.7z
test30_ListViewで画像ストック_20151117_x86.zip
ヤフーボックス


苦いトマトの特徴レッドオーレ編

$
0
0
苦いトマトが採れた
イメージ 1
こうしてみると美味しそうなトマトなんだけどこれが
苦くて食べられなかった(゚д゚)マズー
同じナス科で苦いものといえばピーマンだけどそれとは違う苦味で
エグみのある、これは食べちゃいけないものだと感じる苦味


苦いトマトでググってよく見かけたのが
コープこうべ-商品検査センター-商品Q&A-野菜・果物
http://www.kobe.coop.or.jp/kensa/q_a/yasai001/backno012.html
この辺の説明にある
低温や病気などによって熟成がうまく進まなくて、青い時の苦味成分が赤くなってもそのまま残るっていうもの
だけど青いトマトとは違う苦さに感じたし、低昷によるなら他の株の実も苦くなるはず
病気だとしたら同じ株の他の実も苦くなると思うんだけどねえ

他には「ばら色かび病」によるもの
トマトの苦味 - 野菜に関する怪情報を探る
http://blog.goo.ne.jp/hidekihorie/e/186cb3f616c0edd6c8591292af1a095e
これかなあ

食べ残された苦いトマトの残骸
イメージ 2
イメージ 3
果肉は固めで特に下の方はナタデココみたいに噛みきれない感じ
種が下の方に集中していて少し黒くなっていたかな、種自体は普通のに比べると小さく成長しきれていないように見える


苦いトマトの外見上の特徴
イメージ 4
苦いトマトの外観は全く問題ないように見える
特徴的なのは扁平なこと、これだけ扁平なものは初めて
問題のないトマトは下の部分は少し尖っているのにこれは逆に凹んでいる
これだけ特徴的だったから注目していたんだよねえ

他のと比べて見る
イメージ 5
右下が苦いトマト
1ヶ月前に収穫されたものと比べると最近のは縦長から丸に近くなってきた
それでも苦いトマトはかなり扁平なのがわかる

トマトの品種によっては、もともと扁平なものもあるだろうから
レッドオーレの場合に限っては扁平で下が凹んでいるのは苦い確率が高いのかも

採れた場所
イメージ 6
イメージ 7
イメージ 21
B株の第2側枝の第3花房辺りからの収穫
この花房からは初めての収穫
隣の実も扁平な形だから苦いのかもねえ

収穫集計
イメージ 22
イメージ 23
これは200個は行くなあ

イメージ 24
A株の裂果が無くなったのは脇芽を伸び放題にして葉っぱが増えて
実に直射日光が当たりにくくなったせいかなあ

イメージ 25
去年と一昨年は11月中旬からは一気に平均気温が下がっている
未だにトマトが収穫できるのは今年の秋は暖かいせもあるのかな

イメージ 26
いつまで収穫できるんだろう

11/19の収穫、12個
イメージ 15
半数の6個が割れた!

イメージ 10
イメージ 13
A株
1番がA株の近くに落ちていたんだけどこれはB株から落ちたものだった

イメージ 11
B株
前日と前々日の雨で割れた
2番の割れた傷は乾燥気味なので割れたのは前々日の雨かなあ
それにしても割れる割れないの条件がわからない
さっきの床に落ちていたのはB株1番の実の隣についていたもので
床に落ちたにもかかわらず割れなかったのに房についたままのほうが割れた

イメージ 12
C株はかなり派手に割れた
2番は第11花房のまだ熟しきっていないものだった


2015/11/20(今日)、7個
イメージ 14
1ヶ月前のものと比べると酸味が強くなっている
夏より秋のトマトのほうが甘くなるって聞くけど逆だなあ
収穫するのが早過ぎるのかなあ

6,7番は苦いトマトの隣の房からだったから食べる前に身構えてしまったけど
大丈夫だった




C株の青い実にミナミアオカメムシ
イメージ 8
アオクサカメムシとの判別が難しく以下を参照した
あいち病害虫情報-愛知県農業総合試験場 環境基盤研究武 病害虫防除グループ

三重県病害虫防除所 2008

東京23区内の虫 2 2015年08月18日
東京23区内の虫 2 ミナミアオカメムシ

イメージ 9
主に稲や大豆に大きな被害を出す害虫でトマトも例外ではないみたい
この時はそんなこと知らないし汁を吸っている様子もないので
そのまま見逃してしまった
愛知県で見つかったのは2008年で
昔はもっと暖かい地方でしか見られなかったとか

イメージ 16
この黒い点はカメムシに汁を吸われた跡かなあ
皮をむいたらそれらしい傷はほとんどわかんないくらいだった

イメージ 17
皮むいて切って

イメージ 18
胡瓜とピーマンと大根を炒めてからトマトを合わせて煮た
味付けは塩と胡椒だけど、醤油と酢も入っているかも

イメージ 19
堅いキュウリは煮ると美味しい


スイートバジル
イメージ 20
そろそろ種を採ろうかと思って
風が穏やかで晴れの日を待っているんだけどなかなか来ない



大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その4、PixMark栞無月に名前変更

$
0
0

大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その3、画像のしおり機能 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
この記事の続き

アプリの名前を変更してアイコンも作った
右パネルに登録した画像の位置を変更できるようにした

イメージ 1
全体

アイコンとアプリ名変更
イメージ 2
test30_ListViewで画像ストックから
PixMark栞無月(ぴくすまーくかんなづき)
本の栞がBookmarkブックマークなら画像の栞はPictureMarkピクチャーマークかなと、栞って漢字を使いたい、栞は音読みの「カン」を使ったのでなんかいいのないかなあ、神無月…!の「カン」を入れ替えて栞無月、中二病的かっこよさを感じたので決定


右パネルの縮小画像位置の変更
イメージ 3
この状態で「上に1移動」ボタンクリックで

イメージ 4
選択画像が上に移動する(上にあった画像と入れ替わる)

イメージ 5
表示スタイルがLargeIconの時の並び順は
左上の起点から右に進んで突き当たったら改行になっているので
この場合3番を選択した状態で上に1移動すると2番と入れ替わる

しおり機能のオンオフ切り替えボタンの変更
イメージ 7
前回はムダに2回クリックだったので1回にするために
少し変更して

イメージ 6
こうなった

イメージ 8
次は右パネルの状態をファイルにして読み書きできるようにしたい

ダウンロード先
OneDrive
↑OneDriveへのリンクの作成の仕方がよくわかんない
PixMark栞無月_20151123_x86.zip
test30_ListViewで画像ストック_20151123.7z(ソースファイル一式)

ヤフーボックス
test30_ListViewで画像ストック_20151123.7z

A,B株はトマトモザイク病なのかも、苦いトマトの隣のトマトは苦くなかった

$
0
0

2015/11/21
イメージ 1
以前採れた苦いトマトの隣にあったのが5番

イメージ 2
同じ房ですぐ隣

下側の形
イメージ 3
左が5番
苦いトマトで特徴的だった扁平な形も似ていたから
これも苦いかもと警戒したけど全く問題なかったε-(´∀`*)ホッ

問題があったのは7番
イメージ 6
真っ赤ではなくて少しオレンジが入っている色だけど
ヘタが枯れていて取れそうになっていたので収穫
写真見てて随分丸いなあと思って●の図形を重ねてみたら

イメージ 9
ほんとにまんまるだった
金環トマト食
そうじゃなくて

食べようとした時
イメージ 5
左下が7番
ヘタを取ったところがかなり黒くなっている
切って中をみたら

イメージ 7
一部が黒くなっていた
ヘタのところから内部へ黒いのが入りこんだ感じ

イメージ 8
変色している部分以外は普通に食べられたけど
原因はなんだろうねえ

イメージ 10
酸っぱかった


2015/11/22
イメージ 4
C株第11花房は2つしか実らなくてこれで終了
第10花房はまだ4つも残っている

2015/11/24
イメージ 11
A株からはたくさん採れる
昨日の雨では1つも割れなかった

2015/11/25
イメージ 12
今日もたくさん採れたけどこれからは少なくなりそう

収穫数集計
イメージ 13
イメージ 14
200個越えた!

イメージ 15
A株が一気に伸びた

イメージ 16
昨日までは暖かかった、今日は寒い

C株側枝成長点
イメージ 17
昨日の風で柱とぶつかって折れてしまった

トマトの病気モザイク病?
イメージ 18
葉っぱの形が違う
C株は正常だと思われる先が尖り気味
A,B株は丸くて縮れていて小さい

昔の写真
イメージ 19
イメージ 20
7月、この頃は3株とも正常なはずで
葉っぱを見ると今のC株に近い形なのがわかる

A株の不調に気づいたのが2015/8/19辺り
簡易日除け、A株不調、トマト(レッドオーレ)種まきから101日目、スイートバジル満開 ( ガーデニング ) - 午後わてんのブログ - Yahoo!ブログ
イメージ 21
この時は肥料不足に気づいていなかったのもあってひどい状態
主枝はこの後には心止まりしてしまった

B株の不調はそれより後で2015/9/10辺り
イメージ 22
この頃には肥料不足は解消していたはず

イメージ 23
成長点付近を見ると様子がおかしい
台風の風で支柱と擦れてしまったのもあるけど

イメージ 24
成長速度が遅くなって16日後でもこれだけしか伸びていない
葉っぱの形も丸くなっている

最初はトマト黄化葉巻病を疑った
トマト黄化葉巻病の症状の1つに実がならないってのがあるけど
今まで収穫はできているのでこれは違う可能性が高い

トマト黄化病
http://www.jppn.ne.jp/kumamoto/H23/yasatu/tokusyu111006.pdf
群馬県 - 平成22年度 特殊報第1号 トマト黄化病
http://www.pref.gunma.jp/07/p14210090.html
部分的に枯れるえそってのが違うかなあ

トマトモザイク病
トマト モザイク病(CMV、TAV) : こうち農業ネット
http://www.nogyo.tosa.pref.kochi.lg.jp/info/dtl.php?ID=3267
野菜前線 - タキイ種苗
http://www.takii.co.jp/tsk/bugs/atm/disease/mozaiku/index.html
モザイク病ってのはいろいろな種類があるみたいで症状もそれぞれ
一番近いのはジャガイモXウイルス(PVX)ってのかなあ
葉っぱに軽いモザイク症状で実はなんともないっていうの
媒介するのがアブラムシってことなんだけど8月9月はほとんど見かけなくて
苗の頃の6月くらいの時には隣のジャガイモに何百匹っていたから
イチゴの苗作り、木酢液でアブラムシ避け、雨よけmkⅢ ( ガーデニング ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13159738.html
その時に感染して発病したのが8月9月ってことなのかなあ

イメージ 25
病気のせいかわからないけどA,B株のはC株に比べると
味が薄味で実も小さめ、でも収穫量はC株が一番少ない
やっぱりよくわかんないわ



PixMark栞無月その5、画像のブックマーク情報の保存

$
0
0
大量の画像ファイルから目的のものを選ぶアプリを作りなおしている途中その4、PixMark栞無月に名前変更 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13673525.html

の続き

イメージ 1
右パネルの状態をファイルにして保存できるようにした
保存したファイルを読み込んで状態を復元できるようにした
左下パネルの画像をダブルクリックで別ウィンドウで表示できるようにした
別ウィンドウでは元の大きさで画像を表示
ボタンの変更

タブページの保存
イメージ 2
右から二つ目をクリックで
ファイルの保存ダイアログが開くので

イメージ 3
名前を付けて保存
拡張子(.pmkにしてみた)は自動でつくはず

保存した栞(.pmk)ファイルの読み込み
イメージ 4
読み込みたい場所のPage2を選択して
右端のボタンをクリックでファイルを開くダイアログがでてくる

イメージ 5
.pmkファイルを選択して開くで

イメージ 6
保存した時の状態が復元される


画像を別ウィンドウで元の大きさで表示
イメージ 7
別ウィンドウで元の大きさで画像を表示
画像の大きさがデスクトップより大きい時はスクロールバーが表示される
別ウィンドウを閉じるときはダブルクリックか右上のxボタン

ボタンの見た目変更
イメージ 8
アイコンに変更した


タブページの状態保存
他のファイルと見分けがつくように拡張子は.pmkにしてみた
このファイルの中身はListViewItemに使うデータ、プロパティっていうのかな
具体的には縮小画像と表示する文字列を
<Serializable>
Public Structure ListItemData
    Property Name As String’表示名
    Property FullPath As String’画像ファイルのフルパス
    Property FolderPath As String
    Property IsZip As Boolean
    Property LargeIcon As Image’縮小画像
End Structure
こんなふうに
シリアライズできる属性をつけたStructureを作っておいて
保存するときに表示しているタブのListViewのItemやImageListの画像をこのStructureに入れて、シリアライズしたものをバイナリ形式で保存している
もっと効率のいい方法がありそうなんだけど今回はこれでいいや
シリアライズを使ったデータの保存はPixtack紫陽花の文字の描画のフォント設定の時に使ったのを見ながら作った

すべての記事一覧 - 詳細表示 - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/MYBLOG/yblog.html?fid=0&m=lc&sk=0&sv=%A5%B7%A5%EA%A5%A2%A5%E9%A5%A4%A5%BA



ダウンロード先
OneDrive
PixMark栞無月_20151126_x64.zip(64ビットウィンドウズ専用)
PixMark栞無月_20151126_x86.zip
test30_ListViewで画像ストック_20151126.7z





今年のプランター栽培スイートバジルのまとめ

$
0
0
今年のスイートバジル栽培のまとめ
トマトの記事のおまけみたいだったのをまとめてみた

種まきからの178日間をスライドショーにした動画


種まきの様子2015/5/28
トマトのその後とスイートバジルの種まきした ( ガーデニング ) - 午後わてんのブログ - Yahoo!ブログ
ここから始まって

2015/05/28種まき
イメージ 4
去年や一昨年より2ヶ月遅い種まきだった
今年は黒のビニールを用意できたのでマルチング
雑草も生えないし水やりの回数も減らせる

一ヶ月後
イメージ 10
7月に入ったあたりから成長が速くなって

イメージ 11
2週間でここまで成長

イメージ 12
イメージ 13
ここまで葉っぱが大きくなったのは初めて
黒マルチのおかげで水切れが少なかったからだと思う

去年の夏のスイートバジル
イメージ 14
種まきが3/19と今年より2ヶ月以上も早かったから花が咲いているけど
葉っぱが小さいのがわかる
マルチをしていなかったので1日1回の水補給では足りなくて
写真のようによくしおれさせていた

一昨年のスイートバジル
イメージ 15
葉っぱが小さいには土の量が少ないのもあるのかなあ
この年はズッキーニに夢中になっていたから放置気味だった

初収穫は7/23
イメージ 16
イメージ 17
花芽が出てきた左の株から収穫
これくらい切り取ってもすぐに脇芽が伸びてきて元通りになる

7/27
イメージ 18
かなりひどい水切れになってしまった
この時期は2日で1リットルの水が必要だった
これでもプランターを置いている場所は日陰になりやすい場所

7/29
イメージ 19
イメージ 20
真ん中の株から切り取って
イメージ 21
イメージ 22
こうなった
すべての脇芽とてっぺんのとろこまで切り取った
ここまでしたらどこまで復活するのか試した
結果は切り過ぎだった
一度にたくさん切り取るより少しづつのほうが良さそう

イメージ 24
開花したのはこの頃かな7/30は種まきから約2ヶ月

2週間後
イメージ 23
あまり伸びていない
この頃は毎日1リットルの水補給をしていたけど
2回くらいしおれさせてしまった

台風
イメージ 25
九州に来た台風15号の影響でこうだったのが

イメージ 26
こうなった

2回めの台風後
イメージ 27
16号だったかな?直撃だったけど大したことなかった
曲がったのはすぐに元に戻ると思っていたけど
これ以降も曲がったままだった

イメージ 38
イメージ 39
9月終わりごろには種もできてきた

10月の終わり
イメージ 40
あんまり変化ないね、花がいっぱい咲いてみがなって
葉っぱが増えていなくて黄色くなってきた

11月下旬
イメージ 41
右の株はほとんど枯れてしまった

種の採取
イメージ 1
枯れたところを切り取って

イメージ 3
一つの花で4つくらいの種ができる
中に入っている種は乾燥していれば揺すっただけでも
多少はパラパラ落ちてくるけど
最近は雨が多くて湿っていたので絞りだすようにして採取した

イメージ 2
2日晴れた後だったんだけど湿っていた

イメージ 5
右が去年ので真ん中が今年採取した種
発芽率は高いので10個もあればじゅうぶんなんだけどね

イメージ 6
まだ熟しきっていない種
左側が茎とつながっていた部分で右側が花が付いていた部分になる

イメージ 7
種が見える

イメージ 8
がくを取り除いたところ

イメージ 9
完熟した種に比べると少し大きい

追肥
イメージ 35
イメージ 36
8-8-8の化成肥料をこれくらいを1ヶ月に1回

イメージ 37
古い葉っぱが自然に黄色くなるのはゆっくりで何日もかかるけど
肥料切れの時は1日でもかなり黄色くなる




害虫
イメージ 28
メイガ類のどれかの幼虫、蜘蛛の巣みたいなのを張る
全部で10匹くらいいたかなあ、放置していたけど大した被害は出なかった

アオドウガネ
イメージ 29

三浦半島身近な図鑑 そらいろネット
http://sorairo-net.com/index.html
身近な昆虫図鑑:アオドウガネの成虫(5)
http://sorairo-net.com/insect/koganemushi/027.html
ここで名前がわかった
はじめて来た虫で植物の葉っぱを食べるらしいけど
この時は食べていなかったなあ、スイートバジルは食べないのかも?

その他寄ってきた虫
イメージ 30
シオカラトンボ

イメージ 31
イチモンジセセリ
イチモンジセセリ×オオチャバネセセリ 翅裏比較図ver.1.1 : 蝶鳥ウォッチング
http://yoda1.exblog.jp/13772331
ここ見て判定したけど難しいw

イメージ 32
イメージ 33
イメージ 34
セイヨウミツバチ
日本蜜蜂と西洋蜜蜂の違い
http://www.geocities.jp/kazuhati31/tigai.htm
お腹のシマシマが等幅なのがニホンミツバチで
尻尾のほうが太いシマシマなのがセイヨウミツバチらしい
ミツバチはたまにしか見かけなくて
来たと思ってもすぐどっか行っちゃうんだけど
この日は珍しく20分くらいスイートバジルの蜜を集めていたので
初めてまともに撮影することができた!
ほとんど無風で暖かい日だった



スイートバジルのプランター栽培まとめ
追肥は1ヶ月に1回で問題なさそう
黒マルチは土の乾燥を防ぐのに必要、雑草も生えないのでラクチン
土が乾燥気味だと葉っぱが大きくならない、堅い葉っぱになる(たぶん)
夏は毎日1リットルの水が必要だった
半分日陰になる場所でも夏ならよく育つと書きつつ
さっき検索したら夏の日差しだと葉っぱが焼けてしまうから半日陰が良いとあった
今年使ったプランターの大きさだと植える本数は3本で適正だった感じ、2本か3本かな、4本だと狭くなると思う



PixMark栞無月その6、かなりイマイチなできになった

$
0
0

PixMark栞無月その5、画像のブックマーク情報の保存 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
の続き

2015/12/06
しおりタブの削除をできるようにした
すべてのタブのデータを纏めて1つのファイルにして保存できるようにした
その保存したファイルを開くことができるようにした
そのファイルの拡張子は.pmkにした、
以前のしおりタブ個別の保存ファイルと同じ拡張子だけど互換性無し
しおりタブ個別保存は廃止した

2015/12/05
フォルダパネルとしおりパネルの両方のすべてデータを保存できるようにした

2015/12/04
フォルダパネルも複数タブにした
フォルダタブの更新をできるようにした(実際のフォルダにある画像ファイルとの同期)

2015/12/03
フォルダタブのデータを保存できるようにした
フォルダパネルにドロップした時に同じフォルダが在ればそのフォルダのタブを表示するようにした

2015/12/03以前
いろいろ


イメージ 1
見た目はあんまり変わってないね

更新ボタン
イメージ 2
元のフォルダに画像を追加や削除しても
自動では更新されないので更新ボタンで更新
イメージ 3
追加された画像が表示されるようにしたけど
処理に時間がかかりすぎる!
4000ファイルあるところに100足して更新すると5分以上かかった
フルパスを使って有無を判定して、ないものだけ登録しているんだけど
これじゃ全部登録し直すのと変わらないなw

複数フォルダに対応
イメージ 4
左のパネルも複数に対応したので同期させた時も
イメージ 5
左のフォルダタブも切り替わって同じ画像が選択状態になる

状態の保存と読込
イメージ 7
右上にある全部保存のボタンで

イメージ 6
名前を付けて保存
拡張子は以前と同じpmkだけど互換性無し
これからも互換性無しで変わっていくかなあ
って保存開始したら
10分たっても終わらないw
保存対象は4000+2000+300の合計6300くらいの縮小画像や
ファイルのフルパスを保存

トマトの様子を見に行って帰ってきたら終わってた
出来上がったファイルのサイズは200MB
イメージ 8
結構大きなサイズになる
縮小画像でも圧縮なしの6000個だからなあ

保存したファイルを開いてみる
イメージ 10
開くときは右上にある全部読込ボタン

イメージ 9
選択して開く

イメージ 11
開くことができた
タブの表示名は再現されないのは仕様
保存する時10分以上かかったから開くときも時間かかるのかと思ったけど
1分もかからなかった

その他追加変更
イメージ 12
フォルダと栞のタブの追加と削除をできるようにした
矢印のアイコンは栞に登録した画像の位置の変更用

左下の画像をダブルクリックすると
イメージ 13
左下のパネルは縮小画像をウィンドウサイズに合わせて
表示しているのでどうしてもぼやけてしまう
元の大きさで確認したい時があるので
画像をダブルクリックすると別ウィンドウで開くようにした
イメージ 14
元の大きさで表示
このウィンドウを閉じるときは画像をダブルクリック


ここまで変更するのに10日くらいかかったんだけどかなりイマイチなできになった
テストしているときは7~300くらいの画像ファイルだったから更新や保存に時間がかかっているのに全く気づかなかった、6000ファイルとかだと時間がかかるのがわかったけど方法がおかしいんだろうなあ
TabControlにListViewを置いて、ListViewのItemのSubItemに縮小画像とファイル名、フルパス、フォルダパスとか設定して表示して
保存するときは
<Serializable>
Public Structure SioriData
    Property Name As List(Of String)         '1列目、ファイル名
    Property FullPath As List(Of String)     '2列目、フルパス
    Property FolderPath As List(Of String)   '3列目、フォルダパス
    Property IsZip As List(Of Boolean)       'Zipファイルか否か
    Property LargeIcon As List(Of Image)     'アイコン画像
End Structure

こんなふうにPropertyを並べたStructureを作っておいて
ListViewItemからそれぞれコピーしてStructureをシリアライズして保存している
時間がかかっているのはコピーしているところかなあ
一個一個for~Nextで回しているんだけど、これかなあ
根本的に間違っている気もする、データベースとかを使えば早くなるのかも
だとしたら直すのムリかも、データベースはさっぱりわからん
でも問題は速さだけだなあ、何を作りたいのかはわかった気がする

全く実用できない状態だけど
ダウンロード先
OneDrive
PixMark栞無月_20151207_x64.zip
PixMark栞無月_20151207_x86.zip
test30_ListViewで画像ストック_20151207.7z

ヤフーボックス
PixMark栞無月_20151207_x64.zip
PixMark栞無月_20151207_x86.zip
test30_ListViewで画像ストック_20151207.7z


Viewing all 420 articles
Browse latest View live