解读 LWUIT 之十:画笔(Painters)

解读 LWUIT 之十:画笔(Painters)

LWUIT 开发指南下载
作者写的 Hello Painter 源代码下载
        Painter 是一个用于在控件背景上进行绘制的接口。Painter 先把自己绘制出来,然后控件在屏幕的有效范围之内把自己绘制在 Painter 之上。使用 Painter 的最大优势之一就是我们可以任意绘制控件背景,比如实现控件的梯度背景,或者平铺背景(就是把一个图片平铺)。注意:为了可以看到 Painter 的绘制效果,我们必须把控件设置为一定程度的透明。
        举个例子。我们可以使用 Painter 在一个控件的背景上画一个对角线,源码如下:

 
        运行效果图如下(注意 Painter 效果会被 Button 上的图片覆盖掉):

HelloPainter 运行效果图
        有时单个 Painter 不能满足复杂逻辑需要的画法,这时可以使用 PainterChain 把几个 Painter 绑在一起作为一个进行展现。PainterChain 把 Painter 进行责任分工,比如一个 Painter 负责绘制背景图片而另一个 Painter 负责将验证错误信息高亮显示。可以这样创建一个 PainterChain:PainterChain chain = new PainterChain(new Painter[]{painter1, painter2});
        上面的效果图演示的是 Painter 绘制在容器背景之上,如果控件非透明,就看不到 Painter 效果。那么可否将 Painter 效果绘制在控件之上呢?可以使用 Glass Pane。Glass Pane 是一种绘制在容器之上的 Painter。使用 Glass Pane 可以为我们的应用程序创建特别的视觉特效。可以使用 PainterChain 来安装 Glass Pane 以防止其将已经安装的 Glass Pane 给替换掉。
        一般使用类似于下面的代码来安装使用 Glass Pane:
 
        使用 PainterChain 安装 Glass Pane 以防止已经安装的 Glass Pane 被替换(这种方法在没有任何 Glass Pane 对象被事先安装的情况下也可以用):

posted @ 2010-03-03 10:05  Defonds  阅读(70)  评论(0编辑  收藏  举报