繁体   English   中英

在画布上加载图片并在图片上覆盖文字并保存

[英]Load a picture on canvas and Overlay text on the picture and save it

我想创建一个应用程序,将选定的图像简单地加载到画布上,用户将可以随意在图像上的任何位置覆盖文本。 也就是说,在他将文字覆盖在图像上之后,他应该能够移动文字,编辑文字。 如何做到这一点。 是我必须加载框架布局,然后必须动态放置文本视图以获取文本覆盖图,还是可以执行其他任何操作? 我想实现如下图所示的效果 在此处输入图片说明 从操作栏中单击“添加文本”时,我想将文本添加到用户加载的图片中。 搜索了很多,但没有得到任何答案。 我只想知道如何在图像上获取此文本并将其移动到图片上的任何位置。 同样,将要保存在设备上的最终图像将与文本重叠在图像上。 图片中出现的框不应出现在图像中。 所有专家请他们指导我。

您可以将ImageView和EditText添加到FrameLayout,然后EditText将覆盖您的图像。 要拖动视图,您应该设置OnTouchListner:

     mEditText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    final int action = event.getAction();

    mLastTouchX = event.getRawX();
    mLastTouchY = event.getRawY();

    switch (action) {
    case MotionEvent.ACTION_DOWN: {
    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) getLayoutParams();
    mDeltaX = mLastTouchX - lParams.leftMargin;
    mDeltaY = mLastTouchY - lParams.topMargin;

    break;
    }
    case MotionEvent.ACTION_MOVE: {
    mLastTouchX = event.getRawX();
    mLastTouchY = event.getRawY();

    final RelativeLayout.LayoutParams params = (LayoutParams) getLayoutParams();
    params.leftMargin = (int) (mLastTouchX - mDeltaX);
    params.topMargin = (int) (mLastTouchY - mDeltaY);
    setLayoutParams(params);

    break;
    }
    }
    invalidate();

    return true;
    }
});

要创建最终图像,您可以在画布上绘制原始图像和文本。

更新:您可以使用addView添加视图:

final EditText et  = new EditText(getContext());
et.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mFramLayout.addView(et);

也可以用边距调整位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM