AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Pen.Style-Varianten nur bedingt erkennbar

Pen.Style-Varianten nur bedingt erkennbar

Ein Thema von delphianfänger123 · begonnen am 7. Jan 2011 · letzter Beitrag vom 10. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2   
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#1

Pen.Style-Varianten nur bedingt erkennbar

  Alt 7. Jan 2011, 16:44
Hallo!

Ich habe wieder ein Problem mit meinen Zeichenprogramm. Ich habe mehreren Buttons verschiedene Zeichenstile(Punkte, gestrichelt, Durchgezogener Strich)zugeordnet. Das funktioniert soweit ganz gut, jedoch sind die Varianten "Punkte" und "gestrichelt" nur auf der Paintbox erkennbar, wenn ich mich mit der Maus sehr schnell über diese bewege. Wenn ich jedoch einen Körper mit diesen Varianten zeichne, erkennt man die untersch. Zeichenstil perfekt. Das Problem ist also nur beim freien Zeichnen mit dem Pen vorhanden.

Lässt sich dieses Problem irgendwie beheben? Und wenn ja, wie?

Für Hilfe wäre ich wieder sehr dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 7. Jan 2011, 17:07
Ich vermute mal, dass du beim freien Zeichnen immer die vorherige Position des Cursors mit der jetzigen per Canvas.LineTo() verbindest. Wenn du den Cursor dabei langsam bewegst, entstehen halt sehr viele einzelne kurze Linien, die eventuell nicht länger als ein paar Pixel sind. Es ist einleuchtend, dass die Punktung der Linie dabei nicht sichtbar wird, denn wie will man eine 1Pixel lange Linie punkten?
Als Lösung fällt mir spontan eine Sache ein: Merke dir die Punkte in einem Array of TPoint. Dann zeichnest du sie per Canvas.Polyline:
Delphi-Quellcode:
var
  Pt: Array of TPoint;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
  begin
    SetLength(Pt, Length(Pt) + 1);
    Pt[High(Pt)].X := X;
    Pt[High(Pt)].Y := Y;
    Canvas.Polyline(Pt);
  end;
end;
Dann wird die Linie gepunktet.
Viele Grüße
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#3

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 7. Jan 2011, 19:22
Okay! Klingt einleuchtend,danke schonmal.
Irgendwie bekomm ich es aber auf die Weise nicht hin, mit gedrückter Maustaste zu zeichnen wie bei der MoveTo/LineTo-Methode

Edit: Okay, hab das jetzt mehr oder weniger, jedoch hab ich mit der Methode jetzt das Problem, dass wenn ich mit dem Pen an einer anderen Stelle der paintbox weitermale als an der, an der ich aufgehört habe, eine "Verbindungslinie" vom End- zum Startpunkt erscheint

Edit2: hab es nun mit
Code:
FillChar(Array,SizeOf(Array),0);
bei MouseUp hinbekommen!

Vielen Dank nochmal, Fussball-Robby!

Edit3: Habe gerade eben gemerkt, das wohl doch nicht alles ganz richtig läuft. Bei eine Stiftgröße > 1 sieht man keine Stricke bzw. Punkte mehr. Was ist da denn los?

Geändert von delphianfänger123 ( 7. Jan 2011 um 22:41 Uhr)
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#4

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 8. Jan 2011, 19:22
Zitat:
Edit3: Habe gerade eben gemerkt, das wohl doch nicht alles ganz richtig läuft. Bei eine Stiftgröße > 1 sieht man keine Striche bzw. Punkte mehr. Was ist da denn los?
Weiß niemand wie man das lösen kann?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 8. Jan 2011, 19:25
Zu Edit2: Du baust damit ein riesiges Speicherleck auf. Statt das Array zu leeren solltest du stattdessen die Größe des Arrays auf 0 setzen und beim nächsten Zeichnen normal weitermachen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#6

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 8. Jan 2011, 19:46
Hm, hat ein Speicherleck irgendwelche folgen? Oder is das halt nur unschön programmiert?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 8. Jan 2011, 19:54
Allgemein: Ja, mit jeder Mausbewegung braucht deine Anwendung mehr Speicherplatz im RAM. Du hast maximal 2 GB und dann ist Schluss. 2 GB klingt jetzt viel, ich habe es aber schon geschafft, dass einer Anwendung nach etwa 20 Sekunden der Speicher ausgegangen ist.
Und jetzt in deinem Fall: Die Linie, die bei dir gezeichnet werden soll, müsste immer bei (0, 0) anfangen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#8

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 8. Jan 2011, 20:05
Zitat:
Und jetzt in deinem Fall: Die Linie, die bei dir gezeichnet werden soll, müsste immer bei (0, 0) anfangen.
Hm, okay. Aber eigentlich ist das ja nicht so, die Linie beginnt ja immer da wo ich die linke Maustaste runterdrücke.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 9. Jan 2011, 00:22
Dann mal mal ein bisschen und beobachte dabei mit dem TaskManager oder dem ProcessExplorer die Speicherlast deines Programmes. Sie müsste immer weiter steigen und eigentlich nicht geringer werden (kommt auf den Rest an).

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#10

AW: Pen.Style-Varianten nur bedingt erkennbar

  Alt 9. Jan 2011, 13:46
Okay, der Speicherverbrauch steigt wirklich, wenn auch sehr geringfügig. Ich glaube, da müsste ich schon mehrere Stunden hintereinander ununterbrochen zeichnen, um den Speicher vollzukriegen!
Ich setze dennoch mal vorsichtshalber den Array immer auf Null zurück. Sicher ist sicher.
Danke für den Tipp!

Mein anderes Problem besteht jedoch immernoch

Zitat:
Habe gerade eben gemerkt, das wohl doch nicht alles ganz richtig läuft. Bei eine Stiftgröße > 1 sieht man keine Striche bzw. Punkte mehr. Was ist da denn los?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 02:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf