Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda con canvas en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=68630)

Duargi 25-06-2010 18:15:47

Ayuda con canvas en Delphi
 
Gracias por ver esto.. Mi problema y duda es el siguiente, debo realizar un plano cartesiano en una Timage utilizando Canvas y tengo el siguiente codigo:

{i:=-150;
ii:=0;
while i<200 do
begin
imageMRU.Canvas.TextOut(ii,(trunc(imageMRU.height div 2)),'|');
i:=i+10;
ii:=ii+10;
end;

i:=-150;
ii:=0;
while i<=200 do
begin
imageMRU.Canvas.Textout(trunc(imageMRU.HEIGHT div 2),ii,'__');
i:=-150;
ii:=ii+10;
end;}


Pero por alguna razon este me da un error que no compila mi projecto, alguien que sepa cual es el problema y que pueda solucionarlo o darme una mejor idea.

De antemano Gracias.

Att: Duargi

delphi.com.ar 25-06-2010 19:44:20

Resulta muy importante para poder ayudarte, que nos expliques que error arroja el compilador.

Saludos!

Duargi 25-06-2010 19:54:58

Pues fijate que al darle Run (F9) fijate que hasta abajo en el Event Log sale esto: Module Load: COMCTL32.dll No Debug Info. Base Address: $ 74C60000. Process Project1.exe (3088) y resaltado en azul siempre sucede eso.

delphi.com.ar 25-06-2010 21:15:19

El la ventana de "Event Log" no precisamente muestra los errores de compilación. Normalmente aparece una ventana "Build" donde filtra la salida de errores, warnings y hints del compilador. Ahí te detallará mas claramente el error sucedido.

Saludos!

coso 26-06-2010 21:05:12

Hola,
de todas maneras, por lo que parece lo que quieres hacer es una cuadrícula. Lo mejor seria algo asi:

Código Delphi [-]

canvas.Pen.Color := clBlack;

for i := 0 to (Canvas.Width div 10) - 1 do
begin
Canvas.MoveTo(i*10,0);
Canvas.LineTo(i*10,Height-1);
end;

for i := 0 to (Canvas.Height div 10) - 1 do
begin
Canvas.MoveTo(0,i*10);
Canvas.LineTo(Width-1,i*10)
end;

Y aun puedes usar el brush style y mas maneras... Saludos

Duargi 27-06-2010 04:46:45

Cita:

Empezado por coso (Mensaje 368460)
Hola,
de todas maneras, por lo que parece lo que quieres hacer es una cuadrícula. Lo mejor seria algo asi:

Código Delphi [-] canvas.Pen.Color := clBlack; for i := 0 to (Canvas.Width div 10) - 1 do begin Canvas.MoveTo(i*10,0); Canvas.LineTo(i*10,Height-1); end; for i := 0 to (Canvas.Height div 10) - 1 do begin Canvas.MoveTo(0,i*10); Canvas.LineTo(Width-1,i*10) end;


Y aun puedes usar el brush style y mas maneras... Saludos


Gracias coso, tu codigo fuente esta muy bien.. Aunque lo que necesito es que tambien tenga divisiones, pues me refiero a numeros. Se te agradece.

coso 27-06-2010 11:47:36

Entonces de la misma manera, lo unico que tendrias que hacer es un par de lineas con los metodos moveto, linepos, que cruce el canvas por la mitad, y luego recorrerlas y dibujar lineas pequeñas, tambien con esos metodos. Un saludo.

Alejandro.Crts 17-08-2011 01:28:50

Cita:

Empezado por coso (Mensaje 368460)
Hola,
de todas maneras, por lo que parece lo que quieres hacer es una cuadrícula. Lo mejor seria algo asi:

Código Delphi [-]

canvas.Pen.Color := clBlack;

for i := 0 to (Canvas.Width div 10) - 1 do
begin
Canvas.MoveTo(i*10,0);
Canvas.LineTo(i*10,Height-1);
end;

for i := 0 to (Canvas.Height div 10) - 1 do
begin
Canvas.MoveTo(0,i*10);
Canvas.LineTo(Width-1,i*10)
end;

Y aun puedes usar el brush style y mas maneras... Saludos

Ta muy bueno ese fuente ;D, pero ve si lo que quieres solo es hacer el plano nomas puedes usar:
Código Delphi [-]
Image1.Canvas.MoveTo(0, Image1.Height div 2);
Image1.Canvas.LineTo(200, Image1.Height div 2);
Image1.Canvas.MoveTo(Image1.Height div 2, 0);
Image1.Canvas.LineTo(Image1.Height div 2, 200);
Image1.Canvas.LineTo(Image1.Height div 2, Image1.Height div 2);

P.D.Mi imagen esta de dimensiones iguales, osea 200x200.


La franja horaria es GMT +2. Ahora son las 19:14:11.

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