3

首先让我说我喜欢这个网站,并且经常在我必须发布之前找到我的问题的答案。现在我有一个问题,我似乎无法找到答案。我还要提一下,我对编程有点陌生,而且只做了几个月。

有了这个,这里就是发生了什么。

我有一个带有 system.drawing 图形的面板,因此我可以渲染图片。

通过我渲染到面板的这些图片,我希望能够移动它们,然后与它们交互并旋转它们。有点像拼图游戏。

我可以获取要渲染的图像,但需要一种方法来判断我的鼠标是否位于上次在该位置渲染的图片上。由于图像可能会渲染到另一个图像的顶部,因此我想获取顶部/最后渲染的图像。

目前我有一个列表中的图像被渲染,我确实有一些我自己的想法。

  1. 在鼠标单击时,我从最后到第一个扫描所有图像列表,并找到当前正在该位置渲染的图像,这将是我的图像。

  2. 重新渲染屏幕最后到第一个,只要像素改变我的鼠标所在的位置就是我的图像。

  3. 为每个像素分配一个图像值,并在渲染图像时为其上的像素分配该图像,鼠标可以拉该图像。

任何帮助或反馈将不胜感激。

谢谢你。

4

1 回答 1

1

您使用的方法可能在很大程度上取决于您的应用程序。在不了解您要做什么的情况下,解决方案 3 似乎是最好的。

使用选项 3 时,大部分工作都是在您添加每个图像时进行的(即,将其值分配给它所覆盖的像素)。当您添加图像时,其他选项的计算成本可能会更低,但每次鼠标点击都会更昂贵。假设这适合您的应用程序(如果它类似于您所说的拼图,它很可能会这样做)我会选择类似的东西。

它还假设您的图像是矩形形状,其中可以根据角添加值,而不是必须手动计算图像中所有点的任意形状。对于任意形状,确定哪种方法更快将更难计算。

总之,您最好决定哪些操作会更频繁地执行(添加图像或鼠标点击),然后在另一个操作上执行。

于 2013-09-02T10:38:21.290 回答