安排在画布上绘制的drawable

时间:2012-01-05 00:27:17

标签: java android

有没有办法在绘制之前在画布上绘制可绘画?我的意思是设置哪个drawable将在前面绘制,哪个drawable将在后面绘制。

3 个答案:

答案 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();
}

无论如何都是这个概念