从C转换后获取代码中Visual Basic错误的ROI

时间:2013-06-21 19:02:42

标签: vb.net image-processing

我一直致力于获得图像的投资回报率,我正试图获得一个方形盒子,它可以在该区域内移动并且可以点击并获得标准偏差。我熟悉c所以我使用了c到VB的转换器,但我得到的错误是该语句在命名空间中无效。一切似乎都与VB代码兼容。我对此事的任何建议表示感谢。感谢

Private Function DrawRoi(Image As Bitmap, rect As RectangleF) As oid
Dim roi As New Rectangle()

roi.X = CInt(CSng(Image.Width) * rect.X)
roi.Y = CInt(CSng(Image.Height) * rect.Y)
roi.Width = CInt(CSng(Image.Width) * rect.Width)
roi.Height = CInt(CSng(Image.Height) * rect.Height)

Dim timer As New Stopwatch()
timer.Start()
' graphics manipulation takes about 240ms on 1080p image
Using roiMaskImage As Bitmap = CreateRoiMaskImage(ImageWithRoi.Width, ImageWithRoi.Height, roi)
    Using g As Graphics = Graphics.FromImage(ImageWithRoi)
        g.DrawImage(Image, 0, 0)
        g.DrawImage(roiMaskImage, 0, 0)
        Dim borderPen As Pen = CreateRoiBorderPen(ImageWithRoi)
        g.DrawRectangle(borderPen, roi)
    End Using
End Using
Debug.WriteLine("roi graphics: {0}ms", timer.ElapsedMilliseconds)
Me.imagePictureBox.Image = ImageWithRoi
End Function

Private Function CreateRoiMaskImage(width As Integer, height As Integer, roi As Rectangle) As Bitmap
Dim image As New Bitmap(width, height, PixelFormat.Format32bppArgb)
Using g As Graphics = Graphics.FromImage(image)
    Dim dimBrush As New SolidBrush(Color.FromArgb(64, 0, 0, 0))
    g.FillRectangle(dimBrush, 0, 0, width, height)
    Dim roiBrush As New SolidBrush(Color.Red)
    g.FillRectangle(roiBrush, roi)
    image.MakeTransparent(Color.Red)
    Return image
End Using
End Function

0 个答案:

没有答案