我有两个android画,但我不知道为什么一个工作,第二个不

时间:2014-07-23 08:33:53

标签: android android-canvas

此代码工作并绘制一个ok:

   paintComponent(canvas);
        p=new Paint();
        p.setColor(Color.RED);

        for(int i=1;i<pointA.size();i++){
         int beginx=pointA.get(i-1).x, beginy=pointA.get(i-1).y,endx= pointA.get(i).x,endy= pointA.get(i).y;
         canvas.drawLine(beginx,beginy ,endx,endy, p);   
         Log.e("matej",beginx+"endy"+beginy+"endx"+endx+"endy"+endy);          

        }
        //canvas.drawLine(0, 181, xtest, ytest, p);
        //canvas.drawPath(path, p);

这段代码绘制不好从一点画出但我不知道为什么:

paintComponent(canvas);
    p=new Paint();
    p.setColor(Color.RED);
    Path path1=new Path();
    path1.moveTo(pointA.get(0).x, pointA.get(0).y);
    for(int i=1;i<pointA.size();i=i+2){
     int beginx=pointA.get(i-1).x, beginy=pointA.get(i-1).y,endx= pointA.get(i).x,endy= pointA.get(i).y;
     path1.moveTo(pointA.get(i-1).x,pointA.get(i-1).y);
     path1.lineTo(pointA.get(i).x, pointA.get(i).y);   
     Log.e("matej","beginx "+beginx+"beginy "+beginy+"endx "+endx+"endy "+endy); 

最后我想知道我在第二段代码中失败了什么,我想知道哪些代码更快:) tnx

1 个答案:

答案 0 :(得分:0)

你声明了很多int值(beginx,beginy等)并且实际上并没有使用它们,我建议使用它们或者为了清楚起见删除它们。

你也在跳过一些观点,IE

i = 1:
 moveTo(0, 0)
 lineTo(1, 1)

i = 3:
 moveTo(2, 2)
 lineTo(3, 3)

因此(1,1)和(2,2)之间没有划线

你也永远不会调用canvas.drawPath()所以我不完全确定在第二个例子中如何将任何内容绘制到屏幕上。