Delphi - Diagrama de sistema de agua en una casa

 
Vista:
sin imagen de perfil

Diagrama de sistema de agua en una casa

Publicado por Dan (1 intervención) el 22/09/2021 21:44:06
Hola buen día a todos, espero me puedan ayudar con lo siguiente:

Tengo este panel
Delphi3


Y lo que me gustaría es encontrar el método para poder dibujar lo siguiente en este TImage:
Delphi

Las fotos obviamente son imagenes que descargue de la red pero en lo que concierne a las lineas se deben pintar al dar Click en una area especifica del TImage en color naranja con un grosor de 6 pixeles, y lo mismo para la líneas negras. y quisiera ver la posibilidad de que fueran líneas rectas.

En cuanto a las imagenes deben también aparecer en el punto donde de click en el TImage y debejen poder rotar a un angulo que el usuario desee con un Edit

La malla como referencia tiene 20 pixeles (por lo que todo es a esa escala en teoría).

De momento quería implementar lo siguiente pero no se muy bien como:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type
TForm1 = class(TForm)
ScrollBar1: TScrollBar;
ScrollBar2: TScrollBar;
Image1: TImage;
Label1: TLabel;
 
 procedure Image1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type Tlinea = packed record // Es un registro
x1 : integer; //Uso de base de datos
y1 : integer;
x2 : integer;
y2 : integer;
 
 end;
type Tfigura = packed record // Es un registro
x1 : integer; //Esquina superior izq de la figura
y1 : integer;
angulo : integer;
nTubo : integer;
 
 end;
var
 
 Form1: TForm1;
Tubo : Array [1..100] of Tlinea;
Casa : Array[1..50] of Tfigura;
nTubo : Integer;
nCasa : Integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Image1Click(Sender: TObject);
var
K,I: Integer;
begin
Image1.Canvas.Pen.Color := RGB(147,212,255);
for I := 1 to 100 do
begin
image1.canvas.moveto(0,i*20);
image1.canvas.Lineto(2000,i*20);
Image1.canvas.MoveTo(i*20,0);
Image1.canvas.LineTo(i*20,2000);
end;
nTubo:=0;
nCasa:=0;
end;

Espero me puedan apoyar :(
Delphi3
Delphi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder