Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2016
andrecuellar andrecuellar is offline
Miembro
NULL
 
Registrado: sep 2015
Posts: 13
Poder: 0
andrecuellar Va por buen camino
Talking Diferencias de TCanvas en Android y TCanvas en Windows (rectangle y draw)

Buenas, estoy experimentando por primera vez lo que sería programar para Android con delphi, estaba usando TCanvas y tengo dos problemas, uno para dibujar rectángulo y otro para dibujar las figuras, mi código es este:

Código Delphi [-]
Procedure CJuego.DibujarPieza(pant:Tcanvas;f: Integer; c: Integer);
var
rx,ry:integer;
letra:char;
figura:TBitMap;
begin
   rx:=px+(c-1)*60;
   ry:=py+(f-1)*60;
   pant.Rectangle(rx,ry,rx+60,ry+60);
   letra:=M[F,C];
   //pant.TextOut(rx+5,ry+5,letra);
   figura:=TBitmap.Create;
   if letra='P' then figura.LoadFromFile('C:\...\pared.bmp');
   if letra='C' then figura.LoadFromFile('C:\...\pasto.bmp');
   if letra='B' then figura.LoadFromFile('C:\...\bicho.bmp');
   if letra='X' then figura.LoadFromFile('C:\...\caja.bmp');
   if letra='x' then figura.LoadFromFile('C:\...\caja.bmp');
   if letra='b' then figura.LoadFromFile('C:\...\bicho.bmp');
   if letra='D' then figura.LoadFromFile('C:\...\Destino.bmp');
   pant.Draw(rx,ry,figura);
end;

Los errores que me muestran son en
Código Delphi [-]
pant.Rectangle(rx,ry,rx+60,ry+60);
y en
Código Delphi [-]
pant.Draw(rx,ry,figura);
donde dice que TCanvas no contiene un miembro llamado "rectangle" ni "draw"

Donde en Windows todo funciona y corre perfectamente

He encontrado algunas opciones interesantes que son drawbitmap pero me pide datos distintos, quisiera conocer las alternativas de windows a android en rectangle y draw de tipo TCanvas, gracias de antemano

Responder Con Cita
  #2  
Antiguo 03-12-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El codigo original era codigo VCL o tambien FMX?
Responder Con Cita
  #3  
Antiguo 03-12-2016
andrecuellar andrecuellar is offline
Miembro
NULL
 
Registrado: sep 2015
Posts: 13
Poder: 0
andrecuellar Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
El codigo original era codigo VCL o tambien FMX?
Recién me percaté de esa diferencia, el código original es VCL y el que estoy usando es FMX
Responder Con Cita
  #4  
Antiguo 04-12-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
La clase Canvas de FMX es completamente distina a su homologo Vcl. Vas a tener que traducir las llamadas a metodos de Canvas.
Aun asi, me imagino que las pruebas las podes ir haciendo usando FMX y compilando para Windows
Responder Con Cita
  #5  
Antiguo 04-12-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Un ejemplo muy tonto:

Código Delphi [-]
var
  LRect: TRectF;
begin
  Canvas.Fill.Kind := TBrushKind.Solid;
  Canvas.Stroke.Kind := TBrushKind.Solid;
  Canvas.Stroke.Thickness := 1;
  // inicializar el registr TRectF.
  // Notar que el sistema de coordenadas no es con integer, es con Single
  LRect := TRectF.Create( {  valores apropiados aca } );
  Canvas.DrawRect(LRect, 1, 1, AllCorners, 100);
end;

Ejemplos documentacion:

http://docwiki.embarcadero.com/CodeE...ctions_(Delphi)
http://docwiki.embarcadero.com/Libra...anvas.DrawRect
http://docwiki.embarcadero.com/CodeE...ctions_(Delphi)


Considera usar la clase TRectangle
Responder Con Cita
  #6  
Antiguo 06-12-2016
andrecuellar andrecuellar is offline
Miembro
NULL
 
Registrado: sep 2015
Posts: 13
Poder: 0
andrecuellar Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Un ejemplo muy tonto:

Código Delphi [-]
var
  LRect: TRectF;
begin
  Canvas.Fill.Kind := TBrushKind.Solid;
  Canvas.Stroke.Kind := TBrushKind.Solid;
  Canvas.Stroke.Thickness := 1;
  // inicializar el registr TRectF.
  // Notar que el sistema de coordenadas no es con integer, es con Single
  LRect := TRectF.Create( {  valores apropiados aca } );
  Canvas.DrawRect(LRect, 1, 1, AllCorners, 100);
end;

Ejemplos documentacion:

http://docwiki.embarcadero.com/CodeE...ctions_(Delphi)
http://docwiki.embarcadero.com/Libra...anvas.DrawRect
http://docwiki.embarcadero.com/CodeE...ctions_(Delphi)


Considera usar la clase TRectangle
Gracias, más tarde voy a probar
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con TCanvas.Pixels en la posición [0, 0] Lord Delfos Gráficos 3 18-04-2009 21:31:39
Líneas [TCanvas] dec Trucos 0 30-06-2006 19:16:46
Tcanvas mejorado eliash Gráficos 6 10-01-2006 11:47:13
tcanvas alineado a la derecha rebollo75 Impresión 2 30-11-2005 19:45:33
Alternativa a TCanvas.StretchDraw Jose_Pérez Gráficos 2 17-04-2004 17:01:13


La franja horaria es GMT +2. Ahora son las 01:34:20.


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