ImageViewer.getCroppedImage 返回错误的图像

问题描述 投票:0回答:1

我一直在尝试在图像缩放时从 ImageViewer 获取裁剪后的图像,但是当图像位于角落/边框时,返回的裁剪后的图像与显示的图像不同。

请参阅这些图像进行解释:

原图:

示例1:

ImageViewer(红色背景),无需缩放或移动:

返回的裁剪图像:

示例 2(按预期工作):

ImageViewer 已缩放以适合 ImageViewer :

返回的裁剪图像:

示例3:

ImageViewer 缩放以适合 ImageViewer,但图像位于边框上(这里是底部的),即使我不能,我也将图像向上移动,因为它已经位于底部:

返回的裁剪图像:

看起来 getCroppedImage 没有返回显示的图像。

codenameone
1个回答
0
投票

我认为这是平移位置渲染中的一个错误。似乎当我们平移时,它会在组件内部状态中注册但不会呈现。

我创建了一个测试用例并在此处提交了问题。请参阅下面的测试用例:

Form hi = new Form("Crop", new GridLayout(2, 1));
hi.setScrollable(false);
Image greenImage = Image.createImage(400, 400, 0xff00ff00);
Graphics g = greenImage.getGraphics();
g.setColor(0xffffff);
g.drawLine(0, 0, 400, 400);
g.drawLine(400, 0, 0, 400);
final ImageViewer iv = new ImageViewer(greenImage);
Style ivStyle = iv.getAllStyles();
ivStyle.setBgTransparency(255);
ivStyle.setBgColor(0xff);
Label cropPreview = new Label();
hi.addAll(iv, cropPreview);
hi.show();
UITimer.timer(1000, true, () -> {
    cropPreview.setIcon(iv.getCroppedImage(0xff0000));
});
© www.soinside.com 2019 - 2024. All rights reserved.