Grafik und Zeichnen ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
yodi
Beiträge: 22
Registriert: So 11. Jan 2015, 06:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: bei Göttingen
Kontaktdaten:

Grafik und Zeichnen ?

Beitrag von yodi »

Moooin,

Ich würde gern ein Programm machen aber ich weis nicht so recht wie ich anfangen soll.
Also ich möchte ein Bild laden dann ein Layer darüber legen und auf den Layer punkte und Linien zeichnen
Das Bild muss natürlich zoombar sein.

Das zweite Problem ist das Zeichnen der Linien. Ich möchte eine Linie zeichnen und dann eine zweite Linie die genau 90 Grad zur ersten hat, durch drehen am Mausrad soll die zweite Linie auf der ersten Linie hin und her verschiebbar sein und mit einem klick verankert.

Als einsteigender Hobbyprogrammierer sind das große Hürden

LG Dirk
--------

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Grafik und Zeichnen ?

Beitrag von corpsman »

Also
ich nehme für sowas immer gern eine Paintbox, sieh dir mal die Demo an

Code: Alles auswählen

Unit Unit1;

{$MODE objfpc}{$H+}

Interface

Uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls;

Type

  { TForm1 }

  TForm1 = Class(TForm)
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    PaintBox1: TPaintBox;
    Procedure Button1Click(Sender: TObject);
    Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
    Procedure FormCreate(Sender: TObject);
    Procedure PaintBox1Paint(Sender: TObject);
  private
    FBild: TBitmap;
  public

  End;

Var
  Form1: TForm1;

Implementation

{$R *.lfm}

{ TForm1 }

Procedure TForm1.PaintBox1Paint(Sender: TObject);
Begin
  If assigned(FBild) Then Begin
    PaintBox1.Canvas.StretchDraw(rect(0, 0, PaintBox1.Width, PaintBox1.Height), fbild);
  End;
  // Ein Paar Linien
  PaintBox1.Canvas.Pen.Color := clred;
  PaintBox1.Canvas.MoveTo(10, 10);
  PaintBox1.Canvas.MoveTo(100, 20);
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  If opendialog1.Execute Then Begin
    If Assigned(FBild) Then FBild.free;
    fbild := TBitmap.Create;
    FBild.LoadFromFile(opendialog1.FileName);
    PaintBox1.Invalidate;
  End;
End;

Procedure TForm1.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
Begin
  If assigned(FBild) Then fbild.free;
  FBild := Nil;
End;

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  fbild := Nil;
End;

End.

Was deine Geraden angeht so brauchst du da nur Mathe

y = m*x +b ist die Geradengleichung
die Senkrechte steigung bekommst du mit -1 = m1*m2 glaubig.
Dann musst nur noch nen Punkt auf deiner ersten Geraden nehmen.
Ich persöhnlich würde das aber mit Vektoren Rechnen geht beides ;)
--
Just try it

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Grafik und Zeichnen ?

Beitrag von Winni »

Hi!


Ich hab Dir mal ne ganz simple Demo mit einem TImage gemacht.

Nächster Punkt der Linie: einfacher Maus-Click
Ende der Linie: Doppelklick.

Winni
Dateianhänge
LineDemo.zip
(126.09 KiB) 40-mal heruntergeladen

Antworten