私は現在、このプログラムで撮影したスクリーンショットでビットマップを検索するコードを持っていますが、ビットマップはスクリーンショットに3回存在し、2回目にクリックします。ビットマップ検出
これを行う方法はありますか?事前のおかげで多くの...
コード:それは本当に私はそれがやりたいすべてはそれが見つけた第二のビットマップをクリックしている、場合に役立ちます
private Bitmap Screenshot()
{
Bitmap bmpScreenShot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bmpScreenShot);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
return bmpScreenShot;
}
private bool FindBitmap(Bitmap BmpNeedle, Bitmap BmpHaystack, out Point location)
{
for (int outerX = 0; outerX < BmpHaystack.Width - BmpNeedle.Width; outerX++)
{
for (int outerY = 0; outerY < BmpHaystack.Height - BmpNeedle.Height; outerY++)
{
for (int innerX = 0; innerX < BmpNeedle.Width; innerX++)
{
for (int innerY = 0; innerY < BmpNeedle.Height; innerY++)
{
Color cNeedle = BmpNeedle.GetPixel(innerX, innerY);
Color cHaystack = BmpHaystack.GetPixel(innerX + outerX, innerY + outerY);
if (cNeedle.R != cHaystack.R || cNeedle.G != cHaystack.G || cNeedle.B != cHaystack.B)
{
continue;
}
}
}
location = new Point(outerX, outerY);
return true;
}
}
location = Point.Empty;
return false;
}
public void findImage()
{
Bitmap bmpScreenshot = Screenshot();
Point location;
bool success = FindBitmap(Properties.Resources.xxx, bmpScreenshot, out location);
}
知ってはいけません。
友人は私のスクリーンショットをグリッドに分割し、グリッドを行く方法をやっているのか、それとも2番目のビットマップを見つけることができるのでしょうか?
更新:画面に全く同じ画像が5つあるとします。プログラムが見つけた3番目のビットマップをクリックします。
nullableポイント「Point?」を返し、ブール値ではなく、結果をnullでチェックしたくありません。 p = FindBimap();本当に(p.HasValue){} ' – abatishchev
@abatishchev ない私が後だものを、第二のビットマップをクリックした後、それは... '場合(成功== true)を { Cursor.Position =場所発見した場合; (これは、2番目のビットマップをクリックすると、スクリーンショットが見つかる) } ' すべての正直なところ、私は現時点でのことに満足している。ビットマップを2回目にクリックしようとすると、それが見つかった... – Matt
こんにちはマット。私は、「スクリーンショットでビットマップを見つける」という記述によって問題を抱えています。ビットマップはファイルヘッダの説明であり、スクリーンショットは電話からの任意のイメージで、すでにファイルイメージのヘッダが必要なイメージです。ユーザーが2回クリックしたかどうか、または簡単に解決できる2番目の画像が検出されたかどうかを確認する方法を尋ねたい場合。説明してください。ここでは、画像検出機能を備えたサンプルプロジェクトをダウンロードできます。http://www.activevb.de/rubriken/kolumne/kol_30/wp7_einfuehrung.html – Nasenbaer