Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在画布中的八个坐标处放置图像_Android - Fatal编程技术网

Android 如何在画布中的八个坐标处放置图像

Android 如何在画布中的八个坐标处放置图像,android,Android,!![如何在android的画布上放置8个坐标的图像,请帮助我解决这个问题 问题,我需要移动这个图像的下一个新的8坐标,这些值是从文本文件帮助我找到一个很好的解决方案这个问题 如何在android的画布上放置8个坐标的图像请帮助我解决这个问题 问题,我需要将此图像移动下一个新的8坐标,这些值来自文本文件,请帮助我解决此问题 cordi.txt(它像这样) 200 110 600 110 200 740 600 740 200111600111200741600741 20011260011220

!![如何在android的画布上放置8个坐标的图像,请帮助我解决这个问题 问题,我需要移动这个图像的下一个新的8坐标,这些值是从文本文件帮助我找到一个很好的解决方案这个问题

如何在android的画布上放置8个坐标的图像请帮助我解决这个问题 问题,我需要将此图像移动下一个新的8坐标,这些值来自文本文件,请帮助我解决此问题

cordi.txt(它像这样)

200 110 600 110 200 740 600 740

200111600111200741600741

200112600112200742600742

200 113 600 113 200 743 600 743

200 114 600 114 200 744 600 744

//在这里,从文本文件中获取坐标

//在这里,我画了坐标的连接线,但我需要将图像放置在坐标中

但我发现用这种方法将位图图像放置在X,Y的特定位置 它在线性运动中上下移动可以完美工作,但当没有线性坐标时,这意味着(图像旋转发生)此时我无法找到位图与轴的旋转角度u可以给出指导线吗

    class image_placer extend view { 
            BufferedReader reader = new BufferedReader(new  InputStreamReader(context1.getAssets().open("cordi.txt")));
                      String line;
                      while ((line = reader.readLine()) != null)
                  {
                       String[]  saLineElements = line.split("  ");
                      X1.add(Integer.parseInt(saLineElements[0].toString().trim()));
                      Y1.add(Integer.parseInt(saLineElements[1].toString().trim()));

                      X2.add(Integer.parseInt(saLineElements[2].toString().trim()));
                      Y2.add(Integer.parseInt(saLineElements[3].toString().trim()));

                      X3.add(Integer.parseInt(saLineElements[4].toString().trim()));
                      Y3.add(Integer.parseInt(saLineElements[5].toString().trim()));

                      X4.add(Integer.parseInt(saLineElements[6].toString().trim()));
                      Y4.add(Integer.parseInt(saLineElements[7].toString().trim()));  
                  }
                  reader.close();
               } 
              catch (FileNotFoundException e){
                  System.err.println(
                     "FileNotFoundException: " + e.getMessage());
              } catch (IOException e) {
                  e.printStackTrace();
              }catch (NumberFormatException e) {
                 System.out.println(""+e.getMessage());
            }
// now in on draw method i need to place the image in that coordinates  i=0 (Globally declared )
            public void onDraw(Canvas canvas) {  
                  if(i>=X1.size())
            {
                i=0;
                X=X1.get(i);
                Y=Y1.get(i);
                 dx=X2.get(i)-X1.get(i);
                dy=Y3.get(i)-Y1.get(i);
                Path drawPath=new Path();
                drawPath.moveTo(X1.get(i), Y1.get(i));
                drawPath.lineTo(X2.get(i), Y2.get(i));
                drawPath.lineTo(X4.get(i), Y4.get(i));
                drawPath.lineTo(X3.get(i), Y3.get(i));
                drawPath.lineTo(X1.get(i), Y1.get(i));    
               canvas.drawPath(drawPath, mPaint);

          }

            else
            {
                X=X1.get(i);
                Y=Y1.get(i);
                dx=X2.get(i)-X1.get(i);
                dy=Y3.get(i)-Y1.get(i);
                Path drawPath=new Path();
                drawPath.moveTo(X1.get(i), Y1.get(i));
                drawPath.lineTo(X2.get(i), Y2.get(i));
                drawPath.lineTo(X4.get(i), Y4.get(i));
                drawPath.lineTo(X3.get(i), Y3.get(i));
                drawPath.lineTo(X1.get(i), Y1.get(i));    
               canvas.drawPath(drawPath, mPaint);
                i++;
            }
     float scaleWidth = (dx) / ballW;
        float scaleHeight = (dy) / ballH;
        if(i<=X1.size())
        {
        Matrix matrix_rev = new Matrix();
        matrix_rev.postScale(scaleWidth, scaleHeight);
        resizedBitmap = Bitmap.createBitmap(reverse, 0, 0,
                ballW, ballH, matrix_rev, true);
        }else{
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth, scaleHeight);
            if(i<=X1.size()-1)
           resizedBitmap = Bitmap.createBitmap(ball, 0, 0,
                    ballW, ballH, matrix, true);
        }

         canvas.drawBitmap(bitmap_img, X,Y, null);
             invalidate();
    }}
类图像\u放置程序扩展视图{
BufferedReader=新的BufferedReader(新的InputStreamReader(context1.getAssets().open(“cord.txt”));
弦线;
而((line=reader.readLine())!=null)
{
String[]saLineElements=line.split(“”);
X1.add(Integer.parseInt(saLineElements[0].toString().trim());
Y1.add(Integer.parseInt(saLineElements[1].toString().trim());
X2.add(Integer.parseInt(saLineElements[2].toString().trim());
Y2.add(Integer.parseInt(saLineElements[3].toString().trim());
add(Integer.parseInt(saLineElements[4].toString().trim());
Y3.add(Integer.parseInt(saLineElements[5].toString().trim());
add(Integer.parseInt(saLineElements[6].toString().trim());
Y4.add(Integer.parseInt(saLineElements[7].toString().trim());
}
reader.close();
} 
catch(filenotfounde异常){
System.err.println(
“FileNotFoundException:”+e.getMessage());
}捕获(IOE异常){
e、 printStackTrace();
}捕获(数字格式){
System.out.println(“+e.getMessage());
}
//现在在绘制方法中,我需要将图像放置在坐标i=0(全局声明)处
公共空白onDraw(画布){
如果(i>=X1.size())
{
i=0;
X=X1.get(i);
Y=Y1.get(i);
dx=X2.get(i)-X1.get(i);
dy=Y3.get(i)-Y1.get(i);
路径drawPath=新路径();
drawPath.moveTo(X1.get(i),Y1.get(i));
drawPath.lineTo(X2.get(i),Y2.get(i));
drawPath.lineTo(X4.get(i),Y4.get(i));
drawPath.lineTo(X3.get(i),Y3.get(i));
drawPath.lineTo(X1.get(i),Y1.get(i));
canvas.drawPath(drawPath,mPaint);
}
其他的
{
X=X1.get(i);
Y=Y1.get(i);
dx=X2.get(i)-X1.get(i);
dy=Y3.get(i)-Y1.get(i);
路径drawPath=新路径();
drawPath.moveTo(X1.get(i),Y1.get(i));
drawPath.lineTo(X2.get(i),Y2.get(i));
drawPath.lineTo(X4.get(i),Y4.get(i));
drawPath.lineTo(X3.get(i),Y3.get(i));
drawPath.lineTo(X1.get(i),Y1.get(i));
canvas.drawPath(drawPath,mPaint);
i++;
}
浮标宽度=(dx)/ballW;
浮标重量=(dy)/ball;
如果(i你可以使用

RectF dstRect=new RectF(x1,y1,width,height);
Canvas can=new Canvas();
can.drawBitmap(bitmap, null, dstRect, paint);

此解决方案适用于平行于y轴或X轴的图像边,但在此处,它与任何解决方案的轴成角度