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

Я создаю настраиваемое поле для кнопки с изображением. Изображение отображается в виде рамки с равными значениями w и h, но высота изображения почти вдвое больше ширины. Я запустил отладчик, и правильное значение w, h заносится в g.drawBitmap(0, 0, w, h, image, 0, 0). Это способ исправить это?

public class cPictureButton extends Field{

   private 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) {
       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 Ответ

2 голосов
/ 21 мая 2011

Копирование и вставка, вероятно, сделали в. Второй аргумент для setExtent должен вызвать getPreferredHeight ():

  setExtent(Math.min(width, getPreferredWidth()), 
        Math.min(height, getPreferredWidth()))
...