Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Poligono con posicion incorrecta dentro del canvas (https://www.clubdelphi.com/foros/showthread.php?t=87857)

el-mono 10-03-2015 02:38:24

Poligono con posicion incorrecta dentro del canvas
 
Buenas noches.

Tengo un pequeño problema que no se resolver y espero poder recibir ayuda de ustedes.

Lo que quiero hacer: Quiero mediante código dibujar un polígono con un color y un borde para resaltar una porción de la imagen

Obtener puntos del polígono a dibujar: Para obtener los puntos del poligono que siempre sera el mismo puse sobre un formulario un control Timage y cargue la imagen, luego puso un control del tipo TSelectionPoint luego ejecute el proyecto temporal y fui capturando los puntos mediante la sentencia: TSelectionPoint.Position.Point.X / Y.

Dibujar Polígono y sorpresa: Cuando ya obtuve mis puntos para poder dibujar el polígono cree un código (lo pego abajo para que vean) en un control TButton para dibujar mi polígono y ver los resultados, pero me lleve una sorpresa al ver que mi polígono se me dibuja por arriba de las coordenadas que obtuve con el control TSelectionPoint. No se que estoy haciendo mal, espero haberme explicado :D



Código Delphi [-]
var
  p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12: TPointF;
  MyPolygon: TPolygon; //System.Math.Vectors unit needed.
begin
  // sets the points that define the polygon
  p1 := TPointF.Create(88, 84);
  p2 := TPointF.Create(108, 99);
  p3 := TPointF.Create(113, 107);
  p4 := TPointF.Create(116, 127);
  p5 := TPointF.Create(114, 144);
  p6 := TPointF.Create(93, 149);
  p7 := TPointF.Create(77, 148);
  p8 := TPointF.Create(65, 147);
  p9 := TPointF.Create(61, 132);
  p10 := TPointF.Create(59, 113);
  p11 := TPointF.Create(68, 98);
  p12 := TPointF.Create(88, 84);



  // creates the polygon

  SetLength(MyPolygon, 12);

  MyPolygon[0] := p1;
  MyPolygon[1] := p2;
  MyPolygon[2] := p3;
  MyPolygon[3] := p4;
  MyPolygon[4] := p5;
  MyPolygon[5] := p6;
  MyPolygon[6] := p7;
  MyPolygon[7] := p8;
  MyPolygon[8] := p9;
  MyPolygon[9] := p10;
  MyPolygon[10] := p11;
  MyPolygon[11] := p12;

  Image2.Bitmap.Canvas.BeginScene;
  // draws the polygon on the canvas
  Image2.Bitmap.Canvas.Stroke.Color := $FF4193F9;
  Image2.Bitmap.Canvas.Stroke.Thickness := 10;
  Image2.Bitmap.Canvas.Fill.Color := $FFF8FD5F;

//  Image1.Bitmap.Canvas.Fill.Kind := TBrushKind.None;
  Image2.Bitmap.Canvas.DrawPolygon(MyPolygon, 90);
  Image2.Bitmap.Canvas.FillPolygon(mypolygon,90);
  Image2.Bitmap.Canvas.EndScene;


Les dejo una imagen para ilustrar mas:

https://drive.google.com/file/d/0B4d...ew?usp=sharing

Neftali [Germán.Estévez] 10-03-2015 10:09:51

Una pequeña prueba que te puede orientar sobre donde está el problema, es que te fijes si ese "error" o desplazamiento a la hora de dibujar el polígono siempre es el mismo.
Es decir, intenta dibujar un polígono para cubrir la raiz del diente inferior y revisa si el "offset" es el mismo que en el anterior caso (en cuanto a X e Y).

el-mono 10-03-2015 13:49:31

Buenas Neftali.

Chanfles , me doy!! :)

Intente crear otro polígono para cubrir el diente de abajo y se me dibuja en el mismo lado.


La franja horaria es GMT +2. Ahora son las 07:56:44.

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