Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 12-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código Delphi [-]
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  I, J: Integer;

begin
  CopiaFondo;
  
  for I := 1 to NumFilas do
    for J := 1 to NumColumnas do
      case Matriz[I, J] of
        1: CopiaCuadro(bmpAcierto, I, J);
        2: CopiaCuadro(bmpFallo, I, J);
      end;  
end;

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
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:57:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi