Entwickler-Ecke
Multimedia / Grafik - canvas.polybezier
Alebo - Do 25.03.04 19:35
Titel: canvas.polybezier
Hallo!
Ich habe ein Array vom Typ TPoint.
Wie kann ich nun mit canvas.polybezier z.B. die Punkte von [0] bis [50] verbinden lassen?
Ich möchte nicht alle Punkte. die zum Array gehören miteinander verbinden sondern nur einen Teil von ihnen.
Ich hoffe mit kann jemand helfen,
Vielen Dank im Voraus
umpani - Do 25.03.04 20:48
Hallo
kopier doch einfach di Punkte, die du brauchst in ein Temporäres array
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var temp:array of tpoint; source:array[0..1000] of tpoint; i:integer; begin setlength(temp,50); for i := 0 to 49 do begin temp[i] := source[i]; end; canvas.polybezir(temp); end; |
Ich habe den Code jetzt nur so hingeschrieben und nicht getestet. Müßte aber gehen.
Gruß Umpani
MaxiTB - Do 25.03.04 20:52
Hm, ich bin da nicht wirklich kompetent, weil mir die nötigen Befehle fehlen, aber:
:arrow: Ich würde den Pointer auf das erste gewünschte Element ermitteln.
:arrow: Die Größe in Bytes (also Anzahl * Größe von TPoint).
:arrow: Den Speicherblock kopieren.
Das ist wesentlich schneller (denke mal mind. Faktor 2), aber wie gesagt - mir fehlen die Befehle dazu, weil ich hier kein Delphi habe.
Anonymous - Do 25.03.04 21:38
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type PPoints = ^TPoints; TPoints = array[0..0] of TPoint;
...
var Points: array of TPoint; begin ... Windows.PolyBezier(canvas.handle, PPoints(@Points[startindex])^, Anzahl); ... end; |
MaxiTB - Do 25.03.04 21:44
::obbschtkuche
Genau sowas in der Richtung habe ich gemeint - das ist sogar noch fixer, da braucht man nicht zu kopieren.
Hoch dem, der Delphi auf seinem Rechner hat ;-) .
Alebo - Fr 26.03.04 00:21
Vielen Dank für die schnelle Hilfe!
Wenn ich polybezier so aufrufe gibt der Compailer mir die Fehlermeldung zurück, dass zu viele Parameter übergeben werden.
Sven - Fr 26.03.04 08:07
Wenn Du nur einen bestimmten Teile eines Arrays an eine Funktion/Prozedur übergeben willst, so kannst Du die Funktion Slice verwenden.
Die ist in der Delphihilfe iegentlich gut erklärt :D
Alebo - Fr 26.03.04 10:15
Die Function Slice nimmt leider keinen Startwert entgegen sondern nur einen Endwert.
Ich bräuchte sowas wie slice(array,von,bis)
Sven - Fr 26.03.04 10:53
Dann würde ich vorschlagen, du verwendest ein Hilfsarray und füllst dieses mittels Copy. Dort kannst Du von und bis angeben.
Alebo - Fr 26.03.04 16:29
Copy kann ich nicht verwenden, da der Array, aus dem ich Punkte verbinden möchte, nicht dynamisch ist.
ich bekomme immer die Meldung: Inkompatible Typen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!