shaotine_wu
shaotine_wu
采纳率16.7%
2015-06-30 08:55

如何使得canvas里的图片能够进行旋转,而不导致整个画布的旋转

3

自定义的布局中,在一个Canvas里绘画了很多图片。现在想使得画布里的
每个图片都进行旋转。我使用了下面的代码

``` public static void drawPic(Canvas canvas)
{

mRotation += 10;
if (mRotation > 360)
{
    mRotation = mRotation % 360;
}
synchronized (lockObject)
{
    for (int i = 0; i < particleList.size();i++)
    {
        Picture particle = pictureList.get(i);
        Paint paint=new Paint();

        ......

        paint.setAlpha(particle.getAlpha());

       //rotate the bitmap
        canvas.save();
        Matrix matrix = new Matrix();
        matrix.postRotate(mRotation,particle
                .getPositionX() + particle.getParticleWidth()/2, particle.getPositionY() +
                particle.getParticleHeight()/2);
        canvas.drawBitmap(particle.getParticleImage(), matrix, paint);
        canvas.restore();
    }

}

}

但是上面的代码运行的结果是整个画布旋转,而不是画布里的图片旋转,这是为什么?求高手解答。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • qq_15540219 kl_l 6年前

    用Translate

    点赞 评论 复制链接分享
  • shaotine_wu shaotine_wu 6年前

    不是铺满的,大概的效果图是:我在canvas上画了很多个粒子,我现在想让每个粒子都能旋转起来。

    点赞 评论 复制链接分享
  • danielinbiti danielinbiti 6年前
     这段代码中canvas.save();和canvas.restore();没有意义,你画图没有旋转或者位移等操作。去掉后看看。
     如果去掉后效果变了,那确认一下其他地方代码没有对canvas进行rotate或者Translate等操作。
    
    
    点赞 评论 复制链接分享
  • bdmh bdmh 6年前

    canvas.rotate,你用这个试试

    点赞 评论 复制链接分享

相关推荐