캔버스에 텍스트와 선을 그려 볼 수 있습니다.
다음은 drawable 이미지에 텍스트를 그리고, Bitmap
을 반환하는 예제 메서드입니다.
개체에서 .setTypeface()
을 호출하여 사용자 지정 글꼴을 설정할 수 있습니다.
회선을 그리려면 canvas.drawLine()
으로 전화하십시오. 라인을 사용자 정의하려면 새 Paint
오브젝트를 만들고, 색상 및 너비를 .setColor()
및 .setStrokeWidth()
으로 설정하고 라인 좌표와 함께 drawLine()
으로 전달하십시오.
public Bitmap drawTextOnBitmap(Context context, int resId, String text) {
// prepare canvas
Resources resources = context.getResources();
float scale = resources.getDisplayMetrics().density;
Bitmap bitmap = BitmapFactory.decodeResource(resources, resId);
android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();
// set default bitmap config if none
if (bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
// resource bitmaps are immutable, so we need to convert it to mutable one
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
// new antialiased Paint
TextPaint paint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
// text color - #3D3D3D
paint.setColor(Color.rgb(61, 61, 61));
// text size in pixels
paint.setTextSize((int) (bitmap.getHeight()/10 * scale));
// text shadow
paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);
// set text width to canvas width minus 16dp padding
int textWidth = canvas.getWidth() - (int) (16 * scale);
// init StaticLayout for text
StaticLayout textLayout = new StaticLayout(text, paint, textWidth,
Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
// get height of multiline text
int textHeight = textLayout.getHeight();
// get position of text's top left corner
float x = (bitmap.getWidth() - textWidth)/2;
float y = (bitmap.getHeight() - textHeight)/2;
// draw text to the Canvas center
canvas.save();
canvas.translate(x, y);
textLayout.draw(canvas);
canvas.restore();
return bitmap;
}
업데이트 :
가 사각형이 방법이 추가 그리려면
Paint p = new Paint();
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(24);
RectF rectF = new RectF(80, 150, 200, 350);
canvas.drawRect(rectF, p);
매개 변수 새 RectF()에 대한 :
는 X가 왼쪽 좌표를 왼쪽
직사각형의 부분
상단 012 3, 는 Y는
잘
는 X가
하단 사각형의 오른쪽 좌표 사각형의 상단 좌표
는 Y는 당신이 필요합니까 사각형
하단의 좌표 그것을 할 사용자? 또는 앱에서 이미지를 구현하려면 어떻게해야합니까? – Daniele
@Daniele 앱에서이 작업을 수행하고 싶지만 최종 결과는 이미지이어야하며 뷰의 레이어가 아니어야합니다. –
사용자 지정 그리기를 만듭니다. Drawable을 사용하면 텍스트, 비트 맵 및 도형을 Canvas 객체에 렌더링하여 원하는 것을 할 수 있습니다. 또한 투명성을 완벽하게 제어 할 수 있습니다. –