Blackberry, создал пользовательскую кнопку и хотел бы, чтобы изображение изменило изображение после его рисования - PullRequest
0 голосов
/ 23 мая 2011

Я создал пользовательское поле кнопки для своего проекта BlackBerry.Я хотел бы изменить изображение, отображаемое на кнопке после того, как оно нарисовано, но не могу понять, как.У меня есть код, который изменяет переменную-член, которая хранит растровое изображение, но не знаю, как сказать ежевике, чтобы обновить его.

// CODE TO CHANGE BUTTONS Image
Bitmap image2 = Bitmap.getBitmapResource("aftera.png");
MyBut.image=image2;
// don’t know how to redraw buttn?????

// BUTTON CODE
public class cPictureButton extends Field{

   public Bitmap image;

   public cPictureButton( Bitmap image, long style)
   {
       super(style);

       this.image=image;
   }

   public int getPreferredHeight()
   {
     return   image.getHeight();
    //   return getFont().getHeight();
   }

   public int getPreferredWidth()
   {
      return   image.getWidth();
       //   return getFont().getAdvance(label)+8;   
   }

   protected void drawFocus(Graphics g, boolean on)
   {
   }


   protected void paint(Graphics g)
   {
       int w=image.getWidth();
       int h=image.getHeight();
       g.drawBitmap(0, 0, w, h, image, 0, 0);
       if (isFocus() )
           g.drawRect(0,0,image.getWidth(), image.getHeight());
   }

protected void layout(int width, int height) {
    // TODO Auto-generated method stub
    setExtent(Math.min(width, getPreferredWidth()), 
            Math.min(height, getPreferredWidth()));
}


public boolean isFocusable() {
    return true;
}
protected boolean navigationClick(int status, int time)
{
    fieldChangeNotify(0);
    return true;
}

}

1 Ответ

1 голос
/ 23 мая 2011

При вызове invalidate () в вашем поле кнопки следует позаботиться об этом.

Кроме того, у вас все еще есть ошибка в методе layout (), на которую я указал в вашем предыдущем вопросе: Почему мое прямоугольное растровое изображение обрезается до квадрата при его рисовании?

...