Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
Smile Como pintar dentro de un grafico armado con lineTo

Hola amigos del foro,la pregunta de hoy es...como pinto dentro de una figura armada con lineTopor ejemploCanvas->MoveTo(50,25);Canvas->LineTo(50,25);Canvas->LineTo(80,5);Canvas->LineTo(12,90);Canvas->LineTo(50,25);esto arma un triangulo... ya se que si pongo la opcion triangulo puedo pintar, pero la idea es que se unan lineas y dentro de estas lineas tome un color.Espero ser claro Muchas Gracias. BC++
Responder Con Cita
  #2  
Antiguo 01-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
canvas->floodfill
Responder Con Cita
  #3  
Antiguo 01-08-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
Gracias por responder... pero ... no entiendo

podrias colocar un mini codigo... q lo pueda ejecutar

por q pongo Canvas->floodfill (int x,int y,TColor Color, y aca no tengo idea que es o que tengo q introducir);


muchas gracias
Responder Con Cita
  #4  
Antiguo 01-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Bueno, si miras en la ayuda del C++ veras que flood fill lo que hace es llenar un area hasta que encuentra el color TColor, o bien toda el area que es de ese color, a partir del punto X,Y. El parametro que no sabes que introducir es el que decide como rellenar.

te dejo la ayuda de delphi
Cita:

Fills an area of the canvas using the current brush.

type TFillStyle = (fsSurface, fsBorder);
procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

Description

Use FloodFill to fill a possibly non-rectangular region of the image with the value of Brush. The boundaries of the region to be filled are determined by moving outward from the point (X,Y) until a color boundary involving the Color parameter is encountered.

FillStyle determines what type of color changes define the boundaries, as indicated in the following table.

Value Meaning

fsSurface Fill all area that has the color indicated by the Color parameter. Stop when another color is encountered.
fsBorder Fill all area that does not have the color indicated by the Color parameter. Stop when Color is encountered.

Use the Pixels property to get the exact value of the color at the point (X,Y) when using a FillStyle of fsSurface. Similarly, when FillStyle is fsBorder, use Pixels to get the exact value of the boundary color if a point on the boundary is known.
ten en cuenta que es mucho mas rapido buscar en la ayuda del IDE que preguntar en un foro saludos
Responder Con Cita
  #5  
Antiguo 01-08-2008
M@R!N@ M@R!N@ is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
M@R!N@ Va por buen camino
Bueno espero poder ayudarte...

Canvas->FloodFill(51,25,clRed,fsBorder);

Esa función tiene 4 parámetros, los dos primeros se refiere a las coordenadas a partir de las cuales el canvas empezará a rellenar, clRed pues obvio es el color y aqui viene lo importante el último parámetro solo puede tener 2 valores:

fsBorder --> Esta hace que se vaya coloreando el área que NO tiene el color indicado, y para cuando lo encuentra.
fsSourface --> Esta hace que se vaya coloreando el área que tiene el color que le indicaste a la función, y para cuando ya no encuentra ese color.

Con el ejemplo que pusiste de tu triángulo...

Código:
Canvas->Pen->Color=clRed;      //Utilicé de ejemplo el color rojo
Canvas->Brush->Color=clRed;
Canvas->MoveTo(50,25);
Canvas->LineTo(80,5);
Canvas->LineTo(12,90);
Canvas->LineTo(50,25);
Canvas->FloodFill(51,25,clRed,fsBorder);
Si te fijas en la función FloodFill utilicé un punto más en las coordenadas de la que pusiste inicialmente y fsBorder, bueno el chiste es que según para lo que sirve fsBorder, di a entender que se vaya llenando todo lo que no sea rojo y que para cuando encuentre este color... comienzo uno adelante porque el punto (50,25) ya es rojo y pararía el proceso, en cambio el (51,25) aún es gris, espero haberme dado a entender, de todas maneras checa el código y a lo mejor así le entiendas, suerte! ^_^
Responder Con Cita
  #6  
Antiguo 05-08-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
Buenisimo!! Gracias!

Hola!! Muy Buen Ejemplo!

Muchas Gracias ! a los 2 =)

BC++
Responder Con Cita
  #7  
Antiguo 05-08-2008
BC++ BC++ is offline
Miembro
 
Registrado: ene 2008
Posts: 44
Poder: 0
BC++ Va por buen camino
Buenisimo!! Gracias!

Hola!! Muy Buen Ejemplo!

Muchas Gracias ! a los 2 =)

BC++
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
Como pintar la fila de un DBGrid Gustavo Gowdak OOP 2 04-05-2006 21:34:04
Duda sobre la función MoveTo y LineTo Javi2 Impresión 4 26-01-2006 18:44:43
grafico dentro de un componente elcigarra OOP 6 23-01-2006 17:16:31
Armado de presupuesto. zugazua2001 Varios 2 24-07-2005 21:03:09
Armado de PCs Sotrono Debates 4 07-12-2004 23:51:22


La franja horaria es GMT +2. Ahora son las 06:11:28.


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