PDA

Ver la Versión Completa : Ayuda con canvas en Delphi


Duargi
25-06-2010, 18:15:47
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:



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
Hola,
de todas maneras, por lo que parece lo que quieres hacer es una cuadrícula. Lo mejor seria algo asi:

Código Delphi [-] (http://www.clubdelphi.com/foros/#) 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
Hola,
de todas maneras, por lo que parece lo que quieres hacer es una cuadrícula. Lo mejor seria algo asi:



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:

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.