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