![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
||||
|
||||
|
A mi de gráficos se me da poco pero si estuviera haciendo algo como lo que explicas comenzaría así:
Para empezar me olvidaría de los TShape y usaría: un TPaintBox para presentar la imagen al jugador y tres TBitmap, uno para guardar la imagen original del mar y otros dos para las figuras de aciertos y fallos y una matriz (un array cuadrado) de enteros para representar en código las celdas de la imagen. Cada celda de la matriz podría tener uno de tres valores: 0 - Nada (no se ha 'tirado' ahí) 1 - Acierto 2 - Fallo En el evento OnPaint del TPaintBox copias el bitmap del mar primero y luego los bitmaps de aciertos y fallos sobre las celdas adecuadas según indique la matriz. Algo así como:
Claro que la parte difícil es la de las rutinas CopiaFondo y CopiaCuadro. En ambos casos podrías usar el método CopyRect del Canvas del PaintBox que copia parte de otro canvas en él mismo. Este método tiene estos parámetros: Dest: TRect; Canvas: TCanvas; Source: TRect Dest es la porción sobre la que vas a copiar el otro canvas. En el caso de CopiaFondo abarcaría todo el PaintBox y en el caso de CopiaCuadro abarcaría sólo el rectángulo en tu imagen que corresponda a las coordenadas I, J. Tendrás que calcularlo a partir de las medidas de cada celda. Canvas es el canvas que contiene la imagen que vas a copiar. En este caso sería el canvas de los TBitmap. Source es el rectángulo del canvas origen que vas a copiar. En este caso sería un rectángulo que abarque todo el bitmap. No sé que tan buena o mala sea esta técnica pero es una idea para empezar. // Saludos |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|