Java 安排在画布上绘制的绘图

Java 安排在画布上绘制的绘图,java,android,Java,Android,在重新绘制之前,是否有办法在画布上排列可绘制的抽屉?我的意思是设置在前面绘制哪个可绘制,在后面绘制哪个可绘制。它们是按照您绘制它们的顺序绘制的。试着先画后面的,最后再画前面的。你可以画一个临时画布,以后再画主画布 Picture iconFrame = new Picture(); Canvas tempCanvas = iconFrame.beginRecording(width, height); // width and height refer to the intended desti

在重新绘制之前,是否有办法在画布上排列可绘制的抽屉?我的意思是设置在前面绘制哪个可绘制,在后面绘制哪个可绘制。

它们是按照您绘制它们的顺序绘制的。试着先画后面的,最后再画前面的。

你可以画一个临时画布,以后再画主画布

Picture iconFrame = new Picture();
Canvas tempCanvas = iconFrame.beginRecording(width, height);
// width and height refer to the intended destination canvas size

...
// Any configuration before performing the draw should be done here

tempCanvas.drawPath(...);
tempCanvas.drawBitmap(...);
// Any required draw commands for this image should be done to tempCanvas

iconFrame.endRecording();

...
// Any other configuration or draw commands can be done here

iconFrame.draw(canvas);
// Assigns the content of tempCanvas to the top of the main Canvas

就我而言,在自定义路径中对我的图像进行PorterDuff操作只有在先操作后才有效,因为后来绘制的图像已损坏。

一种方法是让您绘制的所有内容定义一个z索引变量,并在单个点收集您绘制的所有内容,然后将它们放入一个列表中,然后在绘制之前按z索引排序

例:

在绘图或主类中

List<IDrawable> myList= new ArrayList();
myList.Add(new DrawMe());

不管怎样,这就是概念

我知道,我需要一个更好的方法。。。然后你在寻找类似z指数的东西,对吗?据我所知,世上没有这样的事。但是如果你知道你的绘图应该有哪个z索引,就直接把它们按顺序画出来。这没什么区别。或者给自己写一个类,给你所有的可画元素和它们的z-索引,让它按照正确的顺序画它们。问题到底出在哪里?你看,我想要一个可画的在另一个可画的后面,这个可画的在for循环中。但是我不希望它在循环中绘制的所有可绘制文件后面,因此将代码放在第一位对我没有任何帮助:/而且我还希望在(drawable1.y>drawble2.y){将可绘制文件1放在前面}的情况下这样做……仍然。。。把他们画成那样。调用invalidate()并按正确的顺序重新绘制绘图。不可能将某物“移动”到前面或后面。这是一块帆布。你在画画!
List<IDrawable> myList= new ArrayList();
myList.Add(new DrawMe());
for(IDrawable draw : myList.OrderBy(z){
   draw.draw();
}