Проблема с Lockbits в DrawImage - PullRequest
       41

Проблема с Lockbits в DrawImage

0 голосов
/ 01 апреля 2020

Нужна помощь. Я пытаюсь нарисовать меньшее растровое изображение в большее растровое изображение. Я пытаюсь использовать Lockbits, чтобы ускорить процесс go. Но моя функция .DrawImage не будет выполняться. Ошибка является общей ошибкой GDI + (исключение необработанного). Это мой фрагмент кода. Что я делаю неправильно? Mis c .Lockbitmap проверено на работоспособность, поэтому я не думаю, что ошибка есть, но я могу также показать этот код здесь, если это поможет.

Я должен добавить, что это часть гораздо больший код. Чтобы уточнить: я могу использовать выполнить строку с .DrawImage, если я отключить блокировку.

Dim largerFile As New Bitmap(BitMapSizeX, BitMapSizeY)
Call MiscClass.LockBitmap(largerFile, PixBytes, RowSizeBytes)
Dim GraphicsModifier As Graphics = Graphics.FromImage(largerFile)
Dim currentPic As New Bitmap(smallerFilePath.Tostring) ' & ".jpg")
GraphicsModifier.DrawImage(currentPic, picAndLoc.XLoc, picAndLoc.YLoc, ComponentSize, ComponentSize)
Public Shared m_BitmapData As BitmapData   

' Lock the bitmap's data.
Public Shared Sub LockBitmap(ByRef bm As Bitmap, ByRef PixBytes() As Byte, ByRef RowSizeBytes As Integer)
  Dim bounds As Rectangle = New Rectangle(0, 0, bm.Width, bm.Height)
  m_BitmapData = bm.LockBits(bounds, Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format24bppRgb)
  RowSizeBytes = m_BitmapData.Stride

  ' Allocate room for the data.

  Dim total_size As Integer = m_BitmapData.Stride * m_BitmapData.Height
  ReDim PixBytes(total_size)
  Marshal.Copy(m_BitmapData.Scan0, PixBytes, 0, total_size)
End Sub
...