C #: LockBits выпускает Giant Red X - PullRequest
3 голосов
/ 28 ноября 2010

Следуя Руководству Боба Пауэлла по LockBits , я поместил следующий код в C # 2010 Visual Studio Express:

System.Drawing.Imaging.BitmapData bmp = 
    BitmapImage
        .LockBits(new Rectangle(0, 0, 800, 600),
                  System.Drawing.Imaging.ImageLockMode.ReadWrite, 
                  MainGrid.PixelFormat)

        unsafe
        {
            for (int y = 0; y < bmp.Height; y++)
            {
                byte* row = (byte*)bmp.Scan0 + (y * bmp.Stride);
                for (int x = 0; x < bmp.Width; x++)
                {
                    row[x * 4] = 255;
                }
            }
        }

После помещения растровых данных в графический блок (picturebox.Image = BitmapImage;) все, что выходит, - это красный крестик на белом фоне с красной рамкой. Что я делаю не так?

1 Ответ

2 голосов
/ 28 ноября 2010

Вы забыли позвонить UnlockBits в конце, как предлагается в конце ссылки http://www.bobpowell.net/lockingbits.htm

...