AGB  ·  Datenschutz  ·  Impressum  







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

Pen.Mode pmNotXor

Ein Thema von Mali · begonnen am 15. Mär 2003 · letzter Beitrag vom 15. Mär 2003
Antwort Antwort
Mali

Registriert seit: 28. Jan 2003
6 Beiträge
 
#1

Pen.Mode pmNotXor

  Alt 15. Mär 2003, 14:12
Hi!
Ich bin ein armer Schüler, der vom Lehrer zu wenig Hilfen bekommen hat! Wir sollen ein Malprogramm erstellen. Eigentlich ist das ja recht einfach. Wir benutzen dabei die Komponete TImage als Canvas. Jetzt hab ich ein Problem:
Wenn man eine Linie zieht dann soll diese bei jeder Mausbewegung aktualliesiert werden. Das bedeutet ich ziehe eine weiße Linie vom alten Standpunkt aus wieder zurück zum Ausgangspunkt und dann wieder zur Maus. Wenn sich jetzt zwei Linien überschneiden, dann wird aber auch dort die zweite Linie gelöscht. Um das zu beheben, hat uns der Lehrer gesagt, sollten wir PmNotXor beim Pen.Mode benutzen. Ich komm damit aber nicht wirklich zurecht und die Hilfe von Delphi verstehe ich nicht.
Ich hoffe man versteht mein Problem und einer da draußen im WWW hat erbarmen mit mir und hilft mir.
See you
Mali
  Mit Zitat antworten Zitat
DennyC

Registriert seit: 27. Jan 2003
Ort: Berlin
47 Beiträge
 
Delphi 7 Professional
 
#2
  Alt 15. Mär 2003, 21:06
Hallo Mali,

der Hinweis Deines IT-Pädagogen ist mathematisch betrachtet gar nicht so übel, technisch gesehen aber eher mittelmäßig. Vereinfacht dargestellt heißt das: Wenn Du den Pen in Deinem Zeichenprogramm auf pmNotXor setzt, wird an den Stellen, an denen Deine Linie entlangführt, das Bild so was ähnliches wie Pixel für Pixel invertiert, wie ein Negativ eines Fotos. Sagen wir, Du ziehst eine Linie auf weißem Hintergrund und kreuzt dabei bereits vorher gezeichnete schwarze Linien. Die neue Linie wird schwarz dargestellt - außer an den Kreuzungsstellen mit den vorhandenen Linien. Die werden zu weißen Schnittpunkten. Und jetzt der Clou: Solltest Du Dich für eine anderen Endpunkt Deiner Linie entscheiden, wird zunächst die alte Linie mit dem alten nicht mehr gewünschten Endpunkt einfach nochmal gezeichnet, also nochmal "invertiert" - alles schwarze wird wieder weiß, alles weiße wieder schwarz, so wie vorher, es hat sich nichts verändert. Anschließend wird die Linie mit dem neuen Endpunkt gezeichnet. Also: Minus mal Minus ergibt Plus - gilt auch hier. Sollte der richtige Endpunkt gefunden worden sein, zeichnest Du die neue Linie einfach mit dem PenMode pmCopy, dann ist sie fest im Bild integriert. Hab ich jetzt zuviel verraten?

Ansonsten sei noch bemerkt: TImage eignet sich nicht für ein Zeichenprogramm, ist nur zum Ansehen gedacht. Eine Komponente wie TPaintBox und auch TCanvas (direkt auf der Form zum Beispiel) klingt doch schon viel eher nach Zeichnen, oder? Und das Zeichnen mittels pmNotXor ist auch out. Halte Dir beim Zeichnen lieber eine zweite nicht sichtbare Zeichenfläche im Hintergrund, die Du vor jeder temporären Zeichenaktion anzeigst und dann erst drauf malst. Mit dem Stichwort BackBuffer wird das ganze sogar noch flackerfrei, was Dir sonst nur schwerlich gelingen wird.

Auch wenn Dich das alles noch mehr verwirrt haben wird... Ans Werk!

Denny
  Mit Zitat antworten Zitat
Mali

Registriert seit: 28. Jan 2003
6 Beiträge
 
#3
  Alt 15. Mär 2003, 22:20
Hi Denny!
Also ermal ein großes Lob, du kannst echt gut erklären!
Dank deiner Erklärung hab ich meinen Fehler gefunden. Danke! Jetzt kann ich endlcih weiter programmieren.
Achja du brauchst keine gewissens Bisse haben. Ich hab meinen Fehler selbst gefunden das Programm selbst gemacht. Du hast mir dabei "nur" geholfen (was auf keinen Fall zu verachten ist). Also vielen Dank!
See you
Martin

P.S:Ich glaub das mit der Komponente TImage is eine Make von meinem Lehrer. Hab auch schon beim Suchen nach einer Antwort auf mein Problem gelesen, dass die sich dafür nicht eigent. Tja man kanns nicht ändern. Du kennst ja Lehrer
  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 09:49 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