-3

请问以下 C# 代码的 VB.net 等价物是什么:

internal static unsafe void DistortedDraw(byte* sourceBuffer, Bitmap displacementMap, Bitmap destBitmap) {
        int sourceWidth = destBitmap.Width, sourceHeight = destBitmap.Height;
        BitmapData previewData = destBitmap.LockBits(new Rectangle(0, 0, sourceWidth, sourceHeight), ImageLockMode.WriteOnly, destBitmap.PixelFormat);
        int sourceDataStride = previewData.Stride;
        int sourceBPP = destBitmap.PixelFormat.ToString().Contains("16") ? 2 : destBitmap.PixelFormat.ToString().Contains("24") ? 3 : destBitmap.PixelFormat.ToString().Contains("32") ? 4 : 0;

        if (displacementMap == null) {
            unsafe {
                byte* previewScan0 = (byte*)previewData.Scan0;
                byte* sourceScan0 = (byte*)sourceBuffer;
                for (int y = 0, yofs = 0, invyofs = (sourceHeight - 1 - y) * sourceDataStride; y < sourceHeight; y++, yofs += sourceDataStride, invyofs -= sourceDataStride) {
                    for (int x = 0; x < sourceDataStride; x += 4) {
                        *(int*)(previewScan0 + yofs + x) = *(int*)(sourceScan0 + invyofs + x);
                    }
                }
            }
        } 
        destBitmap.UnlockBits(previewData);
    }

谢谢。

4

1 回答 1

3

Visual Basic 中没有直接等效项。根本问题是 VB.NET 不支持 unsafe 关键字或指针。

您可以做的最好的事情是检查该方法的作用,并找到一种方法将指针变量替换为其他一些 100% 托管构造。

于 2013-07-14T15:54:55.620 回答