Najprostsza metoda to najpierw narysować prostokąt/wielokąt z odpowiednim "gradientem" alfa na dolnym i prawym boku. Dopiero później, na narysowanym już cieniu, rysujesz właściwą figurę.
No tak, tylko jak narysowac rozmyty cień używając poleceń grafiki wektorowej ?
Bo jest tak: mam wielokąt - po jego wypełnieniu powstaje cień. Mogę wypełniać kolorem jednolitym, teksturą lub gradientem.
Ale to mi nic nie daje, bo żeby uzyskać rozmycie, muszę przekonwertować to na bitmapę i "potraktować" blurem. A jeżeli tak zrobię, to utracę całe tło, czyli np. obrazek, który był na poprzedniej warstwie.
Jednym słowem, mając cień jako bitmapę nie widzę sposobu, jak mogę narysować najpierw poprzednią warstę a potem cień, który jest również bitmapą - ale w ten sposób, że dodany zostanie tylko cień, a kolor tła będzie odfiltrowany (bo bitmapa oczywiśie ma kształt prostokąta).
Piszesz w końcu program graficzny, więc dłubanie w pikselach to oczywistość...
No tak, ale jak wymyślić algorytm generujący cień, o odpowiednim rozmyciu, kolorze itd. Poza tym cień ma być jeszcze bardziej skomplikowany, np. powinien istnieć pewien obszar nigdy nie rozmywany (ustawiany przez użytkownika), odpowiedni stopień rozmycia itd.
Czyli np. cos takiego:
można pokombinować z bitmapami RGBA lub LinearGradientBrush i PathGradientBrush.
Hm próbowałem. Ale wypełnienie regiony gradientem nic nie pomoże - po pierwsze nie uzyskam rozmycia, po drugie region jest niereguralrny, a rozmycie powinno postępować równolegle do boków obiektu.
Próbowałem kombinować z gradienten o kolorach od Color(255,0,0,0) do (0,0,0,0) ale to nadaje się co najwyżej do zrobienia efektu cienia na prostokątnym wycinku ściany (np cień od lewej do prawej).
PS. ten program to do grafiki wektorowej czy rastrowej???
Ogólnie rzecz biorąc, grafika rastrowa. Działa mniej więcej tak, że mamy zdjęcie. Na zdjęciu zaznaczamy obszar i wypełniamy go teksturą, a obszar możemy wycieniować (cień zewnętrzny i wewnętrzny). Oprócz tego ustawienia tekstury (gęstość, kąt itd). Każdy nowo dodany obszar to automatycznie nowa warstwa. Oprócz tego przezroczystość warstw, kontrast jasność itd.
Wszystko bardzo proste w sumie - gdyby nie ten cień, to nie byłoby problemu, bo wszystko załatwia za mnie GDI+.