【问题标题】:How to find if mouse click is on an image rendered in a wf panel?如何查找鼠标单击是否在 wf 面板中呈现的图像上?
【发布时间】:2013-08-09 14:32:20
【问题描述】:

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

除此之外,这是怎么回事。

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

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

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

目前我的列表中有要渲染的图像,我也有一些自己的想法。

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

  2. 从上到下重新渲染屏幕,只要像素发生变化,鼠标所在的位置就是我的图像。

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

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

谢谢。

【问题讨论】:

  • 你的意思是图片框?

标签: c# image rotation panel system.drawing


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2013-07-14
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多