Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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
Java 从像素坐标在图片上绘制矩形_Java_Android_Paint_Android Canvas - Fatal编程技术网

Java 从像素坐标在图片上绘制矩形

Java 从像素坐标在图片上绘制矩形,java,android,paint,android-canvas,Java,Android,Paint,Android Canvas,使用以下代码,我可以在位图图像上绘制一个矩形 Paint paint = new Paint(); paint.setStyle(Style.STROKE); paint.setColor(Color.BLUE); publishProgress(80); Canvas canvas = new Canvas(mBitmap); publishProgress(85); canvas.drawRect(200, 100, 200, 100, paint); bitmap.recycle(); c

使用以下代码,我可以在位图图像上绘制一个矩形

Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.BLUE);
publishProgress(80);
Canvas canvas = new Canvas(mBitmap);
publishProgress(85);
canvas.drawRect(200, 100, 200, 100, paint);
bitmap.recycle();
channel.close();
我已经读到
canvas.drawRect(200100200100Paint)中给出的值分别表示左x、上y、右x和下y。因此,我的问题是:

  • 这些值是以像素为单位的吗?ppi还是什么
  • 如果我只有下图所示的每个角点的像素坐标,如何在图像上绘制矩形?假设我有A(x,y)B(x,y),C(x,y)和D(x,y),其中x和y以下面图片轴的像素表示。 注意:我无法控制A、B、C、D,它们是通过web服务提供给我的


    • 我认为您在这里没有问题,您可以这样做:

      drawRect(a.getX(),a.getY(),c.getX(),c.getY(),paint)


      是,值以像素为单位,但原点(0,0)通常位于画布的左上角。在画布上向下移动时,Y值变得更为正值。

      因此,如果我理解get a.getX()中的内容,我必须给出a的坐标??像A(x,y)你说你从一个web服务中得到了A,B,C和D?它们看起来像什么?你真的有8个数字吗?当你给它2时,draw rectangle函数基本上计算出你的4个点,因为你实际上只有4个唯一的值。我的意思是A和B都有相同的Y坐标。正如D和C一样,A和D具有相同的X坐标,B和C也具有相同的X坐标。因此,您只需告诉画布矩形的左上角和右下角坐标,它就会计算出其余的坐标。实际上,它们是由xml rpc提供给我的,所以我需要首先通过解析提取值。这是我从中提取值的xml:100 200 100 200 100 200 200我知道画布只需要4个值,这就是我遇到问题的原因。我的问题是如何转换画布所需的4中的8个值,我的答案告诉了您如何进行转换。传递它:A的X值,A的Y值,C的X值,C的Y值