[C con Clase] Recortar una imagen en WinApi

Ringo aydabella en yahoo.com.ar
Lun Dic 4 06:59:34 CET 2006


Hola Salvador,
  primero gracias por la respuesta a mi pregunta, gracias a ello he logrado resolver gran parte de mi programa.
  Lo que hice es crear una Región de la forma de una ficha de Puzzel, despues creé un píncel con CreatePatternBrush de una foto que tengo en el mismo directorio; finalmente llené la Región con ese píncel. Todo perfecto, pero mi pregunta ahora es, cómo almaceno cada figura (osea cada región), para despues colocarlo donde yo quiera.
  La otra pregunta que tengo es: Hay la forma de cambiar la Clase CreatePatternBrush, ó mas bien heredarla e implementar una función, cosa que yo le indique desde donde quiero que la foto sea pintada?, masomenos algo asi: MiCreatePatternBrush(HBITMAP, int x, int y, int ancho, int largo).
  Donde encuentro esa Clase, para ver su implementación?
  Gracias por toda respuesta.
  Abel.

Salvador Pozo <salvador en conclase.net> escribió:
  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
_______________________________________________
Cconclase mailing list
Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net


 __________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061204/c4d33afc/attachment-0001.html>


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