创建动态图像

发布于 2024-10-12 09:46:23 字数 69 浏览 2 评论 0原文

我想动态创建一个由其他图像组合而成的图像。

其他图像是从预加载的位图图像数组中随机选择的。 怎样才能做到呢?

I'd like to create an image dynamically which is combined from some other images.

The other images are being selected randomly from a pre loaded Bitmap images array.
How it can be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疑心病 2024-10-19 09:46:23

使用一组 Drawable 来包装每个图像。在每个可绘制实例中,通过重写 onDraw 方法来指定如何将图像渲染到画布上。

您可以使用 LayerDrawable 类来管理所有可绘制对象(它还为您提供了一些不错的方便方法)。

我不知道最终图像会是什么样子,但听起来一个图像的位置/大小可能会影响另一个图像的位置/大小。这意味着在给出每个图像的物理尺寸之前,您必须知道所有图像的尺寸。

这就是我要做的:

1)创建扩展 View 的主类,它保存可绘制数组(实际上是您的图像)并考虑所有图像计算正确的坐标。

2) 给它一个接受您的可绘制对象的构造函数

3) 创建为您的位图扩展可绘制对象的类。给它 2 个字段,一个包含逻辑尺寸/坐标,另一个包含物理尺寸/坐标。逻辑值应该在构造时填写,因为它们只是读取位图的自然比例。物理部分将在稍后填写。这些类的 onDraw 方法应使用物理坐标中的值。

4) 为主 View 类提供一个丑陋的数学方法,该方法考虑所有图像的逻辑大小。数学方法将使用这些以及屏幕的尺寸来计算出每个图像的物理尺寸应该是多少。

5) 用数学方法的结果填充每个 Drawable 的物理属性。

6) 使主 View 类的 onDraw 发生,方法是从外部将其添加到布局中,或者如果它已经在布局上,则调用 invalidate() 。

希望这有帮助

Use an array of Drawables to wrap each of your images. In each drawable instance, specify how that image should be rendered to the canvas by overriding the onDraw method.

You can use the LayerDrawable class to manage all the drawables (it also gives you some nice handy methods).

I don't know what the final image will be like, but it sounds like the positioning/size of one image might impact that of the other. This means you must know how all of the images are before giving each of them their physical sizes.

Here's what I would do:

1) Create the master class that extends View, it holds the array of drawables (which are really your images) and calculates the right coordinates considering all images.

2) Give it a constructor that accepts your drawables

3) Create class(es) that extends Drawable for you bitmaps. Give it 2 fields, one with logical sizes/coordinates, the other with physical sizes/coordinates. The logical ones should be filled out at construction since they simply read off the bitmap's natural proportions. The physical ones will be filled out later. These classes' onDraw methods should use values from the physical coordinates.

4) Give the master View class a big ugly math method that considers all of the images' logical sizes. The math method will use those as well as the screen's dimensions to figure out the what each images' physical dimensions should be.

5) Populate each Drawable's physical attributes with the math method's resutls.

6) Make the master View class' onDraw occur, either by adding it to a layout from the outside or by invoking invalidate() if it already is on the layout.

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文