首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >android画布使用重影绘制形状

android画布使用重影绘制形状
EN

Stack Overflow用户
提问于 2016-07-23 21:50:59
回答 1查看 77关注 0票数 0

我正在尝试创建一个简单的绘图应用程序,用户可以按下我的自定义视图的一个点,并拖动它来创建一个矩形或一个圆,我设法做到了很容易。

当我尝试向用户显示当形状变大或变小时移动其形状的进度时,出现了问题。

简单地解释一下,如果你在桌面上点击并拖动鼠标,我想要的效果和windows上的一样。

这是我的onTouchEvent方法,我该怎么做?

代码语言:javascript
复制
if (chosenShape.equals("rectangle")) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: // user start pressing
            //starting point - one side of the rect
            starting_X = touchX;
            starting_Y = touchY;
            break;
        case MotionEvent.ACTION_MOVE: // user move while pressing

            break;
        case MotionEvent.ACTION_UP: // user release
            //ending point - thie side of the circle
            ending_X = touchX;
            ending_Y = touchY;
            // draw the rectangle - opposite side of the rect
            drawCanvas.drawRect(starting_X, starting_Y, ending_X, ending_Y, drawPaint);
            chosenShape = ""; // reseting the shape to keep drawing
            break;
        default:
            return false;

    }
} else {
    switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:
            drawPath.moveTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_MOVE:
            drawPath.lineTo(touchX, touchY);
            break;
        case MotionEvent.ACTION_UP:
            drawCanvas.drawPath(drawPath, drawPaint);
            drawPath.reset();
            break;
        default:
            return false;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-24 00:19:08

case MotionEvent.ACTION_MOVE:中,您需要设置ending_Xending_Y的值。

更好的方法是跟踪intermediate_xintermediate_y,这样你就可以绘制不同的效果,例如一条虚线而不是实线。

你最好存储用户绘制的所有形状,并在每次出现触摸事件时刷新画布,否则在拖动时绘制的形状将不会被清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38542520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档