2016-04-15 25 views
0

ピクチャボックス内の画像のズーム距離を調整するにはどうすればよいですか?ピクチャボックス内の画像を拡大する

私は、ファイルからのPictureBoxにイメージをロードしていますが、ここに私のコードです...

Dim fs As FileStream 

OpenFileDialog1.Filter = "JPG files (*.jpg)|*.jpg|" & "BMP Files (*.bmp)|*.bmp|" _ 
    & "TIF Files (*.tif)|*.tif|" & "PNG Files (*.png)|*.png|" & "ALL Files (*.*)|*.*" 
OpenFileDialog1.Title = "Select an Image File" 
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then 
    currentfilename = OpenFileDialog1.FileName 
    If currentfilename.ToUpper.EndsWith(".JPG") Or _ 
    currentfilename.ToUpper.EndsWith(".BMP") Or _ 
    currentfilename.ToUpper.EndsWith(".TIF") Or _ 
    currentfilename.ToUpper.EndsWith(".PNG") Then 
     If Not (Pic.Image Is Nothing) Then 
      Pic.Image.Dispose() 
      Pic.Image = Nothing 
     End If 
     fs = New FileStream(currentfilename, IO.FileMode.Open, IO.FileAccess.Read) 
     Pic.Image = Image.FromStream(fs) 
     original = Pic.Image 
    End If 
End If 

そして私は...このコードを使用して

If original Is Nothing Then 
    Exit Sub 
End If 
If Not converted Is Nothing Then 
    converted.Dispose() 
End If 
If Not zoomImage Is Nothing Then 
    zoomImage.Dispose() 
End If 

zoomImage = New Bitmap(original, _ 
      (Convert.ToInt64(original.Width * (ZoomValue)/100)), _ 
      (Convert.ToInt64(original.Height * (ZoomValue/100)))) 

converted = Graphics.FromImage(zoomImage) 

converted.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic 

Pic.Image = Nothing 
Pic.Image = zoomImage 
をズーム距離を調整しています

私はちょうど小さな画像を使用していますが、私は大きな画像を持っている場合、私は表示している1つの画像は、1.5MBのTIFFファイルですサイズは33000 x 4000です。画像のズームレベルを調整したいだけで、画像を描画したり、色を変更したりする必要はありませんピクセルまたは他の任意の操作のあなたはパネルのPaintイベントを処理したい場合があります示唆

答えて

0

チェックアウトthis answer /ピクチャ

あなたがそうのようにそれを行うことができます:

Private Sub Pic_Paint(sender As Object, e As PaintEventArgs) Handles Pic.Paint 
    Dim newRect = New Rectangle(0, 0, _ 
     (Convert.ToInt64(original.Width * (ZoomValue/100))), _ 
     (Convert.ToInt64(original.Height * (ZoomValue/100)))) 
    e.Graphics.DrawImage(u, New Rectangle(0, 0, Pic.Width, Pic.Height), _ 
          newRect, GraphicsUnit.Pixel) 
End Sub