Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Color en figuras creadas con Canvas (https://www.clubdelphi.com/foros/showthread.php?t=50180)

dave.jason 10-11-2007 14:54:45

Color en figuras creadas con Canvas
 
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:
Código:

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í:
Código:

  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:

Código 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

Cita:

Empezado por dave.jason (Mensaje 245205)
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?

Código Delphi [-]
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;


La franja horaria es GMT +2. Ahora son las 14:40:33.

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