Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Paint nachprogrammieren (https://www.delphipraxis.net/186360-paint-nachprogrammieren.html)

GroZ 27. Aug 2015 09:16

Delphi-Version: 5

Paint nachprogrammieren
 
Guten Morgen liebe Delphi Gemeinde,

Ich brauch mal wieder die Hilfe von euch. Ich bin dabei ein Paint Programm zu schreiben bin auch ganz gut dabei und komme immer besser klar. Mein Problem: Er malt schon wenn ich die maus bewege möchte das aber nur mit Linksklick haben. //Ist das dann nur die procedure auf onClick umschreiben?
Er Startet ausserdem bei den Koordinaten (0,0) Sprich oben links der Paintbox.
Wichtiger wäre das erste Problem.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters,
  Menus, ImgList, StdCtrls, cxButtons;

type
  TForm1 = class(TForm)
    Zeichenflaeche: TPaintBox;
    Panel: TPanel;
    FarbeBTN: TcxButton;
    cxButton1: TcxButton;
    cxImageList1: TcxImageList;
    procedure ZeichenflaechePaint(Sender: TObject);
    procedure ZeichenflaecheMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure ZeichenflaecheMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
  private
    { Private-Deklarationen }
    Draw : boolean;
    BeginP : TPoint;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ZeichenflaechePaint(Sender: TObject);
begin
  Zeichenflaeche.Canvas.Brush.Color := clWhite;
  Zeichenflaeche.Canvas.FillRect(Zeichenflaeche.ClientRect);
end;

procedure TForm1.ZeichenflaecheMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  begin
  draw := true;
  BeginP.X := X;
  BeginP.Y := Y;

end;

procedure TForm1.ZeichenflaecheMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var pt: TPoint;
begin
  if draw then
  begin
    pt := Mouse.CursorPos;
    Zeichenflaeche.Canvas.lineTo(x,y);
  end;
end;

end.

Mavarik 27. Aug 2015 09:22

AW: Paint nachprogrammieren
 
Delphi-Quellcode:
procedure TForm1.ZeichenflaecheMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var pt: TPoint;
begin
  if draw then
  begin
    pt := Mouse.CursorPos; // Was ist mit pt?
    Zeichenflaeche.Canvas.lineTo(x,y); // Ach jetzt doch X & Y
  end;
end;
Wo hast Du das den her kopiert?

Schreib doch einfach noch die MouseUp Routine und setze draw auf false.

Vielleicht liest Du mal das ein oder andere tutorial?

baumina 27. Aug 2015 09:26

AW: Paint nachprogrammieren
 
Du kannst dir den TShiftstate mal anschauen, um den Linksklick zu realisieren. Dann kannst du dir OnMouseUp anschauen, um dort dein Draw auf False zu setzen. Du ermittelst zwar die Cursorposition der Maus mit pt, machst dann aber nichts damit.

Sir Rufo 27. Aug 2015 09:27

AW: Paint nachprogrammieren
 
Wann soll er anfangen zu malen? - Hast du richtig erkannt, im MouseDown!
Wann soll er aufhören zu malen? - Ja?

Beim Mal-Start solltest du auch den Startpunkt setzen:
Delphi-Quellcode:
procedure TForm1.ZeichenflaecheMouseDown(
  Sender: TObject;
  Button: TMouseButton;
  Shift: TShiftState;
  X, Y: Integer);
begin
  draw := true;
  Zeichenflaeche.Canvas.MoveTo( X, Y );
end;
Und beim Malen dann einfach nur noch eine Linie bis dort hin:
Delphi-Quellcode:
procedure TForm1.ZeichenflaecheMouseMove(
  Sender: TObject;
  Shift: TShiftState;
  X, Y: Integer);
begin
  if draw then
  begin
    Zeichenflaeche.Canvas.LineTo( X, Y );
  end;
end;

GroZ 27. Aug 2015 09:29

AW: Paint nachprogrammieren
 
Ahh jetzt funktioniert es so wie ich es mir vorgestellt habe.
Danke! Gibt es eine Farbkomponente? Ich hab in meinem Buch was von ColorDialog gelesen aber nix gefunden..
Unter welchen Reiter find ich die?

baumina 27. Aug 2015 09:35

AW: Paint nachprogrammieren
 
Zitat:

Zitat von GroZ (Beitrag 1313676)
Ahh jetzt funktioniert es so wie ich es mir vorgestellt habe.
Danke! Gibt es eine Farbkomponente? Ich hab in meinem Buch was von ColorDialog gelesen aber nix gefunden..
Unter welchen Reiter find ich die?

Hab kein so altes Delphi, aber normalerweise müsste der unter "Dialoge" zu finden sein.

GroZ 27. Aug 2015 09:35

AW: Paint nachprogrammieren
 
Zitat:

Zitat von baumina (Beitrag 1313678)
Zitat:

Zitat von GroZ (Beitrag 1313676)
Ahh jetzt funktioniert es so wie ich es mir vorgestellt habe.
Danke! Gibt es eine Farbkomponente? Ich hab in meinem Buch was von ColorDialog gelesen aber nix gefunden..
Unter welchen Reiter find ich die?

Hab kein so altes Delphi, aber normalerweise müsste der unter "Dialoge" zu finden sein.

Genau da war es danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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