如何在 Android 中逐个绘制花瓣

5
在Android中,我想通过从中心点添加每个花瓣来绘制花朵。我在ImageView上使用了setRotation,但每个花瓣的中心点不同。(我的意思是花的中心点)有人可以看一下我的代码并建议我进行更正吗?谢谢。
   int angle=0;
   int ypos=500;
   int xpos=500;

   RelativeLayout layout = (RelativeLayout)findViewById(R.id.ln1);

   for(int i=0;i<10;i++)
   {

      ImageView image = new ImageView(this);
      image.setLayoutParams(new android.view.ViewGroup.LayoutParams(150,400));
      image.setX(xpos);
      image.setY(ypos);
      image.setPadding(-7,-30,-10,0);
      image.setPivotX(1.0f);
      image.setScaleX(1.5f);
      image.setScaleY(1.5f);

      image.setImageResource(R.drawable.petal);
      image.setRotation(image.getRotation() + angle);
      angle=angle+36;
      layout.addView(image);
   }

我得到的图片是这样的:

在此输入图片描述


(注:该内容为HTML代码,已被翻译)

1
你是指“每个花瓣的中心点确实不同”,还是“每个花瓣的中心点应该不同”?(在后一种情况下,我会假设您指的是花瓣的中心点,而不是整朵花的中心点)。无论哪种方式,我认为您漏掉了一个翻译——需要为每个独立的花瓣添加一些 x 和 y 值。 - S.L. Barth
2
你能否发布一张图片链接或其他东西来说明你想象中的最终结果是什么? - bko
1
是的,我已经编辑了问题并添加了我正在获取的图像。谢谢。 - MACMAN
1
你确定这是正确的代码片段吗?如果在调用 setRotation 之前增加了角度,那么我会期望看到这张图片。而且,我猜想图像中的花瓣本身是“直立”的,而不是原始图像本身被旋转了? - S.L. Barth
2
不知道原始图像的样子很难。我有印象你应该从另一个角度开始。也许 angle=-36。如果这不起作用,请尝试其他起始角度。 - Ralf Renz
显示剩余2条评论
2个回答

4
当您旋转图像时,旋转是以图像的左上角而不是旋转后图像的中心进行的。
下面的图片可能会说明这一点。黑色正方形代表您的图像。左边显示了您现在的情况。右边显示了您想要的情况。

enter image description here

旋转之前,您应该从x位置减去一半的宽度,并从y位置加上一半的高度。然后您应该获得所需的图像。
正如用户Ralf Renz在他们的评论中指出的那样,您也可以简单地从-36度开始旋转。这是一个有用的解决方法。

1
感谢详细的解释。让我试试这个。 - MACMAN

1
我使用以下策略来完成这个任务。
image.setPivotY(-1);

现在花的设计变了,因为花瓣倾斜了。所以我使用Inkscape将我的实际图像倾斜到相反的方向,现在我得到了期望的输出。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接