Ver Mensaje Individual
  #5  
Antiguo 01-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Difícilmente podrás hacer algo que no lleve de una u otra forma a la idea que te describió Neftali. Cuando dibujas algo en un canvas, éste no distingue las cosas que hayas puesto en el, él sólo "ve" un conjunto de pixeles. En este sentido es totalmente análogo a dibujar en un lienzo real; tú puedes dibujar una montaña pero ya no hay manera de moverla como no sea borrándola y volviéndola a dibujar.

Así pues, mi recomendación es que comiences a pensar en el hilo de ideas de Neftali.

Yo me enfrentaría a la tarea paso a paso. El primero de ellos posiblemente sea el poder determinar sobre qué objeto estás parado. Digamos que dibujas un rombo; en algún lugar guardas las coordenadas que hayas usado para dibujarlo. Cuando haces click en el canvas deberás tener una función del estilo de

Código Delphi [-]
function PuntoEnRombo(X, Y: Integer; parámetros): Boolean;

donde parámetros son los parámetros para dibujar el rombo en específico.

Windows maneja el concepto de regiones que quizá te sirva ya que al tiempo de dibujar un objeto puedes establecer una región similar y luego usar una de las funcones de la API de Windows como PtInRegion (o nombre similar) que te facilitarían la codificación de una función como la que te describo.

Después tendrás que manejar la lista de imágenes. Cada elemento de la lista debe contener la información necesaria para redibujar el objeto correspondiente. En el evento OnPaint o similar del canvas que uses deberás repasar la lista y dibujar cada uno de los objetos en ella representados.

Luego tendrás que meterte con el movimiento de los objetos. Como ya te indica Neftali, usarás una función que determine qué objeto estás tomando. Posiblemente aquí deberás crear un bitmap que copie la imagen correspondiente y usar algo como BitBlt de la API de Windows para ir moviendo el bitmap conforme se desplace el puntero del ratón. Al momento de soltarlo redibujas todo el canvas.

Claro que jamás he hecho algo así pero son las cosas que comenzaría a pensar, a reserva claro, de que en el camino me de cuenta de que hay errores de concepción. Pero por alguna parte se empieza.

// Saludos
Responder Con Cita