6

Wyobraź sobie, że mam obraz w kształcie prostokąta. Jak mogę stworzyć styl podobny do następnego?Jak utworzyć ścieżkę clipclogu z obrazu?

enter image description here enter image description here

Znaczy, kadrowanie obrazu w kręgu, dodać ramkę, cień i efekt brutto/połysk. Do tej pory próbowałem tylko tego kodu fragmentu, aby przyciąć obraz: Cropping circular area from bitmap in Android, ale tylko to. Nie mam pojęcia, jak wykonać pozostałe komponenty w systemie Android.

+0

Publikuję implementację zaokrąglonego rogu, mam nadzieję, że ci to pomoże, http://stackoverflow.com/a/19858771/1294681 – VinceStyling

Odpowiedz

16

Łatwym sposobem osiągnięcia tego efektu jest użycie Canvas.drawCircle() a BitmapShader:

BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 

Paint p = new Paint(); 
p.setShader(s); 

myCanvas.drawCircle(centerX, centerY, radius, p); 

Aby zrobić cień, wystarczy zadzwonić Paint.setShadowLayer() na farbie (to będzie działać tylko wtedy, gdy zwróci wpływ na poza ekranem Bitmap lub jeśli twoja View używa warstwy oprogramowania - ustaw przez wywołanie View.setLayerType() -).

Obramowanie można narysować, rysując na nim inne koło, używając stylu Paint.Style.STROKE (można go ustawić, wywołując Paint.setStyle()).

Na koniec możesz narysować połysk, rysując okrąg, owal lub Path na swoim pierwszym kółku. Będziesz musiał użyć cieniowania LinearGradient na swojej farbie, a będziesz musiał również przyciąć połysk. Można to zrobić na dwa sposoby:

  1. Jeśli rysunek całą wpływ na Bitmap, czyli co polecam, wystarczy ustawić farby Xfermode do new PorterDuffXfermode(PorterDuff.Mode.SRC_IN).
  2. Jeśli rysujesz efekt bezpośrednio na ekranie, możesz po prostu użyć Canvas.clipPath(), aby ustawić okrągły klip. Zauważ, że będzie to działać z akceleracją sprzętową tylko od wersji Androida 4.3.
Powiązane problemy