Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Brauche Hilfe bei einer Übung (https://www.delphipraxis.net/180115-brauche-hilfe-bei-einer-uebung.html)

nadery 23. Apr 2014 22:38

Brauche Hilfe bei einer Übung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo lieber Programmierer,

hab da ein kleines Problem bei einem Programm bin gerade dabei ein Koordinatensystem zu zeichnen und es auf eins drauf zu legen was auf einer Imagedatei bereits gezeichnet ist.
Soweit so gut hab die Koordinatenlinien hinbekommen und bin gerade bei den Skallierungsstrichen/Gitterstrichen die für die X-Achse habe ich bereits hinbekommen und habe gerade Probleme bei der Y-Achse schauts euch mal an und wer nett wen der ein oder andere einen Tipp hätte am besten Quellcode :D

Delphi-Quellcode:
procedure TForm2.Image1Click(Sender: TObject);
var ax,ay :INTEGER;
begin
image1.Canvas.Pen.Width:=3;
with image1.canvas do
  begin
 //Koordinaten-Linien
  moveto(79,0);
  lineto(79,321);
  moveto(79,321);
  lineto(600,321);

  //Striche x-Achse

  for ax:=1 to 9 do
    begin
      moveto(Round(92+(ax-1)*61.7),0);
      lineto(Round(92+(ax-1)*61.7),321);
    end;

   //Striche y-Achse

   for ay:=1 to 9 do
    begin
      moveto(Round(80+(ay-1)*33),89);
      lineto(Round(321+(ay-1)*33),89);
    end;
Das sieht so aus:

http://i61.tinypic.com/5xifdj.jpg

wie ihr auf dem Foto sehen könnt wiederholt sich das nicht Wieso???

Dankee

Aviator 23. Apr 2014 22:48

AW: Brauche Hilfe bei einer Übung
 
Schau dir mal die LineTo und die MoveTo Procedure an.

Du musst natürlich auch entsprechend für die Y-Achse die Koordinaten von Y verändern und nicht von X.

Delphi-Quellcode:
for ay:=1 to 9 do begin
  moveto(89, Round(80+(ay-1)*33));
  lineto(89, Round(321+(ay-1)*33));
end;
Ob die Werte jetzt so stimmen weiß ich natürlich nicht. Aber der zweite Parameter der Funktion muss jeweils geändert werden bei Y und nicht der erste.

nadery 23. Apr 2014 22:58

AW: Brauche Hilfe bei einer Übung
 
auf deine Art und Weise werden die Striche jetzt leider wieder Senkrecht und nicht Waagerecht wie ich es haben will...

himitsu 23. Apr 2014 23:13

AW: Brauche Hilfe bei einer Übung
 
Delphi-Quellcode:
MoveTo(Round(92 + (ax-1)*61.7), 0);
LineTo(Round(92 + (ax-1)*61.7), 321);

//MoveTo(Round(80 + (ay-1)*33), 89);
//LineTo(Round(321 + (ay-1)*33), 89);
MoveTo(89, Round(80 + (ay-1)*33));
LineTo(89, Round(321 + (ay-1)*33));
Fällt dir was auf?
Vorallem bei der falschen Reihenfolge der X- und Y-Werte, sieht man, daß bei AY etwas nicht stimmt.

Damit die Linie "grade" ist, muß hochzählende Position am Anfang und Ende gleich sein
und die feste Achse enthält unterschiedliche Werte.

Popov 23. Apr 2014 23:33

AW: Brauche Hilfe bei einer Übung
 
Canvas bei Delphi hat keine richtige Linie. Das sollte aber kein Problem sein, das kann man sich schnell selbst basteln:
Delphi-Quellcode:
procedure CanvasLine(Canvas: TCanvas; x1, y1, x2, y2: Integer);
begin
  Canvas.MoveTo(x1, y1);
  Canvas.LineTo(x2, y2);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CanvasLine(Self.Canvas, 100, 100, 100, 500);
  CanvasLine(Self.Canvas, 100, 500, 500, 500);
  CanvasLine(Self.Canvas, 500, 500, 500, 100);
  CanvasLine(Self.Canvas, 500, 100, 100, 100);
end;
Auf der anderen Seite, wenn man mit LineTo umgehen kann, hat das seine Logik:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  with Canvas do
  begin
    MoveTo(110, 110);
    LineTo(110, 510);
    LineTo(510, 510);
    LineTo(510, 110);
    LineTo(110, 110);
  end;
end;
Wenn es keine einzelne Line sein soll und vorhandene Formen nicht reichen, gibt es auch das Polygon:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  PunktListe: array[0..4] of TPoint;
begin
  PunktListe[0] := Point(120, 120);
  PunktListe[1] := Point(120, 520);
  PunktListe[2] := Point(520, 520);
  PunktListe[3] := Point(520, 120);
  PunktListe[4] := Point(120, 120);

  with Canvas do
  begin
    Pen.Color := clRed;
    Brush.Color := clYellow;
    Brush.Style := bsSolid;

    Polygon(PunktListe);
  end;
end;

nadery 23. Apr 2014 23:36

AW: Brauche Hilfe bei einer Übung
 
Das problem ist doch nich das sie nicht gerade ist mein Problem ist doch sie sich nicht wiederholt?^^

Sry stehe gerade auf dem Schlauch :cyclops:

villt kannste ja die richtige Schreibweise als Quellcode posten villt hab ich dann nen Gedankenblitz... :idea:

nadery 23. Apr 2014 23:38

AW: Brauche Hilfe bei einer Übung
 
@popov huch was ist das den alles es steht doch schon fast alles fehlt nur noch die Y-Achse

himitsu 23. Apr 2014 23:45

AW: Brauche Hilfe bei einer Übung
 
Zitat:

Zitat von nadery (Beitrag 1256712)
Das problem ist doch nich das sie nicht gerade ist mein Problem ist doch sie sich nicht wiederholt?^^

Doch, sie wiederholt ich, aber wenn du alles übereinander malst, dann sieht das nunmal so aus, als gäbe es nur eines Line. :roll:

nadery 23. Apr 2014 23:52

AW: Brauche Hilfe bei einer Übung
 
Hast du eine Lösung für das Problem?^^

Popov 23. Apr 2014 23:57

AW: Brauche Hilfe bei einer Übung
 
Komm wir essen Opa (Satzzeichen können Leben retten)

Paar Satzzeichen in den Sätzen wären nicht falsch. Es ist schon etwas respektlos den anderen gegenüber, wenn sie alles erst deuten müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz