将图片框中的图像与默认图像进行比较

Compare image in picture-box to default image

我已将 Picturebox.Image 分配给默认图像。但它仍然通过 If 语句并打开新的 Diaglog。我不知道为什么?请帮助我!

private void saveBtn_Click(object sender, EventArgs e)
{
    if (imgBox.Image == Properties.Resources.DefaultImage || imgBox.Image == Properties.Resources.EmptyPhoto)
    {
        MessageBox.Show("Warning! Cannot save this image!");
    }
    else
    {
        SaveNoti save = new SaveNoti();
        save.sender = new SaveNoti.SEND(Task_functions);
        save.ShowDialog();
    }
}

因为每次你从资源中读取图片你都会得到一个新副本然后==会returnfalse(因为它显然是通过引用比较)。如果您将在 GDI+ 图形中使用来自资源的位图...您最好记住这一点。

将它们保存在某处:

static readonly Image DefaultImage = Properties.Resources.DefaultImage;
static readonly Image EmptyPhone = Property.Resources.EmptyPhoto;

然后一定要始终使用它们来分配imgBox.Image 属性(您分配默认值的地方):

imgBox.Image = DefaultImage; // Do not use Properties.Resources.DefaultImage

现在您可以检查是否相等(在点击处理程序内):

if (imgBox.Image == DefaultImage || imgBox.Image == EmptyPhoto)
{
    MessageBox.Show("Warning! Cannot save this image!");
}

如果您多次使用它,只需提取一个方法:

private bool IsDefaultImage
    => imgBox.Image == DefaultImage || imgBox.Image == EmptyPhoto;

不正确!这是我的代码:

static readonly Image DefaultImage = Properties.Resources.DefaultImage;
static readonly Image EmptyPhone = Property.Resources.EmptyPhoto;  
private void saveBtn_Click(object sender, EventArgs e)
        {
            imgBox.Image.Dispose();
            imgBox.Image = DefaultImage;
            if (imgBox.Image == DefaultImage)
            {
                MessageBox.Show("Warning! Cannot save this image!");
            }
            else
            {
                SaveNoti save = new SaveNoti();
                save.sender = new SaveNoti.SEND(Task_functions);
                save.ShowDialog();
            }

imgBox.Image = DefaultImage; 行的结果是参数无效