GDI:找出像素的颜色,我之前画的

本文关键字:颜色 像素 GDI | 更新日期: 2023-09-27 18:18:35

我正在尝试找出我之前画的红色像素的颜色。

所以当我读它不可能直接这样做,转换我的图形对象为位图,它有函数GetPIxel和相同的宽度/高度作为我的图形对象。否则我认为它不会起作用。

但是它总是返回给我:Color [A=0, R=0, G=0, B=0]

我猜是指白色。

下面是我的代码:

namespace GDi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.components = new System.ComponentModel.Container();
            this.Size = new System.Drawing.Size(400, 400);
            this.Text = "Display At Startup";
            this.BackColor = Color.White;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Graphics dc = this.CreateGraphics();
            this.Show();
            Pen BluePen = new Pen(Color.Blue, 3);
            dc.DrawRectangle(BluePen, 0, 0, 50, 50);
            Pen RedPen = new Pen(Color.Red, 2);
            dc.DrawEllipse(RedPen, 20, 70, 80, 0);
            dc.DrawEllipse(RedPen, 2, 88, 300, 0);
            Bitmap myBitmap = new Bitmap(400, 400, dc);
            string test = myBitmap.GetPixel(2, 88).ToString();
            MessageBox.Show(test);
        }
    }
}

知道为什么它不工作吗?

GDI:找出像素的颜色,我之前画的

这不起作用,因为位图构造函数只是创建一个新的空位图,与您之前的绘图无关。

你可能应该使用不同的方法:

  1. 创建一个位图对象,就像你所做的
  2. 创建一个图形对象,使用图形在此位图中绘制。li>绘制到这个新的图形
  3. 需要时,从位图中读取所需的像素颜色
  4. 当绘制完成后,将位图复制到表单处置新的图形和位图对象。或者,你可以长时间保持位图,但图形应该在每次重画时创建。