C#表单PictureBox显示纯色而不是图像

13

我正在制作一个小应用程序,用于在客人刷卡时显示他们的照片。 但是我想显示空白的绿色或红色(如果客人存在但没有照片则为绿色,如果不存在则为红色)。

但是我不知道如何创建一个空白颜色的图像。

Bitmap bmRed = new Bitmap(imgbox.Width, imgbox.Height, PixelFormat.Format24bppRgb);
imgbox.Image = bmRed;

这是我目前的代码,它只会让盒子变成黑色。 imgbox 是一个 PictureBox。

5个回答

17

不要使用图像 - 设置PictureBox的BackColor属性:

imgBox.BackColor = Color.Red;

6
为了防止空指针异常,请创建一个空的bmp。
myPicBox.Image = new Bitmap(myPicBox.Width, myPicBox.Height);
Graphics graphics = Graphics.FromImage(myPicBox.Image);

Brush brush = new SolidBrush(Color.Gray);

graphics.FillRectangle(brush, new System.Drawing.Rectangle(0, 0, myPicBox.Width, myPicBox.Height));

2
直接设置背景颜色怎么样?
imgbox.BackColor = Color.Red;

1
创建一个图形上下文并使用它进行绘制。
using(Graphics g = Graphics.FromImage(bmRed))
{
  g.FillRectangle(new SolidBrush(Color.Red),0,0,imgbox.Width,imgbox.Height);
}

-2

单语句:

Graphics.FromImage(PicBox.Image=new bitmap(PicBox.Size)).FillRectangle(Brushes.Red,new Rectangle (Point.EMPTY,PicBox.Size));

抱歉,我最初使用了 PicBox.img 而不是 PicBox.Image。 - Srivishnu
Graphics类没有构造函数,即使有,你仍然需要处理它。Point.NULL也是错误的。自从问题被提出以来,你已经有8年时间测试你的代码了。 - LarsTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接