AGB  ·  Datenschutz  ·  Impressum  







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

Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

Ein Thema von Jazzman_Marburg · begonnen am 19. Nov 2010 · letzter Beitrag vom 19. Nov 2010
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 18:27
'n Abend!

Ich lese gerade in einer Klasse (TCustomControl Nachfahre) in der Paint (override) Methode ganz am Anfang folgende drei Zeilen -- und versteh nicht wozu sie gut sind:

Delphi-Quellcode:
  Canvas.Pen.Assign(Pen);
  Canvas.Brush.Assign(Brush);
  Canvas.Font.Assign(Font);
Wozu ist dieses Assign notwenig?
(Wenn ich es auskommentiere merke ich keinen Unterschied)

Jemand eine Idee?

Danke & Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 18:38
Assign() Kopiert, vereinfacht gesagt, die gesamten Werte von deiner Angabe in die Variable mit der du Assign aufrufst.
Wenn du die Zeilen Auskommentierst könnte es zu Problemen kommen wenn du die Werte wo anders mal änderst.

Soweit als Kurzfassung.

Gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 19:46
Vereinfacht gesagt sagst Du Deiner Zeichenfläche, dass sie die Werte (Stift, Pinsel und Schriftart) der Komponente selbst zur Darstellung verwenden soll. Du kannst die Zeilen ja spaßeshalber einmal auskommentieren, einen dieser Werte ändern und schauen, was passiert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#4

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 20:10
Vereinfacht gesagt sagst Du Deiner Zeichenfläche, dass sie die Werte (Stift, Pinsel und Schriftart) der Komponente selbst zur Darstellung verwenden soll. Du kannst die Zeilen ja spaßeshalber einmal auskommentieren, einen dieser Werte ändern und schauen, was passiert.
Vielen Dank für Die Kommentare!

Bin nicht ganz sicher ob ich es verstanden habe -- aber nachedem ich die Zeilen auskommentiert habe und anschließend:

Delphi-Quellcode:
// Canvas.Pen.Assign(Pen);
// Canvas.Brush.Assign(Brush);
// Canvas.Font.Assign(Font);

    Canvas.Brush.Color := ClRed;
eine neue Farbe setze, funktioniert alles prima -- ohne Probleme. Merkwürdig, nicht wahr?! Das war ja bereits mein erster Test, bevor ich den Thread startete -- einfach auskommentieren und schaun was passiert. Kann keinen Unterschied erkennen.

Merkwürdig
Jazzamn
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 20:31
Angenommen, Deine Komponente hat eine Color-Property. Wie willst Du nun erreichen, dass auch mit dieser Farbe gezeichnet wird?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#6

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 20:51
Angenommen, Deine Komponente hat eine Color-Property. Wie willst Du nun erreichen, dass auch mit dieser Farbe gezeichnet wird?
Ich denke doch so:
Delphi-Quellcode:
TMyPaper = CLASS(TCustomControl)

PROPERTY PaperColor : TColor READ FPaperColor WRITE SetPaperColor;
...

PROCEDURE TMyPaper.SetPaperColor(Value: TColor);
BEGIN

  IF FPaperColor <> Value THEN
  BEGIN
    FPaperColor := Value;
    INVALIDATE;
  END;

END;

PROCEDURE TGraphPaper.Paint;
BEGIN
  INHERITED;

  // Canvas.Pen.Assign(Pen); --> Mit oder ohne, spielt keine Rolle (glaube ich!)
  // Canvas.Brush.Assign(Brush); " "
  // Canvas.Font.Assign(Font); " "

  Canvas.Brush.Color := FPaperColor;
  Canvas.Rectangle(0, 0, Width, Height);
...
Oder verstehe ich Dich falsch?

Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Wozu ist ein "Canvas.Pen.Assign(Pen)" gut?

  Alt 19. Nov 2010, 21:03
Solange das einfache Datentypen sind, kannst Du sie natürlich auch zuweisen. Wenn es aber Klassen sind (genauer: von TPersistent abgeleitet), dann solltest Du vorsichtshalber Assign verwenden (Font wäre z.B. so ein Kandidat).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 08:29 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