【问题标题】:How to fill a star with partially in android?如何在android中部分填充星星?
【发布时间】:2016-01-13 09:20:12
【问题描述】:

Fill star with partially Picture

看上图。 我的示例代码如下

`protected void onDraw(Canvas canvas) { 中=getWidth()/2; int a=100,b=100; min = Math.min(a, b); 脂肪 = 最小 / 17; 一半 = 分钟 / 2; 弧度 = 5; mid = 中 - 一半;

     paint = new Paint();
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.STROKE);
    Path path = new Path();
    path.reset();
    paint.setStyle(Paint.Style.FILL);


 // top left
    path.moveTo(half * 0.5f, half * 0.84f);

 // top right
    path.lineTo(half * 1.5f, half * 0.84f);

 // bottom left
    path.lineTo(half * 0.68f, half * 1.45f);

 // top tip
    path.lineTo(half * 1.0f, half * 0.5f);

// bottom right
    path.lineTo(half * 1.32f, half * 1.45f);

 // top left
    path.lineTo(half * 0.5f, half * 0.84f);

    path.close();

canvas.drawPath(path, paint);
    super.onDraw(canvas);

}` 

我的问题是我们如何在android中部分填充star?

我想要这个填充选项不仅有半填充星。

而且,如果我们考虑全星长度是 100%。

我们必须填充 20% 的星长,或者我们必须填充 50% 的星长,或者我们必须填充 70% 的星长。

填充星的任何填充值。

【问题讨论】:

    标签: android android-layout canvas draw paint


    【解决方案1】:

    您的path 对象是用于星星的“轮廓”。如果你想完全绘制它,那么你可以将样式设置为填充和描边。但是你不能对它进行部分绘制。您需要创建另一个 path 对象并将绘制设置为 FILL 并绘制它。因此,理想情况下,您将分别绘制轮廓和填充。

    这很简单。你已经完成了一半。您可以将您为轮廓路径所做的计算重用于填充路径。

    更新: 如果这是用于评级之类的事情,那么您需要动态增加或减少填充。如果是这样的话。您可以将填充绘制为矩形,然后使用星形轮廓对其进行剪辑。那么你只需要增加或减少 Rectangle 的宽度即可。

    更多信息在这里:How to mask out a simple region when painting in Android?

    更新:如果您想要的是部分图片,那么您必须创建该图片的位图,然后使用drawBitmap() 绘制它。然后使用 clipRegion() 剪辑该区域,使其看起来像是部分填充的。

    【讨论】:

    • 我想要这个填充选项,而不仅仅是半填充星。而且,如果我们考虑全星长度是 100%。我们必须填充 20% 的星长,或者我们必须填充 50% 的星长,或者我们必须填充 70% 的星长。填充星的任何填充值。
    • 很高兴这个答案对您有所帮助。如果要增加或减少填充,只需增加或减少 FILLED RECTANGLE 的大小。剪裁后,您将获得部分填充的效果。你可以从 0% 到 100%。
    • 我也有你上面建议的相同想法。这是我在 stack over flow 中提出的第一个问题。你已经回答了这个问题。谢谢你。我很高兴。你继续这个习惯来回答 stack over flow 成员提出的问题。
    • 我是这样做的,但是在剪切路径时不好看。请看另一个问题链接stackoverflow.com/questions/33301655/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多