C# 如何比较两个picturebox阵列?
我已经在这个应用程序上工作了很长时间。它有它的缺点,比如,我可以使用2d数组,而不是使用数组,但是要进入下一行而不把事情搞糟是很困难的。我在一边有6个图片盒阵列,在另一边有相同的东西。在底部,我有一系列可用的图片,它们是正确的组合。当我试图将正确的组合与用户选择的组合进行比较时,出现了问题。这是我的密码:C# 如何比较两个picturebox阵列?,c#,.net,C#,.net,我已经在这个应用程序上工作了很长时间。它有它的缺点,比如,我可以使用2d数组,而不是使用数组,但是要进入下一行而不把事情搞糟是很困难的。我在一边有6个图片盒阵列,在另一边有相同的东西。在底部,我有一系列可用的图片,它们是正确的组合。当我试图将正确的组合与用户选择的组合进行比较时,出现了问题。这是我的密码: private void button1_Click(object sender, EventArgs e) { if (pb0.Image.ToStrin
private void button1_Click(object sender, EventArgs e)
{
if (pb0.Image.ToString() == pb24.Image.ToString())
{
nizKomb[0].Image = Image.FromFile(@"Slike\crvena.png");
}
if(pb1.Image.ToString() == pb25.Image.ToString())
{
nizKomb[1].Image = Image.FromFile(@"Slike\crvena.png");
}
if(pb2.Image.ToString() == pb26.Image.ToString())
{
nizKomb[2].Image = Image.FromFile(@"Slike\crvena.png");
}
if(pb3.Image.ToString() == pb27.Image.ToString())
{
nizKomb[3].Image = Image.FromFile(@"Slike\crvena.png");
}
btnOK2.Visible = true;
ctrl = 1;
}
private void btnOK2_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
if (boxes2[i].Image.RawFormat == kombinacija[i].Image.RawFormat)
{
nizKomb2[i].Image = Image.FromFile(@"Slike\crvena.png");
}
}
if (boxes2[0].Image == null || boxes2[1].Image == null || boxes2[2].Image == null || boxes2[3].Image == null)
{
MessageBox.Show("Unesite kombinaciju.");
}
else if (boxes2[0].Image != null && boxes2[1].Image != null && boxes2[2].Image != null && boxes2[3].Image != null)
{
btnOK3.Visible = true;
ctrl = 2;
}
}
如果您想再次解决这个问题,我有一个名为TransparencyMaker的C类,它可以将Jpeg或Png文件转换为PixelInformationDatabase 代码如下: 帮助您实现这一目标的部分是: 如果沿着页面向下滚动大约3/4,LoadPixelDatabase和LoadPixelDatabaseEx方法是相同的,但它接受位图参数 PixelInformation数据库只是PixelInformation对象的列表,此处列出了PixelInformation类: 基本像素信息只是一个包含RGB值、X&Y值以及一些信息的对象,例如总计,它只是RGB的总和,以及一些其他信息: 然后,如果你想比较你的两个数据库,当我画一条线擦除时,我会这样做。我删除了一个虚拟图像,然后找到了刚刚被删除的像素,然后将更改应用于真实图像 在这里,我找到了刚刚修改过的像素,因为我用图像中没有的颜色画了一条线
// Reload the PixelDatabase
PixelDatabase pixelDatabase = LoadPixelDatabaseEx(bitmap);
// Now get the pixels that are equal to the lineColor
List<PixelInformation> pixels = pixelDatabase.Pixels.Where(x => x.Color == LineColor).ToList();
然后你可以迭代你的两个列表来找到任何不同的像素,如果你找到了,你就知道你有变化
我需要为Transparency Maker记录帮助。欢迎任何志愿者
数据杂耍者
这里列出了我所有的开源项目。我建议不要比较图片。反对在这里使用ToString!两者都非常缓慢和不可靠。相反,你应该在加载图像时存储必要的信息,也许把文件名放在pbox.Tag中。就像你说的,我把值放在标记中,然后用它来比较。非常感谢你!