AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Canvas pixelkoordinaten parallel in Array zeichnen

Canvas pixelkoordinaten parallel in Array zeichnen

Ein Thema von Vadda · begonnen am 9. Apr 2020 · letzter Beitrag vom 10. Apr 2020
Antwort Antwort
Vadda

Registriert seit: 9. Apr 2020
4 Beiträge
 
#1

AW: Canvas pixelkoordinaten parallel in Array zeichnen

  Alt 9. Apr 2020, 14:24
Warum kompliziert, wenn es auch einfach geht! Die Idee ist super: Eine ganz bestimmte Farbe nehmen, die Kurve in einer definierten Farbe zeichnen, ausgelesen, und dann in der gewünschten Farbe neu zeichnen. Die Rechenzeit ist hier unkritisch, und da der Zeichnungsbereich bekannt ist, muß nicht das ganze Bild durchsucht werden.
Danke nochmals!
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Canvas pixelkoordinaten parallel in Array zeichnen

  Alt 9. Apr 2020, 21:29
Ich bin mir nicht sicher, was du meinst. Willst du die Pixel eines Bildes in ein Array schreiben? Das ergibt wenig Sinn. Oder willst du die Eckpunkte eines Vielecks in einem Gerätekontext in ein Array laden?

Letztes geht recht einfach, indem du BeginPath(DeineCanvas.Handle) aufrufst, bevor das Zeichnen beginnt.
Nachdem gezeichnet wurde, kannst du so die Windows.tagPOINT s deines Gerätekontexts abfragen:
Delphi-Quellcode:
type
  TPoints = packed array of tagPOINT;
var
  Points: TPoints;
  Types: TBytes;
  Count: Integer;
begin
  Count := GetPath(DeineCanvas.Handle, Points[0], Types[0], 0); // Länge 0 vorgeben = zukünftige Länge abfragen
  SetLength(Points, Count);
  SetLength(Types, Count);
  GetPath(DeineCanvas.Handle, Points[0], Types[0], Count);
  // TuWas
  EndPath(DeineCanvas.Handle);
end;
Types kannst du ignorieren, wenn du keine Bézierkurven zeichnest.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Vadda

Registriert seit: 9. Apr 2020
4 Beiträge
 
#3

AW: Canvas pixelkoordinaten parallel in Array zeichnen

  Alt 10. Apr 2020, 05:43
Da war ich nicht ganz eindeutig: aus einer Menge von Datensätzen werden einzelne Kurven erzeugt und zusammen angezeigt. Dafür gibt es zwei Möglichkeiten: direkte Anzeige unter Anwendung der Delphi Canvas Polygon Funktion oder das Polygon vorher berechnen und die einzelnen Kurvenpunkte dann zeichnen. Wenn nun eine Kurve aus der Kurvenschar angewählt wird, dann soll diese anders gezeichnet und die Kurvenzusatzdaten (das sind nicht die Kurvenpunkte!) in einem anderen Fenster angezeigt werden. Dafür brauche ich die Verbindung zwischen der Kennlinie auf dem Bildschirm und den Basisdaten. Dies würde über eine Rückrechnung auch funktionieren, aber ich habe eine Möglichkeit gesucht, welche parallel zu oder vor dem Zeichnen der Kurve die entsprechende Kurven ID in Array Zellen schreibt, so daß die Rückmeldung eines Mausklicks auf die gezeichnete Kennlinie mittels des Arrays direkt auf die KurvenID zeigt. Die Arraystruktur entspricht immer exakt der Pixelstruktur im Diagramfenster. Da die Kurven weder stetig noch weit auseinander liegen, ist die vereinfachte Form mittels gerader Hilfslinien zwischen den Kurvenpunkten zu ungenau.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Canvas pixelkoordinaten parallel in Array zeichnen

  Alt 10. Apr 2020, 08:26
Kurven in (ggf. falls unerwünscht nur marginal) verschiedenen Farben zeichnen und dann anhand der angeklickten Farbe die Kurve bestimmen? Braucht man nur eine Zuordnung Farbe zur Kurvennummer, das geht am einfachsten mit TDictionary.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 +1. Es ist jetzt 08:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz