Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
If (PictureBox1.Image Is Nothing) Then MsgBox("サイズ変更するイメージがありません" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ") Exit Sub ElseIf (ComboBox1.Text = "") Then MsgBox("倍率が指定されていません。" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ") Exit Sub End If
'画像を拡大、縮小して表示する(スケーリング) 'PictureBox1のGraphicsオブジェクトの作成 Dim g As Graphics = PictureBox1.CreateGraphics() Dim w_scall As Single
Private STR as string 'ファイル名 Private _bmp As New Bitmap(STR) 'ビットマップ
Private Sub PictureBox1_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) _ Handles PictureBox1.Paint 'Paintイベントハンドラで画像を表示する e.Graphics.DrawImage(_bmp, 0, 0) End Sub
<変数宣言> Public pbBitmap As Bitmap Public w_scall As Single
<回転>
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
If (pbBitmap Is Nothing) Then MsgBox("サイズ変更するイメージがありません" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ") Exit Sub ElseIf (ComboBox1.Text = "") Then MsgBox("倍率が指定されていません。" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ") Exit Sub End If
'画像を拡大、縮小して表示する(スケーリング) 'PictureBox1のGraphicsオブジェクトの作成 Dim g As Graphics = PictureBox1.CreateGraphics()
'倍率の設定 Dim rect As New Rectangle(0, 0, _ 1.0 * w_scall * pbBitmap.Width, _ 1.0 * w_scall * pbBitmap.Height)
'イメージを表示する。 g.DrawImage(pbBitmap, rect)
g.Dispose()
End Sub
<縮小(拡大)> Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click If (pbBitmap Is Nothing) Then MsgBox("回転するイメージがありません" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ") Exit Sub End If
pbBitmap.RotateFlip(RotateFlipType.Rotate90FlipNone) PictureBox1.Image = pbBitmap End Sub
Public Class Form1 Inherits System.Windows.Forms.Form
Dim bmap As Image = Image.FromFile("C:\test.jpg") Dim sMagnification As Single '拡大率 Dim sMagnification2 As Single '前回の拡大率 Dim sMinX As Single '拡大・縮小時の左上点X座標 Dim sMinY As Single '拡大・縮小時の左上点Y座標 Dim sMinX2 As Single '前回の左上点X座標 Dim sMinY2 As Single '前回の左上点Y座標 Dim iRCount As Integer '左クリック回数(拡大率分母) Dim iLCount As Integer '右クリック回数(拡大率分子) Dim iRoll_Flg As Integer '回転フラグ(0:0度 1:90度 2:180度 3:270度) Dim sCenterX As Single '表示部分の中心X座標 Dim sCenterY As Single '表示部分の中心Y座標
Const ciIncreases As Integer = 1 '拡大率増減量
#Region " Windows フォーム デザイナで生成されたコード " '省略します。 #End Region
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim sClickPointX As Single '画像全体でのクリックしたX座標 Dim sClickPointY As Single '画像全体でのクリックしたY座標 Dim sPercent As Single '前回の拡大率から今回の拡大率の増減割合
If e.Button = MouseButtons.Left Then '左クリック時(拡大) 'クリックカウントの増減 If iRCount <= ciIncreases Then iLCount = iLCount + ciIncreases Else iRCount = iRCount - ciIncreases End If
ElseIf e.Button = MouseButtons.Right Then '右クリック時(縮小) 'クリックカウントの増減 If iLCount <= ciIncreases Then iRCount = iRCount + ciIncreases Else iLCount = iLCount - ciIncreases End If
分類:[.NET]
初めまして。よしねと申します。
現在、PictureBoxをつかって画像処理を行なっているのですが、
どうしても拡大と縮小がうまくいきません。
画面にImageを表示したあと、別のウィンドウに移動して、再び実行画面に戻ると
画像がサイズ変更を行なう前に戻っています。
以下はサイズ変更ボタンを押した時の処理です。
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
If (PictureBox1.Image Is Nothing) Then
MsgBox("サイズ変更するイメージがありません" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ")
Exit Sub
ElseIf (ComboBox1.Text = "") Then
MsgBox("倍率が指定されていません。" & vbCrLf, MsgBoxStyle.Exclamation, "エラーメッセージ")
Exit Sub
End If
'画像を拡大、縮小して表示する(スケーリング)
'PictureBox1のGraphicsオブジェクトの作成
Dim g As Graphics = PictureBox1.CreateGraphics()
Dim w_scall As Single
w_scall = CSng(Trim(Mid((ComboBox1.Text), 1, 3))) / 100
'倍率の設定
Dim rect As New Rectangle(0, 0, _
1.0 * w_scall * PictureBox1.Image.Width, _
1.0 * w_scall * PictureBox1.Image.Height)
'イメージのクリア
g.Clear(Color.White)
'イメージを表示する。
g.DrawImage(PictureBox1.Image, rect)
g.Dispose()
End Sub
下手な説明で大変申し訳ないですが、レクチャーお願いします。