Autor Beitrag
fusco123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Sa 01.12.07 16:14 
Hey Leutz,
bin neu hier am Bord.
Hab vor kurzem angefangen mich mit Delphi zu beschäftigen und nen kleines Programm geschrieben mit dem man malen kann.
Hab damit auch schon nen Problem: Wenn man die Maus zu schnell zieht, erscheinen nur einzelne Ellipsen statt eine Linie, wenn man die Maus langsam zieht, dann nicht, wißt ihr ne Möglichkeit das zu verhinden ?
Vielen Dank für eure Beiträge, fusco


Moderiert von user profile iconGausi: Topic aus Freeware Projekte verschoben am Sa 08.12.2007 um 18:52
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Sa 08.12.2007 um 18:52
Moderiert von user profile iconNarses: Titel nach erfolgloser Ermahnung angepasst am Di 11.12.2007 um 23:07
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von fusco123 am Sa 15.12.07 17:38, insgesamt 2-mal bearbeitet
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Sa 01.12.07 16:28 
Wie wärs mit dem Quelltext? Die compilierte Exe hilft uns nicht weiter.
Ach ja: :welcome: in der EE.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
fusco123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Di 04.12.07 17:19 
Hat keiner ne Idee bezüglich des "schnellen Ziehens" ???
fusco
golgol
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Mi 05.12.07 09:20 
user profile iconfusco123 hat folgendes geschrieben:
Hat keiner ne Idee bezüglich des "schnellen Ziehens" ???
fusco


Eine gute Möglichkeit sowas zu verhindern ist, dass du beim Freihandzeichnen nicht einzelne Punkte setzt, sondern immer eine Gerade zwischen den beiden letzten Koordinaten zeichnest. Auf diese Weise können keine Lücken entstehen. Wenn du dann zusätzlich an den Endpunkten einen entsprechenden Kreis zeichnest, fällt der Unterschied nicht auf.
fusco123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Sa 08.12.07 18:58 
@golgol
danke für den tipp. Nur leider bringt mir das nichts. Weil, wenn man die Maus ohne zu drücken weiterzieht und dann drückt geht automatisch ne Linie zu dem letzten Punkt.
Wenn man es aber mit lineto () UND moveto() macht, ist wieder genu das problem wie vorher da, also mit den einzelnen punkten.
fusco
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.12.07 19:53 
Hallo!

Bitte ändere den Titel so, dass man weiß, was Deine Frage ist. Danke! :-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Atreyu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: Sa 08.12.07 20:29 
user profile iconfusco123 hat folgendes geschrieben:
@golgol
danke für den tipp. Nur leider bringt mir das nichts. Weil, wenn man die Maus ohne zu drücken weiterzieht und dann drückt geht automatisch ne Linie zu dem letzten Punkt.
Wenn man es aber mit lineto () UND moveto() macht, ist wieder genu das problem wie vorher da, also mit den einzelnen punkten.
fusco


Du arbeitest doch mit MouseDown. Dann könntest du mit MouseUp die letzte Koordinate löschen, sodass sie beim erneuten MouseDown neu gespeichert wird.
Zorro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Di 11.12.07 23:25 
user profile iconfusco123 hat folgendes geschrieben:
@golgol
danke für den tipp. Nur leider bringt mir das nichts. Weil, wenn man die Maus ohne zu drücken weiterzieht und dann drückt geht automatisch ne Linie zu dem letzten Punkt.
Wenn man es aber mit lineto () UND moveto() macht, ist wieder genu das problem wie vorher da, also mit den einzelnen punkten.
fusco


Dann solltest du ENTWEDER lineto ODER moveto verwenden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var unten : boolean;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  unten := True;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  unten := False;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if unten then canvas.lineto(x,y) else canvas.moveto(x,y);

end;


ist ein voll funktionierendes Kritzelproggi.

Greetz
Zorro

Tante Edith sagte: Mach die Delphi-Tags rein. ok
fusco123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Mi 12.12.07 18:19 
hmm irgendwie versteht mein problem keiner, hab jetzt den Quelltext von zorro in meine proggi überschrieben und es geht trotzdem nicht, also die linie ist durchgehend, knüpft aber an den letzten Punkt an.
Weshalb ist da eigentlich keine durchgehende Linie, liegt dass daran dass das Programm mit den funktionen nicht so schnell arbeiten kann oder warum?
Könnte vllt jemand wenn er es geschaft hat, den quelltext von meinem programm so zu ändern dass geht, den gesamten quelltext hier posten ????
vielen danke für eure mühen fusco

P.S.: hab noch gar nicht gefragt wie ich findet ihr eig. mein Programmm so ?
Biergeneral
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: Mi 12.12.07 22:53 
Warum der nur hin und wieder was malt ist eigentlich ganz einfach nachzuvollziehen.

Jedesmal wenn du die Maus bewegst, wird ne Nachricht von an das Fenster geschickt.
Die Nachricht beschreibt allerdings nicht die Bewegung, sondern nur die neue Position.
Bewegst du die Maus schnell, steht in der Nachricht nur drin " Jo, ich bin jetzt bei x=200, y=200"

Und genau da malt der die Ellipse jetzt auch hin..


Das ganze kannst du allerdings sehr leicht umgehen..


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
procedure TForm13.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Checkbox1.Checked:=true;
  Image1.Canvas.MoveTo(X,Y);      // beim Mausdown bewegst du den Stift an die aktuelle Position
end;


procedure TForm13.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var xpos, ypos:Integer;

    begin
    xpos:=X; ypos:=Y;

    //grün
    if (Checkbox1.checked=true) and
    (Checkbox2.Checked=False) and
    (Checkbox4.Checked=False) and    //nur Maustaste, keine Ziffer
    (Checkbox5.Checked=False)  and
    (Radiobutton1.checked=false) and
    (Radiobutton2.Checked=false) and
    (Radiobutton3.Checked=false) and
    (Radiobutton4.Checked=false) then
    begin
      Image1.Canvas.Pen.color:=RGB(0,255,0);  //Randfarbe schwarz
      Image1.Canvas.Brush.Color:=RGB(0,255,0);  //Füllfarbe schwarz
//      Image1.Canvas.ellipse(xpos,ypos,xpos+10,ypos+10);  // Ellipse

//--->> Statt jetzt eine Ellipse zu malen, malst du einfach mit dem Stift
      Image1.Canvas.Pen.Width := 10;
      Image1.Canvas.LineTo(xpos, ypos);
//--->> Und verbindest, die aktuelle Position wo der Stift liegt, mit der neuen Position
    end;
fusco123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Do 13.12.07 18:45 
Jo danke, jetzt gehts ..
werde bald die aktualisierte Version hochladen, habe aber heute leider keine Zeit mehr dafür ...
fusco
fusco123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 40



BeitragVerfasst: Sa 15.12.07 17:40 
Hab jetzt dank eurer Hilfe, das Proggi verbessert und die neue Version hochgeladen.
fusco

P.S. für alle nicht registrierten User zum Downloaden unter: rapidshare.com/files.../bildschirmmalen.exe