AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi mini paint->rechtecke zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

mini paint->rechtecke zeichnen

Ein Thema von Say1k · begonnen am 15. Mai 2009 · letzter Beitrag vom 22. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23      
Say1k

Registriert seit: 15. Mai 2009
49 Beiträge
 
#1

mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 09:58
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 = '0then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 0;
  end
  else
  if edit1.Text = '1then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 1;
  end
  else
  if edit1.Text = '2then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 2;
  end
  else
  if edit1.Text = '3then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 3;
  end
  else
  if edit1.Text = '4then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 4;
  end
  else
  if edit1.Text = '5then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 5;
  end
  else
  if edit1.Text = '6then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 6;
  end
  else
  if edit1.Text = '7then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 7;
  end
  else
  if edit1.Text = '8then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 8;
  end
  else
  if edit1.Text = '9then
  begin
  form1.font.color := clblack;
  label8.hide;
  gros := 9;
  end
  else
  if edit1.Text = '10then
  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.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 10:02
Willkommen in der 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
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Say1k

Registriert seit: 15. Mai 2009
49 Beiträge
 
#3

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 18:02
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 19:23
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 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
Klaus
  Mit Zitat antworten Zitat
Say1k

Registriert seit: 15. Mai 2009
49 Beiträge
 
#5

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 20:49
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^^
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 20:52
.. dann würde ich das nicht mit einem Button steuern.
Schau dir mal die Ereignisse MouseDown und MouseUp an.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 20:52
http://www.delphipraxis.net/internal...t.php?t=157875

Kommt mir ziemlich bekannt vor *g*
  Mit Zitat antworten Zitat
Say1k

Registriert seit: 15. Mai 2009
49 Beiträge
 
#8

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 20:55
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*^^
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 21:09
.. 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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: mini paint->rechtecke zeichnen

  Alt 15. Mai 2009, 21:13
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
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.
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