Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - zeichnet nicht


rizor - So 01.10.06 22:24
Titel: zeichnet nicht
Hi,

mein Programm zeichnet nicht, wie ich will.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Rectangle(0,0,form1.Width,form1.Height);
  Form1.canvas.pen.color:=clblack;
  xur:=form1.width div 2;
  yur:=form1.height div 2;
  xmax:=form1.width;
  ymax:=form1.height;
  MoveTo(10,yur);
  LineTo(xmax-10,yur);
  MoveTo(xur,10);
  LineTo(xur,ymax-10);


Woran liegt das?


mkinzler - So 01.10.06 22:28

-In welcher Methode befindet sich dieser Code?
-Was soll das Programm zeichnen?
-Was zeichnet es?


Blackheart666 - So 01.10.06 22:36


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Form1.Canvas.Brush.Color:=clWhite;
  Form1.Canvas.Rectangle(0,0,form1.Width,form1.Height);
  Form1.canvas.pen.color:=clblack;
  xur:=form1.width div 2;
  yur:=form1.height div 2;
  xmax:=form1.width;
  ymax:=form1.height;
  Canvas.MoveTo(10,yur);
  Canvas.LineTo(xmax-10,yur);
  Canvas.MoveTo(xur,10);
  Canvas.LineTo(xur,ymax-10);


rizor - Mo 02.10.06 11:02

Das Programm soll zwei geraden zeihcnen, dass sich in der mitte schneidet.


Kroko - Mo 02.10.06 11:16

noch einmal, wo steht denn dein Code?


aim65 - Mo 02.10.06 11:36

Du mußt das in einem Event aufrufen (z.B., ButtonClick oder wie hier in Form.Paint). Zweitens kriegst du ne Fehlermeldung bei "MoveTo / LineTo", da du auch dort den Canvas definieren mußt (siehe Blackheart66).
Probier das mal:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.FormActivate(Sender: TObject);
begin
  Form1.Paint;
end;

procedure TForm1.FormPaint(Sender: TObject);
var xur,yur,xmax,ymax: Integer;
begin
  xur:=form1.width div 2;
  yur:=form1.height div 2;
  xmax:=form1.width;
  ymax:=form1.height;
  with Form1.Canvas do  //<--- spart 'ne Menge Schreiberei
  begin
    Brush.Color:=clWhite;
    Rectangle(0,0,form1.Width,form1.Height);
    Pen.color:=clblack;
    MoveTo(10,yur);
    LineTo(xmax-10,yur);
    MoveTo(xur,10);
    LineTo(xur,ymax-10);
  end;
end;


kotzekocher - Mo 02.10.06 12:23

Kürzer:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.FormActivate(Sender: TObject);   
begin   
  Paint;   
end;   

procedure TForm1.FormPaint(Sender: TObject);   
var xur,yur,xmax,ymax: Integer;   
begin   
  xur:=width div 2;   
  yur:=height div 2;   
  xmax:=width;   
  ymax:=height;   
  with Canvas do  //<--- spart 'ne Menge Schreiberei   
  begin   
    Brush.Color:=clWhite;   
    Rectangle(0,0, Width, Height);   
    Pen.color:=clblack;   
    MoveTo(10,yur);   
    LineTo(xmax-10,yur);   
    MoveTo(xur,10);   
    LineTo(xur,ymax-10);   
  end;   
end;