android에서 원형 그림을 그리는 몇 가지 방법
Xfermode 두 그림의 교차 방식 사용하기
자료를 찾아서android에서 붓을 그릴 수 있는 Xfermode 즉 교차 모드를 설정하여 두 장의 그림이 교차한 후의 디스플레이 방식을 설정합니다. 구체적인 모드는 아래 그림을 보십시오. 원본 코드는androidapidemo를 제거할 수 있습니다.(SRC는 타겟 맵, DST는 타겟 맵)
위의 그림에서 보듯이 만약에 우리가 원형을 그려야 한다면 캔버스 위에 목표 크기와 같은 원을 먼저 그린 다음에 xfermode가 SRC 를 선택할 수 있다IN, 저희 프로필 사진이나 다른 그림을 말씀드리면 됩니다.마찬가지로 우리의 그림을 먼저 그리고 원을 그릴 수도 있지만 xfermode는DST 를 선택해야 한다IN.두 가지 모두 우리가 필요로 하는 효과를 실현할 수 있다.예제 코드는 다음과 같습니다.
Paint p = new Paint();
p.setAntiAlias(true); //
p.setColor(Color.BLACK);
p.setStyle(Paint.Style.STROKE);
Canvas canvas = new Canvas(bitmap); //bitmap ,
p.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); // DST_IN
int radius = bitmap.getWidth; //
canvas.drawCircle(radius, radius, radius, p); //r=radius, (r,r)
이상은 간단한 예시입니다. 상기 16가지 모델에 따라 당신은 사실 더 많은 효과를 낼 수 있습니다.또한, 네가 교차도를 한 장 주면, 그 그림의 형상이 어떠한지, 우리의 그림은 어떤 모양으로 나타날 수 있다.
캔버스 영역을 잘라내어 지정된 모양의 도면을 작성합니다.
안드로이드에서Canvas는ClipPath,ClipRect,ClipRegion 등의 방법으로 재단을 제공하는데,Path,Rect,Region의 서로 다른 조합을 통해 안드로이드는 거의 임의의 모양의 재단 구역을 지원할 수 있다.따라서 우리는 거의 임의의 형태의 구역을 얻을 수 있고 이 구역에 그림을 그리면 우리가 원하는 그림을 얻을 수 있다. 바로 예시를 볼 수 있다.
int radius = src.getWidth() / 2; //src , bitmap 。
Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(dest);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
Path path = new Path();
path.addCircle(radius, radius, radius, Path.Direction.CW);
c.clipPath(path); //
c.drawBitmap(src, 0, 0, paint); //
BitmapShader 사용
직접 예시를 먼저 보다
int radius = src.getWidth() / 2;
BitmapShader bitmapShader = new BitmapShader(src, Shader.TileMode.REPEAT,
Shader.TileMode.REPEAT);
Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(dest);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(bitmapShader);
c.drawCircle(radius,radius, radius, paint);
Shader는 바로 붓을 그리는 렌더링기입니다. 본질적으로 이 방법은 사실 원을 그리는 것이지만 렌더링은 우리의 그림을 사용해서 지정한 모양을 얻을 수 있습니다.그러나 복잡한 도형을 그리기에는 적합하지 않지만 메모리 소모는 첫 번째 도형보다 훨씬 적을 것 같다.동시에 Shader를 설정합니다.TileMode.MIRROR는 거울 효과도 실현할 수 있고 매우 좋다.
위에서 말한 것은 바로 실현된 세 가지 방법이다. 세 가지 방법은 모두 많은 모양을 그릴 수 있다. 물론 매우 매우 매우 복잡한 상황을 만나면 나는 첫 번째 방법을 사용하는 것을 권장한다. 이때 미용사들이 마지막 모양의 그림을 한 장 주고 코드를 그리는 것을 절약할 수 있다.여러분은 자신의 요구에 따라 선택하세요.
github에 있는 Custom Shape ImageView는 우리가 말한 첫 번째 방법으로 그린 것이다.RoundedImageView와CircleImageView는bitmapshader를 사용하여 완성합니다. 물론 다른 컨트롤도 있을 수 있고 다른 실현 방법도 있을 수 있습니다. 알고 있으면 저에게 답장해 주십시오.
원본 주소:http://blog.isming.me/2014/09/19/draw-circle-image-in-android/, 전재는 출처를 밝혀 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.