PictureBox 绘制图像颜色到数组

发布于 2024-12-22 19:46:03 字数 428 浏览 0 评论 0原文

我有一个 400x300 图片框,它有一个“mousedown”事件,它会用一些红色填充的椭圆来代替鼠标单击。我现在遇到的问题是,我想将每个像素的颜色放入数组中。我在那里只有 3 种颜色,黑色(RGB 中的 0,0,0)、红色(255,0,0)和 while(255,255,255)。 问题是,我如何运行整个图片框并获取颜色值?没有我可以使用的“getPixel”。我尝试将 pictureBox 的图像传递给位图,

Bitmap zdjecie_box = new Bitmap(pictureBox1.Image)

但它说图像正确为空(空),所以我猜绘制的图像没有存储在 .image 中,而是存储在其他地方。我想要那个,因为然后我只需使用 zdjecie_box.GetPixel(i, j).R; 并将其保存到数组中。

有什么想法如何做到这一点吗?

I got 400x300 picturebox, which got an "mousedown" event, which puts some red filled Ellipses in place of mouseclick. The problem i got now, i want to get colors of every single pixel into an array. I got only 3 colors there, black (0,0,0 in RGB), red(255,0,0) and while(255,255,255).
The question is, how can i run trough whole picturebox and TAKE colors values? There is no "getPixel" i could use. I tried passing the image of pictureBox to bitmap

Bitmap zdjecie_box = new Bitmap(pictureBox1.Image)

but it says image properly is empty (null), so i guess drawed image isnt stored in .image, but somewhere else. I wanted that, cuz then i would just use zdjecie_box.GetPixel(i, j).R; and save it to array.

Any ideas how to do that?

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

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

发布评论

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

评论(1

过度放纵 2024-12-29 19:46:03

如果您定义自己的图像并将其设置在绘图事件上,则可以轻松访问它。例如

 Bitmap _b;
 private void Form1_Paint(object sender, PaintEventArgs e)
 {
    _b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    Graphics g = Graphics.FromImage(_b);
    g.DrawEllipse(Pens.Black,new Rectangle(0,0,25,25));
    pictureBox1.Image = _b;
 }
 ...
 private void ParseImage()
 {
    for (int y = 0; y < _b.Height; y++)
    {
       for (int x = 0; x < _b.Width; x++)
       {
          Color c = _b.GetPixel(x, y);
       }
     }
  }

If you define your own image and set that on the draw event, you can easily access it. e.g.

 Bitmap _b;
 private void Form1_Paint(object sender, PaintEventArgs e)
 {
    _b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    Graphics g = Graphics.FromImage(_b);
    g.DrawEllipse(Pens.Black,new Rectangle(0,0,25,25));
    pictureBox1.Image = _b;
 }
 ...
 private void ParseImage()
 {
    for (int y = 0; y < _b.Height; y++)
    {
       for (int x = 0; x < _b.Width; x++)
       {
          Color c = _b.GetPixel(x, y);
       }
     }
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文