2014-10-14 25 views
5

Potrzebuję narysować miękki szeroki kontur dla mojej GDI + GraphicsPath. Coś takiego: A path edge (red) drawn with a smooth penCzy istnieje odpowiednik miękkiego pisaka w GDI +?

Krawędź ścieżki jest pokazana na czerwono. Chciałbym użyć szerokiego pióra, które jest gładkie. Potrzebuję też umiejętności kontrolowania gładkości pióra.

Próbowałem użyć pędzla gradientowego za pomocą pióra, ale nie mogłem znaleźć rozwiązania, które działa.

Osiągnę pożądany rezultat poprzez narysowanie konturu czarnym długopisem i zastosowanie filtru wygładzającego Gaussa na obrazie wynikowym, ale chcę tego uniknąć, ponieważ jest wolny, gdy muszę przetworzyć cały obraz, który może być dość duży.

Czy istnieje sposób na narysowanie gładkiej ścieżki?

Odpowiedz

2

Nie ma standardowego sposobu w GDI +, który zapewnia tę funkcjonalność, więc będziesz musiał go utworzyć.

Można śledzić segmenty linii i rysować niewyraźne, wypełnione kółko wzdłuż segmentów. Przeciągając rozmyte kółko do bitmapy, powinno być dość łatwo i szybko, aby ciągle ją zaciemniać. Mieszając go powoli z czasem na płótnie, można również uzyskać bardzo ładny efekt, który pozwoliłby użytkownikowi kontrolować intensywność i być może wielkość koła.

+0

Czy istnieje prosty sposób narysowania mapy bitowej przy każdym pikselu wzdłuż ścieżki kształtu GDI +? Obliczanie współrzędnych pikseli wzdłuż krzywej może być trudne. – Lev

+0

@Lev - Pióro GDI obsługuje tylko jeden kolor, bez teksturowania. Obawiam się więc, że nie. W przypadku większości kształtów GDI formuły są dobrze znane, więc można je obliczyć i wykonać rysunek. Być może istnieje biblioteka, która już to robi. –

+0

@lev - przy okazji, czy używasz C/C++ lub C#? (Na wszelki wypadek, gdybym miał czas, aby stworzyć demo) –

Powiązane problemy