初めまして、中野といいます。
まだVBを始めたばかりの未熟者ですがよろしくお願いします。
早速質問をお願いします。
jpgファイルを一度開いて、その後「名前を付けて保存」で
ダイアログのフィルタを「ico」にして保存しようとしているのですが、保存ができません。
Private Sub mnuFS_Click()
Dim pict_file_name as String
CommonDialog1.CancelError = True
On Error GoTo ErrorHandl
CommonDialog1.Filter = "アイコン (*.ico)|*.cur"
CommonDialog1.InitDir = "c:\My Documents"
CommonDialog1.ShowSave
pict_file_name = Picture1.Picture
SavePicture Picture1.Picture, pict_file_name
ErrorHandl:
MsgBox "ファイルが不正です。"
End Sub
もう1つお尋ねしたい事があります。
jpg等の画像ファイルを開いたとき、ピクチャボックスより小さい写真や大きい写真を、ピクチャボックスにピッタリになるように表示したいのですがどのようにすればよいでしょうか?
ピクチャボックスが正方形で、縦の長さがX、横がYとしてお教えください。
意味不明のところがあるかもしれませんがよろしくお願いします。
> CommonDialog1.Filter = "アイコン (*.ico)|*.cur"
なぜ、"*.cur"なのでしょうか?(^^;
> jpgファイルを一度開いて、その後「名前を付けて保存」で
> ダイアログのフィルタを「ico」にして保存しようとしているのですが、保存ができません。
ダイアログを使おうと使うまいと、画像形式が自動変換されるわけでは
ありませんから、ImageListコントロール(のExtractIconメソッド)などを
使って、自分で画像形式を変換してやる必要があります。
> ピクチャボックスより小さい写真や大きい写真を、
> ピクチャボックスにピッタリになるように表示したい
ピクチャボックス コントロールではなく、イメージコントロールを
使った方が簡単かと思いますよ。
どうしてもイメージでやるなら、Pictureプロパティにセットするのではなく、
PaintPictureを使って、位置とサイズを指定して「描画」する必要があります。
> pict_file_name = Picture1.Picture
Picture1.Pictureは、「Pictureオブジェクト」を返します。
ファイル名を返すわけではありません。
もしも変数に取得するなら、
Dim P As Picture
Set P = Picture1.Picture
のように書く事になるでしょう。
> SavePicture Picture1.Picture, pict_file_name
> ErrorHandl:
「ErrorHandl:」の前行に、Exit FunctionやExit Subなどといった
コードを埋め込んで置いてください。
このままですと、エラーが起きなかった場合も、
「ErrorHandl:」以降のコードが実行されてしまう事になります。
魔界の仮面弁士さん、返信ありがとうございます。
>「ErrorHandl:」の前行に、Exit FunctionやExit Subなどといった
>コードを埋め込んで置いてください。
>ダイアログを使おうと使うまいと、画像形式が自動変換されるわけでは
>ありませんから、ImageListコントロール(のExtractIconメソッド)などを
>使って、自分で画像形式を変換してやる必要があります。
なぜか「Exit Sub」を書き足しただけでできました。ただ、元のjpg写真は使えなくなってしまいました。
「*.cur」は間違えてしまいました。すみません。書いていたときボケてたみたいです・・・・(汗”
ツイート | ![]() |