C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 画像保存先を参照


(過去ログ 107 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■63949 / inTopicNo.1)  画像保存先を参照
  
□投稿者/ たっちゃん (1回)-(2012/10/31(Wed) 11:51:04)

分類:[VB.NET/VB2005 以降] 

2012/11/01(Thu) 11:33:46 編集(投稿者)
2012/10/31(Wed) 12:04:08 編集(投稿者)

現在PCの画面をキャプチャーしてそれを画像pngとして指定した場所(フォルダ)に保存するという処理をしているのですが、保存先をコードの中に直接書いており保存先のフォルダの場所を変えても『参照ボタン』で保存先を指定(設定)できるようにしたいのですが、どのようにコードを書いたらよろしいでしょうか?
 ソフト<Visual Studio2008> 使用言語<VB>
----------------------------------------------------
Public Class Form1

'Dim gazou As String '自動画像配列
Dim i As Integer


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



'PictureBox1の大きさを取得()
Dim rect As Rectangle = PictureBox1.ClientRectangle

'PictureBox1に表示されている画像を取得するためのBitmap
Dim bmp As New Bitmap(rect.Width, rect.Height)

'bmpに画像を入れるための準備
Dim g As Graphics = Graphics.FromImage(bmp)
Dim pea As New PaintEventArgs(g, rect)

'PaintBackgroundイベントを発生
Me.InvokePaintBackground(PictureBox1, pea)

'Paintイベントを発生
Me.InvokePaint(PictureBox1, pea)

'画像を保存する(20枚を超えると初めの画像を上書き)

If i < 19 Then
bmp.Save("D:\Gazou\画像" & i + 1 & ".png")
i = i + 1

Else
i = 0 '1から上書き
bmp.Save("D:\Gazou\画像\画像" & i + 1 & ".png")
MsgBox("20枚超えたので1枚目から上書きいたします。")
i = i + 1

End If


'後始末
g.Dispose()
bmp.Dispose()


End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

'タイマー有効時に画面全体をコピーする。

'Bitmapの作成
Dim bmp As New Bitmap(Screen.PrimaryScreen.Bounds.Width, _
Screen.PrimaryScreen.Bounds.Height)

'Graphicsの作成
Dim g As Graphics = Graphics.FromImage(bmp)

'画面全体をコピーする
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), bmp.Size)

'解放
g.Dispose()

'表示
PictureBox1.Image = bmp


End Sub

End Class

----------------------------------------------------------------------------
お忙しいところすみませんがよろしくお願いします。m(__)m

追記
ブラウザの設定により自動的に事前から指定していた場所に保存されると思うのですが、そんな感じで保存先を変えたい際は設定ボタンみたいなのを押したら変更できるようにし、通常は保存ボタンを押すと先ほど設定した保存先にダイアログ等表示せず保存されるような感じです。
直接コードに固定の指定場所を書いていたら変更する際コードをいじらないといけないので;;
引用返信 編集キー/
■63955 / inTopicNo.2)  Re[1]: 画像保存先を参照
□投稿者/ howling (24回)-(2012/10/31(Wed) 15:35:53)
???

FileDialogの系統を使えばいいんじゃないかな?

//OpenFileDialog
http://dobon.net/vb/dotnet/form/openfiledialog.html

でも、こんなのは「vb ファイル 読み込み」で検索すれば出るし…何をしたいんでしょう。
引用返信 編集キー/
■63971 / inTopicNo.3)  Re[1]: 画像保存先を参照
□投稿者/ Azulean (56回)-(2012/10/31(Wed) 22:14:43)
まあ、もう少しだけ。
FolderBrowseDialog と Path.Combine あたりを組み合わせれば、自分の指定したフォルダーに保存するコードも書けるかと思います。
引用返信 編集キー/
■63976 / inTopicNo.4)  Re[2]: 画像保存先を参照
□投稿者/ たっちゃん (3回)-(2012/11/01(Thu) 10:49:14)
2012/11/01(Thu) 10:50:35 編集(投稿者)

No63955 (howling さん) に返信

> でも、こんなのは「vb ファイル 読み込み」で検索すれば出るし…何をしたいんでしょう。

説明不足で本当にすみませんm(__)m
えーっとたとえるならgoogleのブラウザでソフトをダウンロードした際にブラウザの設定により自動的に事前から指定していた場所に保存されると思うのですが、そんな感じで自由に保存先を変更できるような感じにしたいです。

直接コードに固定の指定場所を書いていたら変更する際コードをいじらないといけないので;;
引用返信 編集キー/
■63978 / inTopicNo.5)  Re[2]: 画像保存先を参照
□投稿者/ howling (30回)-(2012/11/01(Thu) 11:11:57)
たっちゃんさん

…FileDialogではダメってことですか?(苦笑
引用返信 編集キー/
■63980 / inTopicNo.6)  Re[3]: 画像保存先を参照
□投稿者/ たっちゃん (4回)-(2012/11/01(Thu) 11:25:29)
No63978 (howling さん) に返信

先ほどいただいたURLとFileDialogでどうにかできないか調べています。
これを使ってどうのようにすればいいのか難しいですね・・・。
引用返信 編集キー/
■63981 / inTopicNo.7)  Re[4]: 画像保存先を参照
□投稿者/ howling (31回)-(2012/11/01(Thu) 11:34:01)
いえ、これで難しいとなると、もう何が難しいやらわからなくなるんですが…

usingでOpenFileDialog使う
ResultがOKならパスを読み込む
あとはPathクラスの何やらとか、
Fileクラスの何やらを使って好き勝手。

以下駄文。
…プログラマーの方では無いとか…?
知り合いのゲーム会社で、サウンドの方がグラフィッカーやってたり、
企画で入った方がプログラム組んでたりする話は聞いたことありますが…。
引用返信 編集キー/
■63983 / inTopicNo.8)  Re[1]: 画像保存先を参照
□投稿者/ ヴァン (4回)-(2012/11/01(Thu) 12:09:10)
こんにちは。

保存フォルダを指定したいのですよね?
FolderBrowserDialogの方が良いと思いますが...

> Public Class Form1
>
> 'Dim gazou As String '自動画像配列
> Dim i As Integer

変数名で i とかはループ内の閉じられた処理で使うのが一般的かと。

> If i < 19 Then
> bmp.Save("D:\Gazou\画像" & i + 1 & ".png")
> i = i + 1
>
> Else
> i = 0 '1から上書き
> bmp.Save("D:\Gazou\画像\画像" & i + 1 & ".png")
> MsgBox("20枚超えたので1枚目から上書きいたします。")
> i = i + 1
>
> End If

なんかデジャブ...

引用返信 編集キー/
■63985 / inTopicNo.9)  Re[2]: 画像保存先を参照
□投稿者/ howling (33回)-(2012/11/01(Thu) 12:27:47)
ヴァンさん

はっ…本当だフォルダ指定の方かもしれないですね。
ならそちらの方が良いでしょうね。
使い方はほとんど変わりません。
見た目は変わりますが…。
1つのフォルダに全部書き出す形ならいいでしょうね。
1.pngとかの名称で保存するのなら、相対パスで保存して、
保存するフォルダ名だけ書いてもらってフォルダが無かったら作成…とかもアリだと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -