Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Canvas...??

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Canvas...?? Responder citando

saludos, quisiera saver si hay un metodo que me haga un triangulo con relleno, o como lo puedo hacer, se me ocurre declarar un objeto de tipo bitmap y luego pintarlo pixel a pixel..... pero no estoy seguro de que sea la mejor solucion.......

espero haberme explicado....

atte: tr8
_________________
Arriba el Unreal Tournament...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

enum TFillStyle {fsSurface, fsBorder};
void __fastcall FloodFill(int X, int Y, TColor Color, TFillStyle FillStyle);

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.
Volver arriba
Mensaje    Asunto: Solución Responder citando

Hola Tr8.

Puedes hacer lo siguiente:
1] En un vector tipo TPoint almacenas las coordenadas del triángulo. Por ejemplo:
TPoint *vertices;
vertices=new TPoint[3];
vertices[0].x=0;
vertices[0].y=15;
vertices[1].x=34;
vertices[1].y=67;
vertices[2].x=100;
vertices[2].y=256;

2] Después dibujas el triángulo:
Canvas->MoveTo(vertices[0].x,vertices[0].y);
Canvas->LineTo(vertices[1].x,vertices[1].y);
Canvas->LineTo(vertices[2].x,vertices[2].y);
Canvas->LineTo(vertices[0].x,vertices[0].y);

3] Por último usas la función void __fastcall FloodFill(int X, int Y, TColor Color, TFillStyle FillStyle);
X e Y deben ser un punto interior al triángulo. Yo te recomiendo que uses el centroide:
X=(vertices[0].x+vertices[1].x+vertices[2].x)/3;
Y=(vertices[0].y+vertices[1].y+vertices[2].y)/3;
Después pásale un color y busca en la ayuda las posibilidades que tienes para el estilo de relleno.

NOTA: si te fijas, con este método puedes dibujar cualquier polígono que quieras.

Un saludo a todos. Se me cuiden.

Wink
_________________
Si puede soñarse... puede hacerse

Si no puedes lo que quieres...
quiere lo que puedes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: gracias...... Responder citando

si es cierto!, ya me acorde que en c++ 3.1 usaba algo similar para rellenar, esa funcion lo que hace es rellenar hata que se topa con limites........

pero no savia como se llamaba en el builder bueno como usarla,


gracias...... lo provare......

atte: tr8
_________________
Arriba el Unreal Tournament...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Responder citando

Otra manera de dibujar un polígono con relleno:
Código:
TPoint vertices[2];
vertices[0] = Point(40,0);
vertices[1] = Point(80,80);
vertices[2] = Point(0,80);
Canvas->Pen->Color = clWhite;   // Color del borde
Canvas->Brush->Color = clBlue;  // Color del relleno
Canvas->Polygon(vertices, 2);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.