Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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_Graphics_Custom Controls_Rotation - Fatal编程技术网

Java 用画布绘制人物并设置其角度的最佳方法是什么?

Java 用画布绘制人物并设置其角度的最佳方法是什么?,java,android,graphics,custom-controls,rotation,Java,Android,Graphics,Custom Controls,Rotation,我这里有个大麻烦。我需要在床上画一个娃娃(比如在医疗床上),但我似乎做不到。我尝试创建自定义视图,然后开始绘制。我使用了canvas.drawCircle和canvas.drawRect。我设法画了这个娃娃,但是我根据自定义视图的高度和宽度来确定它的大小,所以最后我无法设置角度 然后,我尝试设置自定义xml属性(大小),然后包装其内容。但wrap_内容不起作用,它总是设置为全屏。所以我不能用这个,因为我需要正确的头部位置来支撑身体的其他部分 我真正需要的是,画一些几何图形,然后分别处理它们。例如

我这里有个大麻烦。我需要在床上画一个娃娃(比如在医疗床上),但我似乎做不到。我尝试创建自定义视图,然后开始绘制。我使用了
canvas.drawCircle
canvas.drawRect
。我设法画了这个娃娃,但是我根据自定义视图的高度和宽度来确定它的大小,所以最后我无法设置角度

然后,我尝试设置自定义xml属性(大小),然后包装其内容。但wrap_内容不起作用,它总是设置为全屏。所以我不能用这个,因为我需要正确的头部位置来支撑身体的其他部分

我真正需要的是,画一些几何图形,然后分别处理它们。例如,用户选择移动腿,然后当他按下向上按钮时,腿将设置角度+1。我不知道在自定义视图和onDraw中是否可以这样做。我现在真的很迷茫,请,至少有人告诉我需要用什么来实现这一点

最好的方法是使用或


它给你最好的表现,但很难实现。这是一个很好的教程,共有5章详细介绍。

在画布中绘制时,您可以对要绘制的形状执行各种变换

因此,如果首先要旋转整个玩偶,则应在绘制玩偶之前执行变换。然后,您可以在该变换中变换每个身体部位。 例如,一个有一条腿的娃娃

//save the canvas transformation state
canvas.save();
   //first move the whole doll
   canvas.translate(dollPosition.x,dollposition.y);
   //we are now inside the coordinate system of the doll
   //draw head (Position is now relative to the center of the doll position)
   canvas.drawCircle(dollHeadPosition.x, dollHeadPosition.y, headRadius, paint);
   //save the canvas to transform leg independently
   canvas.save();
      canvas.translate(legPosition.x,legPosition.y);
      //draw leg
      canvas.drawRect(...);
      //restore the canvas to get back to your doll coordinate system
   canvas.restore()
//restore canvas to get to global coordinate system
canvas.restore()
有各种各样的变换,比如旋转和倾斜等等。只需使用自动完成来了解它们是如何编写的


(我希望缩进能清楚地说明它是如何工作的)

看起来真的很好,但我想我需要更简单的东西。我真的不需要3D。我需要一些简单的东西,更多的2D。它只是一个代表角度的棒状图形。这是因为当他按下上升按钮时,床实际上会上升。简单的玩偶是一个参考,看看床是向上的还是身体。我贴了一张图片,请看一看。非常好,我画了整个娃娃,现在它的大小正确,感谢你的帖子。但我还是不明白我怎么能旋转娃娃。例如,我想旋转头部和身体,但它是从右向左旋转,而不是从左向右旋转。我该怎么做?如果我理解正确,你有一个逆时针旋转,但希望它是时钟方向的?然后可以简单地插入旋转角度的负值。如果我回答了你的问题,请接受我的回答,并针对你的新问题提出新问题。