Path path = new Path();
path.moveTo(50, 0);
path.lineTo(0, 50);
path.lineTo(50, 100);
path.lineTo(100, 50);
//封闭前面点所绘制的路径
path.close();ShapeDrawable mDrawables = new ShapeDrawable(new PathShape(path, 100, 100));请问这个path对象的4个顶点的坐标应该是个正方形,为什么画出来效果是个菱形。PathShape构造器中后2个参数,是如何起作用的,有时是100,有时是150,不知道如何计算。多边形的造型是否和setBounds(int left, int top, int right, int bottom)
方法有关,请高手解答,谢谢
解决方案 »
- addContentView和setContentView的区别
- 请问如何实现开机自动启动安卓应用(非木马)?
- android 动态控件尺寸单位问题
- 怎么样才能在android中显示公式
- 想咨询一下大家写Android应用程序的流程图怎么画
- locationManager.requestLocationUpdates 设置时间没用啊!
- android标签问题
- Android 保存cookie并返回给webservice服务器的问题
- android 怎么才能通过app自动添加widget到桌面?
- 关于按钮相应事件问题
- android发布软件无需认证,所以手机容易泄密!
- 在cygwin下用NDK编译CPP工程时需要在.mk文件里面怎么写才能生成map文件,这个文件包含C++工程中所有函数的入口地址
path.lineTo(0, 100);
path.lineTo(100, 100);
path.lineTo(100, 0);
这才是正方形吧...LZ那个画法就是菱形
Path path = new Path();
path.moveTo(50, 0);
path.lineTo(0, 50);
path.lineTo(50, 100);
path.lineTo(100, 50);
//封闭前面点所绘制的路径
path.close();ShapeDrawable mDrawables = new ShapeDrawable(new PathShape(path, 100, 100));setBounds(0,0,300,50);
刚好能撑满,形成一个菱形,这些数值之间的关系是怎么样的呢
setBounds(0, 0 ,x ,y ) ;
PathShape(path, 100,100) ;比例大小是x/100 y/100
如setBounds(0, 0 ,200 ,300 ) ;x放大2倍 y放大3倍public PathShape (Path path, float stdWidth, float stdHeight)
Since: API Level 1 PathShape constructor.Parameters
path a Path that defines the geometric paths for this shape
stdWidth the standard width for the shape. Any changes to the width with resize() will result in a width scaled based on the new width divided by this width. stdHeight the standard height for the shape. Any changes to the height with resize() will result in a height scaled based on the new height divided by this height.
/* 绘制图像 */
mShapeDrawable.draw(canvas);
Path path1 = new Path();
/*设置多边形的点*/
path1.moveTo(150+5, 80+80-50);
path1.lineTo(150+45, 80+80-50);
path1.lineTo(150+30, 80+120-50);
path1.lineTo(150+20, 80+120-50);
/* 使这些点构成封闭的多边形 */
path1.close();
//PathShape后面两个参数分别是宽度和高度
mShapeDrawable = new ShapeDrawable(new PathShape(path1,150,150));
//得到画笔paint对象并设置其颜色
mShapeDrawable.getPaint().setColor(Color.BLUE);
/* 设置图像显示的区域 */
mShapeDrawable.setBounds(100, 170, 200, 280);
/* 绘制图像 */
mShapeDrawable.draw(canvas);
我想知道,这个梯形的位置是怎么定的,怎么和椭圆的上下对齐的?
Path path1 = new Path();
path1.moveTo(5, 0);
path1.lineTo(45, 0);
path1.lineTo(30, 40);
path1.lineTo(20, 40);
path1.close();path1不用偏移了,梯形的位置用setBounds设一个偏移就行了好计算。
mShapeDrawable.setBounds(100, 170, 200, 280);这里计算的宽是100,高是110
和你new PathShape(path1,150,150)不一样,这里会自动比例缩小。
1、path1设置成这样,是不是还有(5,0)的偏移?这个偏移,有没有相应的缩放比例(如:比例大小是x/100)2、
path1.moveTo(150+5, 80+80-50);
path1.lineTo(150+45, 80+80-50);
path1.lineTo(150+30, 80+120-50);
path1.lineTo(150+20, 80+120-50);mShapeDrawable.setBounds(100, 170, 200, 280);梯形的top怎么坐落在y=250上,感觉像是80+170的样子,不知道为什么
Path path1 = new Path();
path1.moveTo(0, 0);
path1.lineTo(40, 0);
path1.lineTo(25, 40);
path1.lineTo(15, 40);
path1.close();
2.这个应该在x=255 y=280上吧,两个偏移加上就是了
/* 实例化ShapeDrawable对象并说明是绘制一个矩形 */
mShapeDrawable = new ShapeDrawable(new RectShape());
//得到画笔paint对象并设置其颜色
mShapeDrawable.getPaint().setColor(Color.RED);
Rect bounds = new Rect(5, 250, 55, 280);
/* 设置图像显示的区域 */
mShapeDrawable.setBounds(bounds);此梯形和这个矩形平行
拿y轴来说,是从y=250~280的,当前地方要是简单的相加的话,就变成y=280~320。书上 这么写代码path1.moveTo(150+5, 80+80-50);可能有个好理解的算法
PathShape(path1,150,150)
mShapeDrawable.setBounds(100, 170, 200, 280);x=100+(200-100)/150*(150+5)
y=170+(280-170)150*(80+80-50)
setBounds内的偏移是绝对的 画布上的坐标要乘以放大系数才行