AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paint nachprogrammieren

Ein Thema von GroZ · begonnen am 27. Aug 2015 · letzter Beitrag vom 27. Aug 2015
Antwort Antwort
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#1

Paint nachprogrammieren

  Alt 27. Aug 2015, 09:16
Delphi-Version: 5
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.
Julian
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:26
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:27
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#5

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:29
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?
Julian

Geändert von GroZ (27. Aug 2015 um 09:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:35
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#7

AW: Paint nachprogrammieren

  Alt 27. Aug 2015, 09:35
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!
Julian
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:34 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