PictureBoxへImage.FromFileで表示する場合の配置について
投稿者 拓  (社会人)
投稿日時
2009/4/3 22:51:21
まず無理だと思います。
なにゆえ、そのようなことをする必要があるのかおしえていただけますか?
なにゆえ、そのようなことをする必要があるのかおしえていただけますか?
投稿者 あにす  (社会人)
投稿日時
2009/4/3 22:52:30
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.picturebox_members(VS.80).aspx
MSDNを確認してもPictureBoxにはそういったメンバは無い様なので出来ないと思います。
少し面倒ですが、自分で描画するしかないですね。
MSDNを確認してもPictureBoxにはそういったメンバは無い様なので出来ないと思います。
少し面倒ですが、自分で描画するしかないですね。
投稿者 あにす  (社会人)
投稿日時
2009/4/3 23:27:58
面白そうだったので自前で描画してみました。
面倒かと思いましたが、書いてみるとそれ程でもないようです。
面倒かと思いましたが、書いてみるとそれ程でもないようです。
Public Class Form1
Dim img As Image = Image.FromFile("C:\俺の嫁.bmp")
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim imgアスペクト比 As Double = img.Width / img.Height
Dim pbアスペクト比 As Double = sender.Width / sender.Height
Dim 描画サイズ As Size
If imgアスペクト比 > pbアスペクト比 Then
描画サイズ = New Size(sender.Width, sender.Width / imgアスペクト比)
ElseIf imgアスペクト比 < pbアスペクト比 Then
描画サイズ = New Size(sender.Height * imgアスペクト比, sender.Height)
Else
描画サイズ = New Size(sender.Width, sender.Height)
End If
e.Graphics.DrawImage(img, sender.Width - 描画サイズ.Width - 1, 0, 描画サイズ.Width, 描画サイズ.Height)
End Sub
Private Sub PictureBox1_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.SizeChanged
sender.Refresh()
End Sub
End Class
投稿者 pirori  (その他)
投稿日時
2009/4/3 23:30:59
拓さん、あにすさん、ご返答ありがとうございます。
やはり無理でしたか…
>なにゆえ、そのようなことをする必要があるのかおしえていただけますか?
本のようなイメージなんですが、左右に見開き状態のPictureBoxを2つ配置し、それぞれのPictureBoxに画像を表示し、ページをめくって(進める)ようなものをノートPCで作ったのですが、デスクトップ機で開いてみると小さすぎたので、拡大/縮小できるように対応しました。が、画面サイズにFormを合わせてPictureBoxを変形することにより、左右のPictureBoxの中央に表示されると間延びするんです。更に見開きいっぱい使ったページでは間が離れすぎなので、左のPictureBoxは右寄せ、右のPictureBoxは左寄せにしたかったのです。
かといってPictureBoxの縦横比を固定してしまうと、他のサイズの画像に対応できなくなるし…と悩んでいます。
>MSDNを確認してもPictureBoxにはそういったメンバは無い様なので出来ないと思います。
>少し面倒ですが、自分で描画するしかないですね。
お手数おかけ致しました。私も一応F1のHelpで探したのですが。
自分で描画ですか…考えてみます。
やはり無理でしたか…
>なにゆえ、そのようなことをする必要があるのかおしえていただけますか?
本のようなイメージなんですが、左右に見開き状態のPictureBoxを2つ配置し、それぞれのPictureBoxに画像を表示し、ページをめくって(進める)ようなものをノートPCで作ったのですが、デスクトップ機で開いてみると小さすぎたので、拡大/縮小できるように対応しました。が、画面サイズにFormを合わせてPictureBoxを変形することにより、左右のPictureBoxの中央に表示されると間延びするんです。更に見開きいっぱい使ったページでは間が離れすぎなので、左のPictureBoxは右寄せ、右のPictureBoxは左寄せにしたかったのです。
かといってPictureBoxの縦横比を固定してしまうと、他のサイズの画像に対応できなくなるし…と悩んでいます。
>MSDNを確認してもPictureBoxにはそういったメンバは無い様なので出来ないと思います。
>少し面倒ですが、自分で描画するしかないですね。
お手数おかけ致しました。私も一応F1のHelpで探したのですが。
自分で描画ですか…考えてみます。
投稿者 pirori  (その他)
投稿日時
2009/4/3 23:35:56
なんと返信文を書いている間にコードまで…
参考にさせていただきます。ありがとうございます。
参考にさせていただきます。ありがとうございます。
投稿者 拓  (社会人)
投稿日時
2009/4/4 03:26:51
pirori さんへ
面白そうなものを作ってますね。
できたらぜひ披露してください。
楽しみにしています。
面白そうなものを作ってますね。
できたらぜひ披露してください。
楽しみにしています。
投稿者 pirori  (その他)
投稿日時
2009/4/4 07:59:35
拓さん、遅くなりました。
あにすさんのコードで、右寄せはできるようになったのですが、ページが進めなくなってしまい、格闘中でした。どう組み合わせればいいのか、結局のところ進んでいません。
なにぶん初心者なもので…
というわけで、とても晒せるようなシロモノではありませんよ(汗)
あにすさんのコードで、右寄せはできるようになったのですが、ページが進めなくなってしまい、格闘中でした。どう組み合わせればいいのか、結局のところ進んでいません。
なにぶん初心者なもので…
というわけで、とても晒せるようなシロモノではありませんよ(汗)
投稿者 pirori  (その他)
投稿日時
2009/4/4 09:06:58
やっと思ったとおり動くようになりました。
ありがとうございました。
ありがとうございました。
VB2005Expressを使用。PictureBoxへImage.FromFileを使用し、Zoomでサイズを合わせてjpg画像を表示しています。PictureBoxはAnchorでFormに合わせて変形する仕様です。
そこで、対象の画像が縦長な場合、縦はPictureBoxいっぱいになって良いのですが、横は左右が空いた中央配置になってしまいます。これを右Anchorみたいに右寄せ配置して左側を空けたいのですが、PictureBox内のImageのAnchorってできるのでしょうか?コードスニペットにそれらしい候補がなく、立往生です。
初歩的な質問で申し訳ありませんが教えてください。よろしくお願いします!