簡體   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