public static bool Brightness(Bitmap b, int nBrightness)
// LUMINOSITA' (richiede il parametro della luminosità compreso tra -255 e 255)
{
// eseguo il controllo dell'intervallo -255/255
if (nBrightness < -255 || nBrightness > 255)
return false;

// stessi commenti della funzione INVERT per quanto riguarda le inizializzazioni
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;

// variabile nVal = 0 che sarà usata per contenere la somma del colore con la luminosità
int nVal = 0;

unsafe
{
byte * p = (byte *)(void *)Scan0;

int nOffset = stride - b.Width*3;
int nWidth = b.Width * 3;

for(int y=0;y<b.Height;++y)
{
for(int x=0; x < nWidth; ++x )
{
// nVal = componente RGB + parametro luminosità
nVal = (int) (p[0] + nBrightness);

// controllo che nVal sia compreso tra 0 e 255 (componente RGB)
if (nVal < 0) nVal = 0;
if (nVal > 255) nVal = 255;

// riassegno alla componente RGB il nuovo valore
p[0] = (byte)nVal;
// incremento il puntatore alla componente successiva
++p;
}
// incremento alla riga successiva
p += nOffset;
}
}

b.UnlockBits(bmData);

return true;
}


qualcuno me lo può tradurre per vb.net???
vi prego c'è quel puntatore unsafe che non riesco a tradurre...
heeeeeeelp...