1

.NETのPictureBoxから画像をコピーして、別の画像の上に描画しようとしています。最初の画像の上に画像をペイントするときに、画像ボックスのsizemodeプロパティを保持するにはどうすればよいですか?

前もって感謝します...

編集:これは、PictureBox(pbImage)の画像を別のPictureBox(pbContainer)の画像にペイントするために使用していたコードです。SizeModeをpbImageでズームするように設定しています。私が抱えていた問題は、pbImageと同じ外観を使用して画像をペイントしようとしたことであり、画像ボックスに表示されている画像のサイズを、方法ではなくSizeMode=Zoomで確認する方法があるかどうか疑問に思っていました。元の画像のサイズが変更されます。

Private Function FlattenImage() As Bitmap
    Dim bmp As New Bitmap(pbContainer.Image, pbContainer.Size)
    Using insertImage As New Bitmap(pbImage.Image, pbImage.Width, pbImage.Height), g As Graphics = Graphics.FromImage(bmp)
        Dim insertLocation As New Point(pbImage.Left - pbContainer.Left, pbImage.Top - pbContainer.Top)
        g.DrawImage(insertImage, insertLocation)
        Return bmp
    End Using
End Function

私は次のようにDrawToBitmap()を使用することになりました:

Private Function FlattenImage() As Bitmap
    Dim bmp As New Bitmap(pbContainer.Image, pbContainer.Size)
    Using insertImage As New Bitmap(pbImage.Width, pbImage.Height), g As Graphics = Graphics.FromImage(bmp)
        Dim insertLocation As New Point(pbImage.Left - pbContainer.Left, pbImage.Top - pbContainer.Top)
        Dim rect As New Rectangle(New Point(0, 0), pbImage.Size)
        pbImage.DrawToBitmap(insertImage, rect)
        g.DrawImage(insertImage, insertLocation)
        Return bmp
    End Using
End Function

必要に応じて動作します。ただし、将来的に役立つ可能性があるため、さまざまなSizeModeを使用してPictureBoxに表示される画像のサイズを取得する方法があるかどうかを調べることに興味があります。

ありがとう。

4

1 に答える 1

0

たとえば、PictureBox1.BackColor を透明に設定します。

Dim x As New Bitmap(PictureBox1.Width, PictureBox1.Height)
PictureBox1.DrawToBitmap(x, PictureBox1.DisplayRectangle)

その後、ループを使用して、左、右、上、下から領域を計算できます。例えば:

If Not (x.GetPixel(i, j) = Color.Transparent) Then
EdgeFound(i,j)
End If
于 2012-08-13T22:47:37.290 に答える