【问题标题】:Place an Image scaled at the width available space放置按可用空间宽度缩放的图像
【发布时间】:2019-04-13 04:19:24
【问题描述】:

我创建了一个有效的代码,但我不确定这是放置自动缩放到可用宽度空间的Image 的最佳方式。我需要在该图像上放置一些内容,所以我有一个LayeredLayout:在第一层有使用以下代码创建的Label,在第二层有一个具有相同大小的BorderLayout图片。

下面的代码好还是可以做得更好?

Label background = new Label(" ", "NoMarginNoPadding") {
            boolean onlyOneTime = false;

            @Override
            public void paint(Graphics g) {
                int labelWidth = this.getWidth();
                int labelHeight = labelWidth * bgImage.getHeight() / bgImage.getWidth();
                this.setPreferredH(labelHeight);
                if (!onlyOneTime) {
                    onlyOneTime = true;
                    this.getParent().revalidate();
                }
                super.paint(g);
            }
        };
        background.getAllStyles().setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FIT);
        background.getAllStyles().setBgImage(bgImage);

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    短代码:

    ScaleImageLabel sl = new ScaleImageLabel(bgImage);
    sl.setUIID("Container");
    

    您不应覆盖paint 来设置首选大小。你应该已经覆盖了calcPreferredSize()。对于ScaleImageLabel,它已经设置为图像的自然尺寸,应该相当大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-18
      • 2011-04-09
      • 2017-10-15
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2013-07-03
      相关资源
      最近更新 更多