사용자가 텍스트를 삽입하는 앱이 있는데, 버튼을 클릭하면 미리 지정된 이미지에 해당 텍스트가있는 새로운 이미지가 생성되어 전화기에 저장됩니다.이미지에 텍스트를 페인팅 할 때 새 라인
하지만 텍스트가 너무 길어서 이미지의 너비를 초과하는 경우가 있으므로 새 줄로 나누는 것이 좋습니다. 어떻게해야합니까?
textPaint.breakText(text[2], true, bmp.getWidth(), null);
그러나 그것은 작동하지 않았다 : 내가 사용하던 ...
나는 BREAKTEXT와 시도,하지만 난 그것을 사용하는 방법을 모르겠어요. 내 코드 원래 코드 : I 수동 글고에서 선을 깰 때 또한, 그것은 ...에 "[]"여기서 두 번째 줄은 시작해야 하나와 함께
EDIT 모든 것을 보여줍니다
private void SaveMyImage() {
// TODO Auto-generated method stub
File myDir = new File(Environment.getExternalStorageDirectory().getPath()+"/App/");
myDir.mkdirs();
File file = new File (myDir, fname);
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
Canvas canvas = new Canvas(bmp);
Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
if (text[0].equals("Image 01")) {
textPaint.setColor(Color.BLACK);
}
else {
textPaint.setColor(Color.WHITE);
}
textPaint.setTextAlign(Align.CENTER);
textPaint.setTextSize(tamanho);
textPaint.setShadowLayer(2, 2, 2, Color.BLACK);
textPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // Text Overlapping Pattern
canvas.drawBitmap(bmp, 0, 0, null);
canvas.drawText(text[1], largura, altura2, textPaint);
canvas.drawText(text[2], largura, altura, textPaint);
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
Toast.makeText(SaveIMG.this, "Image saved on phone", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/App/"+fname);
pronto.setImageURI(uri);
}
레이아웃 내용을 캔버스에 그려 넣은 방법을 안내해 주시겠습니까? 나는 같은 문제를 겪고있다. – AndyN