Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi mini paint->rechtecke zeichnen (https://www.delphipraxis.net/134081-mini-paint-rechtecke-zeichnen.html)

Say1k 15. Mai 2009 08:58


mini paint->rechtecke zeichnen
 
hi

mein momentaner quelltext steht unten und ich habe jezt einen button zum rechtecke zeichnen gemacht

was muss ich wo eingeben damit das funktioniert?
oder habe ich das falsch angefangen?

Delphi-Quellcode:
unit mMiniPaint11;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, Tabs;

type
  TForm1 = class(TForm)
    PnlWerkzeug: TPanel;
    BitBtnFrei: TBitBtn;
    BitBtnPunkt: TBitBtn;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Button1: TButton;
    MainMenu1: TMainMenu;
    Men1: TMenuItem;
    Neu1: TMenuItem;
    Schlieen1: TMenuItem;
    BitBtn1: TBitBtn;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    DateTimePicker1: TDateTimePicker;
    procedure BitBtnFreiClick(Sender: TObject);
    procedure BitBtnPunktClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Edit1Change(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    procedure Label5Click(Sender: TObject);
    procedure Label6Click(Sender: TObject);
    procedure Label7Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Neu1Click(Sender: TObject);
    procedure Label9Click(Sender: TObject);
    procedure Label10Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Status, Druecken: Boolean;
  XPos , YPos , startx , starty , endex , endey : Integer;
  gros : Integer;

implementation

{$R *.DFM}



procedure TForm1.BitBtnFreiClick(Sender: TObject);
begin
  Label2.caption := 'Freihand';
  Status:=False;
  Druecken:=false;
end;

procedure TForm1.BitBtnPunktClick(Sender: TObject);
begin
  Label2.caption := 'Punkt';
  Druecken:=False;
  Status:=True;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Status := False;
  Druecken := False;
  Label2.Caption := 'Freihand';
  Form1.Canvas.Create;
 
end;


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If Status = False
  Then
    Begin
      Druecken := True;
      XPos := X;
      YPos := Y;
    End;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Status = False
  Then
  begin
    Druecken := False
  end
  else
    Begin
      form1.Canvas.brush.color := form1.canvas.pen.color;
      Form1.Canvas.Ellipse(X-2-gros, Y-2-gros, X +2+gros, Y +2+gros);
      Form1.Canvas.Brush.Color := clWhite;
    End;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Druecken = True
  Then
  Begin
    Form1.canvas.pen.width := gros;
    Form1.Canvas.MoveTo(XPos, YPos);
    XPos := X;
    YPos := Y;
    Form1.Canvas.LineTo(XPos, YPos);
  End;
end;


procedure TForm1.Edit1Change(Sender: TObject);
begin
  gros := 1;
  if edit1.Text = '0' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 0;
  end
  else
  if edit1.Text = '1' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 1;
  end
  else
  if edit1.Text = '2' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 2;
  end
  else
  if edit1.Text = '3' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 3;
  end
  else
  if edit1.Text = '4' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 4;
  end
  else
  if edit1.Text = '5' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 5;
  end
  else
  if edit1.Text = '6' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 6;
  end
  else
  if edit1.Text = '7' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 7;
  end
  else
  if edit1.Text = '8' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 8;
  end
  else
  if edit1.Text = '9' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 9;
  end
  else
  if edit1.Text = '10' then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 10;
  end
  else
  begin
  form1.font.color := clred;
  Label8.show;
  Label8.caption := 'Fehler!';

  end;
end;


procedure TForm1.Label4Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clblue;
      Form1.Canvas.Brush.Color := clblue;
end;

procedure TForm1.Label5Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clred;
      Form1.Canvas.Brush.Color := clred;
end;

procedure TForm1.Label6Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clgreen;
      Form1.Canvas.Brush.Color := clgreen;
end;

procedure TForm1.Label7Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clblack;
      Form1.Canvas.Brush.Color := clblack;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.canvas.rectangle (-1,-1,9999,9999);
end;

procedure TForm1.Neu1Click(Sender: TObject);
begin
  Form1.Canvas.Brush.Color := clwhite;
  Form1.canvas.rectangle (-100,-100,9999,9999);
  Form1.Canvas.Brush.Color := clwhite;
end;

procedure TForm1.Label9Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clyellow;
      Form1.Canvas.Brush.Color := clyellow;
end;

procedure TForm1.Label10Click(Sender: TObject);
begin
      Form1.Canvas.Pen.color := clwhite;
      Form1.Canvas.Brush.Color := clwhite;
end;

end.

Mithrandir 15. Mai 2009 09:02

Re: mini paint->rechtecke zeichnen
 
Willkommen in der DP. :hi: :dp:

Um allen das Leben leichter zu machen, gibt es zwei Möglichkeiten:
  • Umgebe den kompletten Quelltext mit [ delphi ][ /delphi ]-Tags
  • Hänge das komplette Projekt in Anhang

Gruß,
Daniel

Say1k 15. Mai 2009 17:02

Re: mini paint->rechtecke zeichnen
 
ich habs mal in delphi delphi dinger gehangen^^
das ganze projeckt hab ich leider grade nicht zu verfügung da es in der schule lagert und ich den quelltext nur als txt auf meinem computer zuhause gespeichert hab(sicherheitskopie;))
ich wäre natürlich auch dankbar wenn mir jemand nicht nur die rechtecke erklähren könnte sondern wenn er grade lust und zeit hat auch noch schönheitskorreckturen vornehmen ;)
dies ist natürlich nicht nötig :)


vg auch Daniel ;)

Klaus01 15. Mai 2009 18:23

Re: mini paint->rechtecke zeichnen
 
Guten Abend,

eine Schönheitskorrektur:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  gros := 1;
  if StrToInt(edit1.Text) < 10 then
    begin
      form1.font.color := clblack;
      label8.hide;
      gros := StrToInt(edit1.text);
    end
  else
    begin
      form1.font.color := clred;
      Label8.show;
      Label8.caption := 'Fehler!';
    end;
end;
Wie benutze ich rectangle:
Zitat:

Zitat von DelphiHilfe
Draws a rectangle on the canvas.

procedure Rectangle(X1, Y1, X2, Y2: Integer); overload;
procedure Rectangle(const Rect: TRect); overload;

Description

Use Rectangle to draw a rectangle using Pen and fill it with Brush. Specify the rectangle’s coordinates in one of two ways:

Giving four coordinates that define the upper left corner at the point (X1, Y1) and the lower right corner at the point (X2, Y2).
Using a TRect type.

To fill a rectangular region without drawing the boundary in the current pen, use FillRect. To outline a rectangular region without filling it, use FrameRect or Polygon. To draw a rectangle with rounded corners, use RoundRect.

Grüße
Klaus

Say1k 15. Mai 2009 19:49

Re: mini paint->rechtecke zeichnen
 
ja nur wie kann ich jez festlegen das X udn Y 1 bei mausklick festgelegt werden und X und Y 2 beim loslassen?


der quelltext is ja oben

wäre gut wenn mir das einer erklähren könnte^^

Klaus01 15. Mai 2009 19:52

Re: mini paint->rechtecke zeichnen
 
.. dann würde ich das nicht mit einem Button steuern.
Schau dir mal die Ereignisse MouseDown und MouseUp an.

Grüße
Klaus

Die Muhkuh 15. Mai 2009 19:52

Re: mini paint->rechtecke zeichnen
 
http://www.delphipraxis.net/internal...t.php?t=157875

Kommt mir ziemlich bekannt vor *g*

Say1k 15. Mai 2009 19:55

Re: mini paint->rechtecke zeichnen
 
demi2000 ist in der selben klasse wie ich^^

kp warum der auch noch nen post gemacht hat^^


das das bei mouse up und down oder so reinmuss hatte ich mir auch schon gedacht und ein bischen rumprobiert aber iwie hatte ich es am ende so das ich bei punkte zeichnen rechtecke machen konnte und bei rechtecken gar nix^^

ich weiß also nicht genau was ich eintragen soll*ichbineinvollnoob*^^

Klaus01 15. Mai 2009 20:09

Re: mini paint->rechtecke zeichnen
 
.. ein kleiner Ansatz:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    rechtecke_zeichnen : Boolean;
    rechtecke_startpunkt : TPoint;
  public
    { Public declarations }
  end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if rechtecke_zeichnen then
    begin
      canvas.Rectangle(rechtecke_startpunkt.X,rechtecke_startpunkt.Y,x,y);
    end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if rechtecke_zeichnen then
    begin
      rechtecke_startpunkt.x:=x;
      rechtecke_startpunkt.y:=y;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  rechtecke_zeichnen := not rechtecke_zeichnen;
end;
In Dein Programm umsetzen solltest Du es selbst.

Grüße
Klaus

lbccaleb 15. Mai 2009 20:13

Re: mini paint->rechtecke zeichnen
 
Ist nicht böse gemeint, aber du kannst mir nicht erzählen das du nicht auch dieser User bist:

1
2

Denke das passt irgendwo mehr als zusammen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.
Seite 1 von 3  1 23      

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