保存使用onTouchEvent绘制到位图上的图像

问题描述 投票:0回答:1

我正在尝试触摸应用程序的区域,以在屏幕上放置一个AND门。因此,当我触摸“与”门区域,然后再次触摸以将其放置在电路上时,门会在我触摸的位置绘制,但是一旦我再次触摸,它就会消失。

ive使用canvas.drawBitmap静态创建了一个电路,它们出现并停留在那里。意思是,香港专业教育学院创建了大量的canvas.drawBitmap图像,它们保留在屏幕上。

@Override
    public boolean onTouchEvent(MotionEvent motionEvent) {
        Log.d("Debugging", "In onTouchEvent");

        if((motionEvent.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {


            placeComponent();
            Touch.horizontalTouched = (int)motionEvent.getX()/ grid.getBlockSize();
            Touch.verticalTouched = (int)motionEvent.getY()/ grid.getBlockSize();
        }

        draw();
        return true;
    }

    void placeComponent(){
        Log.d("Debugging", "In placeComponent");

        // Convert the float screen coordinates
        // into int grid coordinates
        touchTemp = whatWasTouched(Touch.horizontalTouched, Touch.verticalTouched);
    }

    private void regionHit() {
        Bitmap _andTest = BitmapFactory.decodeResource(getResources(), R.drawable.andgatetrans);

        if(touchTemp.equals("AND")){
            canvas.drawBitmap(_andTest,Touch.horizontalTouched*grid.getBlockSize(),Touch.verticalTouched*grid.getBlockSize(),null);
            //drawIcons.drawANDGatev2(canvas,Touch.horizontalTouched*grid.getBlockSize(),Touch.verticalTouched*grid.getBlockSize());
        }
        if(touchTemp.equals("OR")){
        }
        if(touchTemp.equals("NOT")){
        }
        if(touchTemp.equals("SWITCH")){
        }

    }
    // used to tell regionHit() what to do
    private String whatWasTouched(float horizontalTouched, float verticalTouched) {
        if(horizontalTouched >= 5.0 && horizontalTouched <= 9.0){
            if(verticalTouched >= 0.0 && verticalTouched <=4.0){
                return "AND";
            }
        }
        if(horizontalTouched >= 5.0 && horizontalTouched <= 9.0){
            if(verticalTouched >= 5.0 && verticalTouched <=9.0){
                return "OR";
            }
        }
        if(horizontalTouched >= 5.0 && horizontalTouched <= 9.0){
            if(verticalTouched >= 10.0 && verticalTouched <=14.0){
                return "NOT";
            }
        }
        if(horizontalTouched >= 5.0 && horizontalTouched <= 9.0){
            if(verticalTouched >= 15.0 && verticalTouched <=19.0){
                return "SWITCH";
            }
        }
        if(horizontalTouched >= 0.0 && horizontalTouched <= 4.0){
            if(verticalTouched >= 0.0 && verticalTouched <=4.0){
                return "Play/Pause";
            }
        }
        if(horizontalTouched >= 0.0 && horizontalTouched <= 4.0){
            if(verticalTouched >= 5.0 && verticalTouched <=9.0){
                return "EDIT";
            }
        }
        if(horizontalTouched >= 0.0 && horizontalTouched <= 4.0){
            if(verticalTouched >= 10.0 && verticalTouched <=14.0){
                return "WIRE";
            }
        }
        if(horizontalTouched >= 0.0 && horizontalTouched <= 4.0){
            if(verticalTouched >= 15.0 && verticalTouched <=19.0){
                return "LED";
            }
        }

        return "-1";
    }

注意:regionTouched()在onTouchEvent()的draw()中被调用我希望能够触摸我的单屏应用程序中指示“与”门的区域,然后再次触摸以将其放置在画布的空白部分并留在画布上,并在其中分配其在画布上的位置。它被放置。但是一旦我再次触摸屏幕,所有的工作都将被放置和移除。

我正在尝试触摸应用程序的区域,以在屏幕上放置一个AND门。因此,当我触摸“与”门区域,然后再次触摸以将其放置在电路上时,门会在...

java android android-layout android-canvas android-bitmap
1个回答
0
投票

[确定,因此,您的AND门是使用whatWasTouched()方法选择的,并放置在画布的空白部分中,在重复执行时,AND门消失了,您希望它保持在原位置吗?为此,您需要将AND门的位置保存在某处。

© www.soinside.com 2019 - 2024. All rights reserved.