读书人

一段c#代码转换成vb有一句提示不对

发布时间: 2013-10-31 12:03:52 作者: rapoo

求教:一段c#代码转换成vb,有一句提示不对,请教该如何改,谢谢!!!

求教:一段c#代码转换成vb,(范例将一幅32位深的图像中所有像素的蓝色分量设为最大(255):)有一句提示不对,请教该如何改,谢谢!!!
下面C#代码用工具转换成VB:运行时Dim row As Pointer(Of Byte)这句提示出错


BitmapData bmd=bm.LockBits(new Rectangle(0, 0, 10, 10), System.Drawing.Imaging.ImageLockMode.ReadOnly, bm.PixelFormat);
int PixelSize=4;
for(int y=0; y<bmd.Height; y++)
{
byte* row=(byte *)bmd.Scan0+(y*bmd.Stride);
for(int x=0; x<bmd.Width; x++)
{
row[x*PixelSize]=255;
}
}

转换后的:

Dim bmd As BitmapData = bm.LockBits(New Rectangle(0, 0, 10, 10), System.Drawing.Imaging.ImageLockMode.[ReadOnly], bm.PixelFormat)
Dim PixelSize As Integer = 4
For y As Integer = 0 To bmd.Height - 1
Dim row As Pointer(Of Byte) = CType(bmd.Scan0, Pointer(Of Byte)) + (y * bmd.Stride)
For x As Integer = 0 To bmd.Width - 1
row(x * PixelSize) = 255
Next
Next

[解决办法]
VB.NET不支持指针。

哪有Pointer(Of Byte)这种写法!转换工具瞎转的。
[解决办法]
改用字节数组
[解决办法]
引用:
改用字节数组

+1
[解决办法]
引用:
谢谢 bdmh、liuyilin888 :
求教:改成 Dim row() As Byte = CType(bmd.Scan0, Pointer(Of Byte)) + (y * bmd.Stride),红色部分该如何改,谢谢!!!


别用转换工具,自己想想源代码,用指针实现了什么,自己再定义一个 byte(),按指针的方法实现。
不同语言的代码转换,不是简单的变量名换来换去的,有的代码需要重写。

读书人网 >VB Dotnet

热点推荐