【问题标题】:Codename One simulator show only middle of picture代号一个模拟器只显示图片中间
【发布时间】:2018-01-09 05:04:04
【问题描述】:

我正在使用下面的代码从 url 获取图像。在模拟器中,只有图片的中间中心以正确的高度显示,但图像被拉伸,看起来它从中心高度占据了原始图片的 1/3。如何在模拟器中获得全貌?

EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(100, 100, 0xf0f00000), false);
URLImage img = URLImage.createToStorage(placeholder, "profilbillede.jpg", URL, URLImage.RESIZE_SCALE);
img.fetch();

                    //border container
Container ct = new Container(new BorderLayout());
ct.add(BorderLayout.NORTH, new Label(""))
      .add(BorderLayout.WEST, new Label(""))
      .add(BorderLayout.EAST, new Label(""))
      .add(BorderLayout.SOUTH, new Label(""));
ScaleImageLabel picture = new ScaleImageLabel(img);
ct.add(BorderLayout.CENTER, picture);
home.add(ct);

【问题讨论】:

  • 除了来自 Diamond 的评论之外,您还可以检查缩放操作是否改变了图像或布局。可以打开.cn1目录下的文件,查看缩放后生成的图片

标签: image codenameone


【解决方案1】:

您的图片将根据您的占位符图片的大小进行下载和创建。在本例中,为 100 x 100 像素。我建议您使用设备来正确缩放图像,方法是将您的占位符声明行更改为:

EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(CN.getDisplayWidth(), CN.getDisplayWidth(), 0xf0f00000), false); //or half of the screen width by dividing CN.getDisplayWidth() to 2

我还建议您在 URLImage 方法中使用 URLImage.RESIZE_SCALE_TO_FILL 代替 URLImage.RESIZE_SCALE

之前缓存的图像将被使用,直到其被清除。要清除它们,请转到您的用户主文件夹并查找 .cn1 文件夹。在 Windows 上,它位于 C:\Users\UserName

【讨论】:

  • 谢谢,尝试了更改但得到了相同的结果。
  • 尝试使用Label而不是ScaleImageLabel
  • 标签给出相同的结果
  • 嗯很奇怪。我在创建 URLImage 时从 profilbillede.jpg 中删除了 .jpg,现在它显示了全图......
  • 哦,我忘了告诉你删除缓存的图像,检查我更新的答案。
【解决方案2】:

在 CreatetoStorage 中不要使用文件扩展名

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多