kullanarak pikseller arasında geçiş yapın Ekranın bir bölümünü kapıyorum ve belirli bir renk aralığı için pikselleri tarayacağım.GetDIBits ve X, Y
MSDN's Capturing an Image örneğine baktım ve işlevleri nasıl kullanacağımı biliyorum.
Bitleri bir diziye dönüştürebilirim, ancak bunu bir resim gibi dönebilmem için nasıl yapacağımı bilmiyorum. Bir sözde örnek (eminim yolu kapalı):
yapmak istediğim, bu nedenle kırmızı, mavi ve yeşil belli bir renk ise, ben öyle koordinat bilebilirsiniz temelde nefor (x = 1; x <= Image.Width; x += 3)
{
for (y = 1; y <= Image.Height; y += 3)
{
red = lpPixels[x];
green = lpPixels[x + 1];
blue = lpPixels[x + 2];
}
}
Resimdeki (x, y).
Sadece GetDIBits'i nasıl kullanacağımı ve bunu gerçekleştirebilmek için diziyi uygun şekilde nasıl ayarlayacağımı bilmiyorum.
Kodda MyBMInfo .bmiHeader.biSize = sizeof (MyBMInfo); – xMRi
@xMRi Haklısınız, hatayı tespit ettiğiniz için teşekkür ederiz. Şimdi sabit olduğunu düşünüyorum, ilk çağrısından önce başlatma işlemini GetDIBits'e taşıdım; AFAIK, ilk görüşmeden sonra yeniden başlatmak için gerekli değildir. – dyp
Hmmm. Ben bu konuda emin değilim. Bunu kodumda denedim ve eğer GetDIBits'e ikinci çağrıyı yaparsam yerel yapının arabellek üzerine bir taşma hatası aldığını anladım ... Sonunda bir çözüme geri döndüm ve yapıyı manuel olarak başlattım. Bazı durumlarda sıkıştırma yapmak istemezsiniz. Bilgilendirmek, sıkıştırmayı yeniden kullanacak ... Bu doğru gelip gelmediğinden emin değilim. Ama bunu daha fazla kontrol etmek için zamanım olmadı. – xMRi