等式演算子()を使用して画像の等式をチェックして==
も、必要な方法で機能しません。そのため、等価性チェックでは常にfalseが返されます。
2つの画像の内容が同じであるかどうかを確認する必要があります。これを行うには、DGVセル内の画像と参照画像のピクセルごとのチェックを行う必要があります。2つの画像の比較を示すこの記事へのリンクをいくつか見つけました。私は記事から画像比較アルゴリズムを採用し、それをBitmaps
パラメーターとして比較するために2つを取り、画像が同一である場合にtrueを返すメソッドに凝縮しました。
private static bool CompareImages(Bitmap image1, Bitmap image2) {
if (image1.Width == image2.Width && image1.Height == image2.Height) {
for (int i = 0; i < image1.Width; i++) {
for (int j = 0; j < image1.Height; j++) {
if (image1.GetPixel(i, j) != image2.GetPixel(i, j)) {
return false;
}
}
}
return true;
} else {
return false;
}
}
(警告:コードはテストされていません)
このメソッドを使用すると、コードは次のようになります。
if (CompareImages((Bitmap)dgvException.Rows[e.RowIndex].Cells["colStock"].Value, Properties.Resources.msQuestion)) {
//Some code
}