如何在Blackberry LabelField中为文本添加阴影?

时间:2012-12-14 11:34:47

标签: blackberry java-me

我已尝试覆盖paint()扩展LabelField我自己的类中的protected void paint(Graphics graphics) { int previousColor = graphics.getColor(); graphics.setColor(0xFFFFFF); graphics.drawText(getText(), 2, -2); graphics.setColor(previousColor); super.paint(graphics); } 方法,但如果还有其他更简单的方法,我会忽略它。

我的代码:

{{1}}

我想要实现的目标是:

enter image description here

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

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在黑暗中刺伤,但尝试使用Font.derive(style, height, units, aAntialiasMode, aEffects)获取字体,在Font.DROP_SHADOW_RIGHT_EFFECT参数中传递aEffects并将其应用于相关字段。

告诉我们它是否有效;我没有用它,因为它没有文档!