Por lo tanto, hago un programa simple de procesamiento de imágenes con GUI, C#. Por ejemplo, quiero cambiar los colores de la imagen en el modelo de color HSV, convirtiendo cada píxel de RGB y viceversa.¿Cómo se procesa la imagen píxel por píxel con WinAPI de forma RÁPIDA?
Mi programa carga algunas imágenes por elección del usuario y las muestra en uno de los paneles del formulario utilizando su contexto de Gráficos. Entonces el usuario puede hacer algo con esta imagen moviendo las barras de desplazamiento, haciendo clic en los botones, seleccionando un área de imagen, etc. Cuando lo haga, necesito cambiar en tiempo real todas las imágenes píxel por píxel. Por lo tanto, escribo algo como:
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)
E incluso si trabajo con gráficos en la memoria (no en la pantalla), funciona GetPixel y SetPixel funciona muy lento (así, como mi programa funciona tan lento, me perfilado se , y explicó que estas dos funciones están ralentizando mi programa como máximo). Por lo tanto, no puedo procesar imágenes grandes en un momento dado mientras el usuario mueve el control deslizante o marca la casilla de verificación.
Por favor ayuda! ¿Qué puedo hacer para que mi programa sea rápido? ¡No estoy de acuerdo en utilizar otras bibliotecas de terceros para gráficos o cambiar el lenguaje de programación!
+1 para el uso de un generador de perfiles, agradable! – asawyer