[C con Clase] Recortar una imagen en WinApi

Salvador Pozo salvador en conclase.net
Vie Dic 1 12:19:26 CET 2006


El pasado 2006-12-01 05:34:26, Abel escribió:
 
A>   Quiero escribir un programa puzzel, osea de esos que conocemos donde una foto está dividida en cientos de partes y hayque armarla.
A>   Hice un programa donde dividí la imagen en varias partes cuadradas, las mezclé y listo, pero ahora lo que quiero es que esas partecitas no sean cuadradas, sinó que tengan la forma de un verdadero puzzel. Mi pregunta es, cómo hago de la mejor forma posible: recortar esas partecitas, colocarlas en cualquier lugar y trasladarlas con el ratón.

Hola:

Gran parte de lo que dice Angel puede ser útil en este caso. Pero, si mal no recuerdo, cosas como zonas transparentes no forman parte del GDI de manera básica, al menos no de forma tan simple.

Yo enfocaría el tema desde un ángulo algo diferente.

En lugar de dividir la imagen en múltiples mapas de bits (uno por cada pieza), yo crearía las piezas (sus contornos) independientes de la imagen.

Puedes crear las piezas, tan complicadas como quieras, haciendo uso de regiones creadas a partir de "paths" o caminos.

Con la región correspondiente a cada ficha o pieza puedes tomar la parte correspondiente de la imagen, de modo que obtendrás su imagen en el momento en que la necesites para mostrarla, arrastrarla, etc.

En ese caso, te resultarán útiles funciones como "CreatePolygonRgn":
http://winapi.conclase.net/curso/index.php?fun=CreatePolygonRgn

Para crear las regiones correspondientes a cada ficha.

O la función "SelectClipRgn":
http://winapi.conclase.net/curso/index.php?fun=SelectClipRgn

Para establecer una región de recorte.

Y la función "BitBlt":
http://winapi.conclase.net/curso/index.php?fun=BitBlt

Para obtener el mapa de bits de una ficha.

Esto lo tendrás que combinar con otras muchas cosas, por ahora sólo me estoy centrando en el modo de obtener el mapa de bits de una ficha, pero es algo por lo que comenzar.

En el curso del API se han tratado estos temas:

http://winapi.conclase.net/curso/index.php?cap=023
http://winapi.conclase.net/curso/index.php?cap=025

Aunque no se traten mucho en conjunto, se pueden combinar de muchas formas cada parte del GDI para obtener cosas diferentes.

Ya nos contarás cómo te va, es un problema interesante.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase