ノータッチデプロイメントの勉強…。
ノータッチデプロイメントはリソース管理が激しく厳しい。インターネットからダウンロードされたアプリケーションのエビデンスはクライアントリソースに殆どアクセスができないのです。ファイルを開く場合も、OpenFileDialogのOpenFileを経由しないとクライアントのファイルを開けないのです。*1
で、ノータッチデプロイメントで画像を編集したいので下記のようなコードを書いてみました。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim OpenFileDialog1 As New OpenFileDialog 'ダイアログの設定 OpenFileDialog1.Filter = "Jpegファイル(*.JPG)|*.JPG" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then Dim myFS As IO.Stream = OpenFileDialog1.OpenFile Me.PictureBox1.Image = Image.FromStream(myFS) End If End Sub
しかし、コレだと単一のファイルしか読めない。
というわけで、下記のように変更。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim OpenFileDialog1 As New OpenFileDialog 'ダイアログの設定 OpenFileDialog1.Filter = "Jpegファイル(*.JPG)|*.JPG" '複数ファイルを開く OpenFileDialog1.Multiselect = True If OpenFileDialog1.ShowDialog() = DialogResult.OK Then Dim myFS As IO.Stream = OpenFileDialog1.OpenFile Me.PictureBox1.Image = Image.FromStream(myFS) End If End Sub
だがしかーし。
FileOpenメソッドは配列ではない。複数ファイルを選択した場合でも最初のファイルしか取得してくれないらしい。複数ファイルを選択した場合はどうすればいいのだろうか。わからん。ノータッチデプロイメントでなければ、OpenFileDialog1.FileNamesをぶん回すのだけど…。不可能なのかなぁ。エビデンスを上げれば問題ないんだよな。
*1:まぁ、当たり前といえば当たり前なのかもしれないのですが。