PDA

Ver la Versión Completa : Color en figuras creadas con Canvas


dave.jason
10-11-2007, 14:54:45
Hola, tengo que hacer un proyecto en el que necesito dibujar un trapedio y colorearlo. El trapecio lo puedo hacer con Canvas pero ¿como le doy color?

seoane
10-11-2007, 15:04:55
¿Que método usas para crear el polígono? Si usas el método "Polygon" el polígono resultante se rellena con el color del Brush

dave.jason
10-11-2007, 22:09:31
Intenté ulilizar el "polygon" pero no se utilizarlo. No comprendo qué parámetros hay que poner. Me pide un const TPoint*, y no se lo que es.

¿Puedes poner un ejemplo para que pueda ver la estructura correcta?

seoane
10-11-2007, 22:40:45
Pues un TPoint es una estructura de este tipo:

typedef struct tagPOINT {
LONG x;
LONG y;
} POINT, *PPOINT;


El parámetro que te pide es un puntero a un array de puntos, es decir un array de estructuras TPoint. Tengo el C un poco oxidado pero debería ser algo así:

TPoint Pt[4];

Pt[0] = Point(10, 10);
Pt[1] = Point(100, 10);
Pt[2] = Point(100, 100);
Pt[3] = Point(10, 100);
Canvas->Polygone(Pt, 4);

dave.jason
11-11-2007, 12:44:11
Gracias. Ahora si que funciona. Una cosa más: ¿se puede programar un evento al hacer click en el trapecio? Si tal trapecio apareciese en el formulario no tendría ningún problema, pero como únicamente aparece al ejecutar el programa...

Si no se puede, pues nada. Pero gracias por la explicación del Polygon.

marcoszorrilla
11-11-2007, 12:57:11
Aunque ya te lo ha explicado Seoane, un ejemplo de lo que pides, basado en la propia ayuda de Delphi:

procedure TForm1.Button1Click(Sender: TObject);
begin
Canvas.Brush.Color := clRed;
Canvas.Polygon([Point(10, 10), Point(30, 10),
Point(130, 30), Point(240, 120)]);
end;

Un Saludo.

cHackAll
12-11-2007, 21:41:17
Hola, tengo que hacer un proyecto en el que necesito dibujar un trapedio y colorearlo. El trapecio lo puedo hacer con Canvas pero ¿como le doy color?

var Points: array [1..5] of TPoint = ((X:132;Y:66),(X:264;Y:66),(X:396;Y:198),(X:0;Y:198),(X:132;Y:66));

procedure TForm1.FormPaint(Sender: TObject);
var hRgn: Cardinal;
begin
with Canvas do
begin
Pen.Color := clRed;
Brush.Color := Pen.Color;
hRgn := CreatePolygonRgn(Points, High(Points), ALTERNATE);
FillRgn(Handle, hRgn, Brush.Handle);
DeleteObject(hRgn);
end;
end;