Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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_Canvas_Android Canvas - Fatal编程技术网

Java 如何在画布中旋转线条

Java 如何在画布中旋转线条,java,android,canvas,android-canvas,Java,Android,Canvas,Android Canvas,目前,我正在尝试旋转我在画布中绘制的线条。我设法做到了,但当我将它们旋转360°时,前面位置的直线并没有消失,所以最后我得到的不是一条直线,而是整圈 这是我的密码: 此代码段随应用程序的启动而启动 DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); height = displaymetrics.height

目前,我正在尝试旋转我在
画布中绘制的
线条
。我设法做到了,但当我将它们旋转360°时,前面位置的直线并没有消失,所以最后我得到的不是一条直线,而是整圈

这是我的密码:

此代码段随应用程序的启动而启动

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;

imageView1 = (ImageView) findViewById(R.id.imageView1);
btn = (Button) findViewById(R.id.button1);

Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
bmp = Bitmap.createBitmap(width, height, conf); // this creates a MUTABLE bitmap
canvas = new Canvas(bmp);
p = new Paint();
p.setColor(Color.RED);
imageView1.setImageBitmap(bmp);
p.setStrokeWidth(5);
canvas.drawLine(0, height/2, width, height/2, p);
这篇文章每秒钟更新一次

canvas.rotate(refY, width/2, height/2);
canvas.drawLine(0, height/2, width, height/2, p);
btn.setText(Integer.toString(refY))

相应地保存和恢复画布:

canvas.save();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); //clear everything drawn to the bitmap
canvas.rotate(refY, width/2, height/2);
canvas.drawLine(0, height/2, width, height/2, p);
canvas.restore();
btn.setText(Integer.toString(refY))

相应地保存和恢复画布:

canvas.save();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); //clear everything drawn to the bitmap
canvas.rotate(refY, width/2, height/2);
canvas.drawLine(0, height/2, width, height/2, p);
canvas.restore();
btn.setText(Integer.toString(refY))

您能否提供有关如何更新
refY
以及如何调用上述代码(例如,从处理程序调用)的更多详细信息?我以为您希望在屏幕上始终显示这些行,但情况似乎并非如此。你能澄清一下当它达到360度时会发生什么吗?我只想要一条旋转的线。但为此,我需要删除前面的每一行。目前,我的代码能够绘制旋转,但它不会删除先前位置的直线,从而创建一个圆。因此,您必须清除先前的内容,然后绘制新的内容。我会更新我的答案。是的,听起来不错。你能提供更多关于如何更新
refY
以及如何调用上述代码(例如,从处理程序)的详细信息吗?我以为你想让这些行始终显示在屏幕上,但似乎不是这样。你能澄清一下当它达到360度时会发生什么吗?我只想要一条旋转的线。但为此,我需要删除前面的每一行。目前,我的代码能够绘制旋转,但它不会删除先前位置的直线,从而创建一个圆。因此,您必须清除先前的内容,然后绘制新的内容。我会更新我的答案。是的,听起来不错。