Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Zeichnen auf Canvas und ZOrder bzw. Übermalen (https://www.delphipraxis.net/184528-zeichnen-auf-canvas-und-zorder-bzw-uebermalen.html)

Popov 2. Apr 2015 13:10

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Zitat:

Zitat von EWeiss (Beitrag 1295937)
Geht wohl nicht mit Boardmitteln...

Das ist wie mit Ockhams Rasiermesser: "Von mehreren möglichen Erklärungen desselben Sachverhalts ist die einfachste Theorie allen anderen vorzuziehen." Letztendlich stellte sich nie wirklich die Frage wo das Problem liegt, denn es konnte nur Pen.Mode sein. Pen.Mode macht so einen Sch...

Der Bösewicht findet sich in der Prozedur PrepareScale:
Delphi-Quellcode:
procedure TGraph.PrepareScale;
var
  gray: Integer;
begin
...
  // Koordinatenkreuz
  Image.Canvas.Pen.Mode := pmNotXor; //<<<--- hier
  Image.Canvas.MoveTo(xxc(xMin), yyc(0));
  Image.Canvas.LineTo(xxc(xMax), yyc(0));
...
Einmal eingestellt beleibt es über Prozeduren bestehen.


//EDIT:

Sorry, hab deinen letzten Beitrag #20 vor meinem Beitrag nicht gelesen. Anscheinend hast du schon selbst das Problem gefunden.
Zitat:

Aber würde mich trotzdem nochmal interessieren warum Pen.Mode und bsClear sich im Wege stehen...
Tun sie nicht. Zuerst mal, pmMergeNotPen war nur eine Möglichkeit, der Hinweis war, dass es Pen.Mode sein muss. Was Pen.Mode angeht, so hat er im Grunde keine Auswirkung auf bsClear. bsClear entscheidet ob ein Objekt eine Füllung hat oder nicht (oder Muster). Hat es keine Füllung, gilt im Objekt der alte Hintergrund. Aber das weißt du ja. Somit hat Pen.Mode keinen Einfluss auf Brush, er richtet sich einfach nach dem was im Hintergrund ist. Standardmäßig ist pmCopy eingestellt. Mit pmCopy zeichnet Pen mit der eingestellten Color Farbe. Ist pmBlack eingestellt, wird immer schwarz gezeichnet. Bei pmNotXor wird eine Farbe genommen die weder Pen Farbe ist, noch im Hintergrund vorkommt. Pen prüft also bevor es zeichnet die Farbe des Hintergrudes.

Also, Pen.Mode hat mit bsClear nichts zu tun.

Sir Rufo 2. Apr 2015 13:38

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Einmal am Canvas zuviel rumgespielt und schon geht es in die Hose.

Um solche unliebsamen Überraschungen zu vermeiden gibt es Delphi-Referenz durchsuchenTRecall bzw. auch die konkreten Ableitungen für
Delphi-Quellcode:
procedure DoSomething( ACanvas : TCanvas );
var
  LPenRecall : TPenRecall;
begin
  LPenRecall := TPenRecall.Create( ACanvas.Pen );
  try

    ACanvas.Pen. // nach Belieben Pen verändern

  finally
    LPenRecall.Free; // Danach ist ACanvas.Pen wieder wie vorher
  end;
end;

Popov 2. Apr 2015 13:47

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1295992)
Um solche unliebsamen Überraschungen zu vermeiden gibt es Delphi-Referenz durchsuchenTRecall bzw. auch die konkreten Ableitungen für

Danke für den Tipp. Ist ein guter Tipp, aber wo warst du vor eine Woche als ich es brauchte?

Sir Rufo 2. Apr 2015 13:56

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Zitat:

Zitat von Popov (Beitrag 1295998)
Zitat:

Zitat von Sir Rufo (Beitrag 1295992)
Um solche unliebsamen Überraschungen zu vermeiden gibt es Delphi-Referenz durchsuchenTRecall bzw. auch die konkreten Ableitungen für

Danke für den Tipp. Ist ein guter Tipp, aber wo warst du vor eine Woche als ich es brauchte?

Ich will mich ja nicht ständig wiederholen :mrgreen:
http://www.delphipraxis.net/1256199-post3.html
http://www.delphipraxis.net/1288015-post5.html

Popov 2. Apr 2015 13:58

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Na ja, ich lese auch nicht alles hier.

uligerhardt 2. Apr 2015 14:07

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1295992)
Einmal am Canvas zuviel rumgespielt und schon geht es in die Hose.

Um solche unliebsamen Überraschungen zu vermeiden gibt es Delphi-Referenz durchsuchenTRecall

Ja, oder MSDN-Library durchsuchenSaveDC/MSDN-Library durchsuchenRestoreDC, wenn's auch um MapMode und so geht.

EWeiss 2. Apr 2015 17:33

AW: Zeichnen auf Canvas und ZOrder bzw. Übermalen
 
Danke für eure Mithilfe.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Seite 3 von 3     123   

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