gpt4 book ai didi

Android Canvas 绘制的内容不超过屏幕尺寸

转载 作者:行者123 更新时间:2023-11-29 01:23:36 27 4
gpt4 key购买 nike

我的应用程序有一个功能,让用户可以拍摄照片并在照片上添加绘图。

所有照片的大小都重新调整为正好 900 x 900。允许用户向图像添加绘图。我在原始图像上保留了一个透明图像,并在透明图像上进行绘图。绘图是使用 canvas 完成的。

但是当在具有 720 x 480(高 x 宽)的设备中绘图时。如果我创建一个 900 x 900 透明图像并从 0,0900,900 画一条线,canvas 只从 0 画线,0480,480

下面是代码的相应部分:

准备 Canvas :

holder = getHolder();
if (holder.getSurface().isValid()) {

Canvas canvas = holder.lockCanvas();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
/* original image is 900 x 900 */
overlayBitmap = Bitmap.createBitmap(originalImage.getWidth(), originalImage.getHeight(), originalImage.getConfig());
canvas.setBitmap(overlayBitmap);
}

画线:

canvas.drawLine(0, 0, 900, 900, paint);

我不知道为什么我会遇到这个问题。是因为用了canvas??有什么解决办法吗?非常感谢任何帮助:-)

最佳答案

在阅读了更多关于 canvas 的内容后,也得到了 this 的帮助帖子我能够解决这个问题。

问题出在 canvas clip rectangle 中。它是 (0,0,480,480) 默认情况下,因为设备显示是 720 x 480 我猜?因此位图上的任何内容总是被裁剪为 480 x 480

后来我修改了我的代码:

holder = getHolder();
if (holder.getSurface().isValid()) {

Canvas canvas = holder.lockCanvas();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
/* original image is 900 x 900 */
overlayBitmap = Bitmap.createBitmap(originalImage.getWidth(), originalImage.getHeight(), originalImage.getConfig());
canvas.setBitmap(overlayBitmap);

/* set extended clip rectangle for the larger target bitmap */
Rect clipRect = canvas.getClipBounds();
clipRect.set(0, 0, image.getWidth(), image.getHeight());
canvas.clipRect(clipRect, Region.Op.REPLACE);

}

图像大小替换剪辑矩形大小后,一切正常。

关于Android Canvas 绘制的内容不超过屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com