Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Voltear horizontalmente pixeles dibujados en un TImage (https://www.clubdelphi.com/foros/showthread.php?t=92264)

Unkger 11-09-2017 00:00:18

Voltear horizontalmente pixeles dibujados en un TImage
 
Hola!, lo que quiero hacer es voltear horizontalmente (como en Microsoft Word) un triangulo que he dibujado con el siguiente código:

En el form solo hay un TImage y un TButton

Código Delphi [-]
implementation
procedure dda(x1, y1, x2, y2, r, g, b : Integer; image1 : TImage);
var
k, dx, dy, steps : Integer;
xInc, yInc, x, y : Real;
begin
dx := x2-x1;
dy := y2-y1;
if abs(dx) > abs(dy) then
begin
  steps := abs(dx);
end
else
begin
steps := abs(dy);
end;
xInc := dx/steps;
yInc := dy/steps;
x := trunc(x1);
y := trunc(y1);
for k := 1 to steps do
  begin
x := x+(xInc);
y := y+(yInc);
image1.canvas.Pixels[trunc(x), trunc(y)] := rgb(r, g, b);
  end;
end;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i := 10 to 150 do
begin
  dda(i, 10, 150, i, 34, 177, 76, image1);
end;

WHILENOTEOF 11-09-2017 18:05:21

Hola, no te recomiendo que dibujes el triángulo a base de pixels, además es una operación lenta en el TCanvas de la VCL, mejor lo haces con líneas, y para girarlo lo que harías sería girar los puntos (rotación de un punto un cierto ángulo a partir de un centro), y después los unes con lineas (moveto, lineto) o con una polilínea que una los tres puntos del triángulo. Si quieres que sea relleno utilizas el método polygon del TCanvas. También te recomiendo que mires unos componentes gráficos open source (Graphics 32 = GR32) que está optimizado para dibujar más rápido y tiene rutinas para girar gráficos.


La franja horaria es GMT +2. Ahora son las 00:20:45.

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