C#:LockBits 推出了一个巨大的红色 X

发布于 2024-10-05 12:32:23 字数 711 浏览 2 评论 0原文

按照 Bob Powell 关于 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;) 后,出现的只是白色背景上的红色 x,带有红色边框。我做错了什么?

Following Bob Powell's tutorial on LockBits, I put the following code into 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;
                }
            }
        }

After pushing the Bitmap data into a picturebox (picturebox.Image = BitmapImage;) all that comes out is a red x over a white background, with a red border. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

够运 2024-10-12 12:32:23

您是否忘记在最后调用 UnlockBits,如本文末尾所建议的:使用LockBits方法访问图像数据

Have you forgotten to call UnlockBits at the end, as suggested at the end of this article: Using the LockBits method to access image data?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文