Delphi - Nyíl rajzolása tetszőleges szögben

forráskód letöltése
Két pont közé egy egyenest húzni igen egyszerű feladat. Valamivel bonyolultabb a helyzet akkor, ha egy kis nyílat is szeretnénk rajzolni az egyenes végére.

Ez első ránézésre egyszerűnek tűnhet, hiszen nem mást mint egy kis háromszöget kell csupán megjeleníteni. A probléma ott kezdődik, hogy a vonal bármilyen irányú lehet és ettől kezdve ezt a kis háromszöget is el kell forgatnunk egy adott szögben, melyet a vonal határoz meg. A megoldáshoz merőlegest állítunk a két pont között megrajzolt egyenesre. Ez lesz a háromszög egyik oldala.

Ezek után már csak ennek az egyenesnek kell a két végpontjából egy-egy vonalat húzni az eredeti vonal végpontjába és készen is van a háromszög, vagyis a nyíl a vonal végén.

A megvalósításhoz készítettünk egy GetArrowPoint nevű eljárást. Itt az első két paraméterben megadhatjuk, hogy a nyíl, vagyis a háromszög milyen széles és milyen magas legyen.
A harmadik és negyedik paraméterben kell megadnunk a vonalnak a két végpontját, melyre a nyilakat kell helyeznünk. Az ezután következő két paraméterben kapjuk vissza a vonalra állított merőleges vonal két végpontjának koordinátáit. Az eljárás legvégső paraméterében pedig azt kell megadnunk, hogy a vonal első, vagy második pontjára szeretnénk illeszteni a nyílat.