首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShapeDrawable(来自PathShape)未在正确的坐标上绘制

ShapeDrawable(来自PathShape)未在正确的坐标上绘制
EN

Stack Overflow用户
提问于 2012-02-04 01:45:11
回答 1查看 2.5K关注 0票数 1

我正在尝试创建一个ShapeDrawable,它绘制以下路径:

代码语言:javascript
复制
Path path = new Path();
path.moveTo(50, 20);
path.lineTo(0, 50);
path.lineTo(50, 100);

ShapeDrawable shapeDrawable = new ShapeDrawable(new PathShape(path, someNumber ,someNumber ));

然后我将shapeDrawable作为可绘制图层的顶层,如下所示:

代码语言:javascript
复制
Drawable layers[] = new Drawable[2];
layers[0] = res.getDrawable(R.drawable.crawford01);
layers[1] =  shapeDrawable;

LayerDrawable layerDrawable = new LayerDrawable(layers);
view.setImageDrawable(layerDrawable);

现在的问题是,路径不是从(50,20)开始的,当您更改构造shapeDrawable的somenumber时,它会以我不理解的方式跳来跳去。

如果您能提供任何帮助或文档,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-10 00:11:38

在定义PathShape时,"someNumber“属性实际上非常重要,并且不是微不足道的。它们是路径的“标准”宽度和高度,本质上定义了路径的边界,并与在PathShape构造函数here中指定的定义路径的坐标直接相关。

另一个要点是,对于PathShape而言,用于定义Path的坐标不是绝对坐标,而是与标准宽度和高度相结合来计算形状在缩放时的外观。例如,以下两个PathShape在本质上是相同的。

代码语言:javascript
复制
public Path getPath1 {
    Path path = new Path();
    path.lineTo(0, 1);
    path.lineTo(1, 0);
    path.close();
    return path;
}

public Path getPath2 {
    Path path = new Path();
    path.lineTo(0, 10);
    path.lineTo(5, 0);
    path.close();
    return path;
}

PathShape shape1 = new PathShape(getPath1(), 1, 1);
PathShape shape2 = new PathShape(getPath2(), 5, 10);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9133051

复制
相关文章

相似问题

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