Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Diferencias de TCanvas en Android y TCanvas en Windows (rectangle y draw) (https://www.clubdelphi.com/foros/showthread.php?t=91213)

andrecuellar 03-12-2016 15:19:12

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 :)


AgustinOrtu 03-12-2016 21:48:52

El codigo original era codigo VCL o tambien FMX?

andrecuellar 03-12-2016 22:01:22

Cita:

Empezado por AgustinOrtu (Mensaje 511451)
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

AgustinOrtu 04-12-2016 01:14:58

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

AgustinOrtu 04-12-2016 01:39:17

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

andrecuellar 06-12-2016 12:53:34

Cita:

Empezado por AgustinOrtu (Mensaje 511456)
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


La franja horaria es GMT +2. Ahora son las 17:29:18.

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