GUI, C# ile basit bir görüntü işleme programı yapıyorum. Örneğin, HSV renk modelindeki görüntü renklerini değiştirmek, her bir pikseli RGB'ye dönüştürmek ve tekrar geri getirmek istiyorum.Görüntü pikseli pikselini WinAPI ile HIZLI YOLDA nasıl işleyebilirim?
Programım kullanıcı seçimine göre bazı resimler yükler ve bunu Grafik bağlamını kullanarak formun panelinden birinde gösterir. Daha sonra, kullanıcı bu resim ile kaydırma çubuklarını hareket ettirerek, düğmelere tıklayıp, bazı görüntü alanlarını seçerek vb. Bir şeyler yapabilir. Bunu yaptıktan sonra, gerçek zamanlı olarak tüm resmi piksel piksellerini değiştirmem gerekir. Yani, böyle bir şey yazmak:
for (int x = 0; x < imageWidth; x++)
for (int y = 0; y < imageHeight; y++)
Color c = g.GetPixel(x, y);
c = some_process_color_function_depending_on_user_controls(c);
g.SetPixel(x, y)
Ve belleğe (ekrana değil) içinde Graphics ile çalışmak bile GetPixel fonksiyonları ve programım çok yavaş çalıştığı için SetPixel, böylece (ÇOK YAVAŞ çalışır, bunu profilli ve bu iki fonksiyonun programımı en fazla yavaşladığını açıkladı. Bu yüzden, kullanıcı kaydırma çubuğunu veya kontrol kutusunu işaretleyerek büyük resimleri birkaç kez işleyemiyorum.
Lütfen yardım edin! Programımı hızlı hale getirmek için ne yapabilirim? Grafikler veya programlama dilini değiştirmek için diğer üçüncü taraf kütüphanelerini kullanmayı kabul ediyorum!
+1, güzel! – asawyer