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);
}
}
}
知道为什么它不工作吗?
这不起作用,因为位图构造函数只是创建一个新的空位图,与您之前的绘图无关。
你可能应该使用不同的方法:
- 创建一个位图对象,就像你所做的
- 创建一个图形对象,使用图形在此位图中绘制。li>绘制到这个新的图形
- 需要时,从位图中读取所需的像素颜色 当绘制完成后,将位图复制到表单处置新的图形和位图对象。或者,你可以长时间保持位图,但图形应该在每次重画时创建。