2012-12-14 69 views
2

我已经试过它覆盖paint()方法在我自己的类里扩展LabelField,但我忽略了是否有另一种更简单的方法。如何将阴影添加到黑莓LabelField中的文本?

我的代码:

protected void paint(Graphics graphics) { 
    int previousColor = graphics.getColor(); 
    graphics.setColor(0xFFFFFF); 
    graphics.drawText(getText(), 2, -2); 
    graphics.setColor(previousColor); 
    super.paint(graphics); 
} 

我想实现的是:

enter image description here

编辑:answer by Abhisek产生以下结果,如果有人有兴趣:

enter image description here

回答

0

在黑暗中刺戳,但尝试使用Font.derive(style, height, units, aAntialiasMode, aEffects)导出字体,在aEffects参数中通过Font.DROP_SHADOW_RIGHT_EFFECT并将其应用于相关字段。

请告诉我们它是否有效;由于没有记录,我没有用过它!

+0

谢谢你的建议。使用'Font.DROP_SHADOW_RIGHT_EFFECT'实际上会产生一个文本阴影,但是其颜色与文本相同,只在右下方向。 – Pablo

3

如果Abhishek's answer不起作用,您可以尝试直接在paint方法中执行此操作。这很容易,只需将它以bg颜色绘制一次,然后在fg颜色上再次将其绘制(向下几个像素并留下以前的文本)即可。事情是这样的:

protected void paint(Graphics graphics) { 
     graphics.setColor(0xFFFFFF); 
     graphics.drawText(getText(), 2, 0); 
     graphics.setColor(0x000000); 
     graphics.drawText(getText(), 0, 2); 
    } 

注意你需要怎样的高度和宽度的2个额外的像素,因此可能是你必须覆盖getPreferredWidthgetPreferredHeight和/或layout

+0

+1,这将工作得很好。 – Abhishek