有没有办法在绘制之前在画布上绘制可绘画?我的意思是设置哪个drawable将在前面绘制,哪个drawable将在后面绘制。
答案 0 :(得分:4)
它们按照您绘制它们的顺序绘制。试着先把它放在后面的那个,前面的那个最后一个。
答案 1 :(得分:0)
您可以绘制到临时画布以便稍后绘制到主画布。
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操作只有在首先完成时才会起作用,因为后来会将其损坏。
答案 2 :(得分:0)
一种方法是让你绘制的所有内容定义一个z-index变量,并收集你在一个点上绘制的所有内容,并将它们放在一个列表中,然后在绘制之前按z-index排序。
例如:
Interface IDrawable{
int getZ();
void draw();
}
class drawMe implements IDrawable{
@overrider
draw(){
/// do my drawing
}
@override
int getZ() {return z; }
}
在你的绘画或主要课程中
List<IDrawable> myList= new ArrayList();
myList.Add(new DrawMe());
并在你的绘制方法
for(IDrawable draw : myList.OrderBy(z){
draw.draw();
}
无论如何都是这个概念