簡體   English   中英

修改位圖圖像

[英]Modifying bitmap image

我正在處理一個 android studio 項目。 我正在嘗試在圖像上選擇用戶觸摸的像素,如圖 1 所示。

我想在用戶觸摸的像素上添加 (X),如何通過修改bitmap

這是圖像。

如果我正確理解你的問題,你想在每次用戶點擊位圖時畫 X,這是你需要的:

在此處輸入圖片說明

    ImageView img;
    int clickCount = 0;
    Bitmap src;
    int colorTarget = Color.BLACK;

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        img = findViewById(R.id.img);

        img.setOnTouchListener((v, event) -> {
            int x = (int) event.getX();
            int y = (int) event.getY();
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                drawXByPosition(img, src, x, y);
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                clickCount++;
                if (clickCount % 2 == 0) colorTarget = Color.BLACK;
                else colorTarget = Color.WHITE;
            }
            return true;
        });


    }

    private void drawXByPosition(ImageView iv, Bitmap bm, int x, int y) {
        if (x < 0 || y < 0 || x > iv.getWidth() || y > iv.getHeight())
            Toast.makeText(getApplicationContext(), "Outside of ImageView", Toast.LENGTH_SHORT).show();
        else {
            int projectedX = (int) ((double) x * ((double) bm.getWidth() / (double) iv.getWidth()));
            int projectedY = (int) ((double) y * ((double) bm.getHeight() / (double) iv.getHeight()));
            src = drawX(src, "X", 44, colorTarget, projectedX, projectedY);
            img.setImageBitmap(src);
        }
    }

    public Bitmap drawX(final Bitmap src,
                        final String content,
                        final float textSize,
                        @ColorInt final int color,
                        final float x,
                        final float y) {
        Bitmap ret = src.copy(src.getConfig(), true);
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        Canvas canvas = new Canvas(ret);
        paint.setColor(color);
        paint.setTextSize(textSize);
        Rect bounds = new Rect();
        paint.getTextBounds(content, 0, content.length(), bounds);
        canvas.drawText(content, x, y + textSize, paint);
        return ret;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM