두 이미지는 첫 번째 이미지를 프레임 이미지로, 두 번째 이미지를 프레임 이미지로 호출합니다. 여기 fst는 내 선형 레이아웃이며 프레임 이미지를 배경 이미지로 설정합니다. 이제 프레임 이미지의 흰색 영역에 패턴 이미지를 채우고 싶습니다. 프레임 이미지의 바깥 쪽 영역은 투명하고 내부 영역은 흰색입니다. 내 프레임 이미지에 패턴 이미지를 채우려면 어떻게해야합니까? 나는이 코드를 tryied했다.안드로이드에서 이미지의 채우기 패턴
private void patternFill(Bitmap tempBitmapColor) {
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pattern_a);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
fst.setBackgroundDrawable(bitmapDrawable);
}
그러나 이것은 정사각형 비트 맵 이미지를 제공합니다. 내 이미지 뷰는 이와 같이 패턴을 채우기를 원합니다.
패턴 이미지는 나는 단지이 이미지의 흰색 영역에서 패턴 이미지를 채우려는 this-
같다. 이 이미지 프레임 안의 색상은 채울 수 있지만 패턴 이미지의 경우에는 완료되지 않습니다. 하나는 제발 도움이 될 수 있습니다 ...
업데이트 : - 나는 우리가 우리가 쉐이더를 사용한다 두 개 이상의 색상을 설정하려면 내가 현재 코드
그래서public void setPattern(String newPattern){
postInvalidate();
//get pattern
int patternID = getResources().getIdentifier(newPattern, "drawable", "com.akanksha.partternfillexperiment");
//decode
Bitmap patternBMP = BitmapFactory.decodeResource(getResources(), patternID);
//create shader
BitmapShader patternBMPshader = new BitmapShader(patternBMP,
Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
//color and shader
// drawPaint.setColor(0xFFFFFFFF);
drawPaint.setShader(patternBMPshader);
patternset=true;
}
업데이트 읽어 보시기 바랍니다 , 여기서는 셰이더를 성공적으로 설정할 수 있습니다. , DST_OVER
drawPaint.setColorFilter(new PorterDuffColorFilter(Color.YELLOW,Mode.MULTIPLY));
drawPaint.setXfermode(new PorterDuffXfermode(Mode.DST_OVER));
DST_IN
을하지만, 필요에 따라 결과를 얻지 못하고 : 이 방법 이후의 OnDraw 방법은 내은 setPattern 방법 같은 일부 모드를 시도@Override
protected void onDraw(Canvas canvas) {
if(patternset){
for (int x = 0; x < canvasBitmap.getWidth(); x++) {
drawPath.moveTo(x, 0);
for (int y = 0; y < canvasBitmap.getHeight(); y++) {
drawPath.lineTo(x, y);
}
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
invalidate();
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
setXfermode 무엇입니까 호출합니다.
어떤 모드가 현재 내가이 출력
나는 결과에 매우 근접라고 생각을 얻고 내 목적을 해결할 수입니다. 이제까지 필요로했던 패턴을 그릴 수 있습니다. 잔상 문제는 프레임의 내부 비 투명 영역에서만 패턴을 설정하는 것입니다.
가 나는 또한 다른 불투명의 패턴을 기입 할 수 있도록
투명 영역을 식별하기 위해 (canvasBitmap.getPixel (X, Y) == Color.TRANSPARENT)의 경우이
을 시도하지만,이 또한하지 일.
여기에 더 많은 설명을 위해 이미지를 업로드하고 있습니다. 블로우 이미지에서 프레임 이미지의 색상을 채 웁니다. 이제 핑크색 대신 패턴을 채우고 싶습니다.
는 사람이 공유하시기 바랍니다 시도하는 어떤 좋은 점을 가질 수 ...