お初にお目にかかります。よろしく願いします。
画面をキャプチャして、そのあとピクセル操作を加えたいと思っています。GetPixelとSetPixelでは遅すぎるようですのでLockBitsに挑戦したのですが、色情報がどうも配列にうまく入ってくれません。問題点と解決策を教えていただけると助かります。
現在のコードは以下の通りで、ビットマップデーター(スクリーンショット)を渡し、変換後のビットマップを返すようにしています。よろしくお願いします。
Private Function XXXX(ByVal oldbmp As Bitmap) As Bitmap
Dim bmp As Bitmap = oldbmp
Dim h As Integer = bmp.Height
Dim w As Integer = bmp.Width
Dim rect As New Rectangle(0, 0, w, h)
Dim bmpdata As BitmapData = bmp.LockBits _
(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)
Dim ptr As IntPtr = bmpdata.Scan0
Dim stride As Integer = bmpdata.Stride
Dim bytes As Integer = stride * h
Dim rgbValues(bytes) As Byte
System.Runtime.InteropServices.Marshal.Copy _
(ptr, rgbValues, 0, bytes)
'ここでピクセル操作
System.Runtime.InteropServices.Marshal.Copy _
(rgbValues, 0, ptr, bytes)
bmp.UnlockBits(bmpdata)
Return bmp
End Function
ツイート | ![]() |