【问题标题】:Is there a way to have a hidden image in a picturebox and still be clickable有没有办法在图片框中隐藏图像并且仍然可以点击
【发布时间】:2014-01-14 07:21:42
【问题描述】:

我正在使用 C# 在 Visual Studio 2013 中编写一个 Windows 窗体程序

该程序是一个记忆游戏,人们可以在其中看到哪些图片在哪个方块中,但是一旦他们单击第一张图片,所有图片都被隐藏了,因此他们必须尝试记住每张图片所在的位置.

我有一个表格布局面板,里面有一个图片框的网格。

有些方块里面有一个随机的图像,而另一些只是黑色方块

我想在单击一个图像时隐藏(或显示隐藏)所有非黑色图像。 我仍然希望在“隐藏”图像上有点击事件。

我试过 pictureBox.visible = false;但显然,如果图片不可见,则它不再接受点击事件。

我尝试将 pictureBox.ForeColor 设置为 Color.Gray,但这要么不起作用,要么前颜色在图像后面。我尝试了 control.BringToFront() 但我猜我使用了错误的控件,因为我的颜色没有在图像前面移动。

有没有办法让图像隐藏起来并且仍然响应鼠标点击,或者有没有办法让颜色出现在图像上,以便图像仍然存在但在某些颜色后面。

无论哪种方式都可以。

【问题讨论】:

  • 在 PictureBox 中存储一个空白的彩色图像,并将“显示”的图像存储在一个变量中。当您想显示图像时,只需将空白图像替换为真实图像即可。
  • “Visual Basic 2013 使用 C#”啊?
  • 对不起,我的意思是 Visual Studio - 已编辑帖子

标签: c# picturebox visible


【解决方案1】:

你不可能有隐藏/不可见和可点击的东西。

一种方法是用空白图像替换真实图像。这可能与背景颜色相同,以使其看起来像真实图像已经消失。

设置图片框的ForeColor对图片没有影响。

另一种方法可能是将图像的不透明度设置为非常小的正值,这样图像就不会完全透明。这应该仍然是可点击的,但如果用户调整显示器的亮度/对比度,它可能仍然可见。

【讨论】:

  • 如何设置不透明度?我尝试将图像缩小到 1 x 1 像素,但没有成功。
  • @pythonReuser - 您需要创建一个新的位图,并将 alpha 值设置为适当的值。不过,这对您的应用程序来说可能有点过头了。使用不同的图像会简单得多。
  • 我使用了您的想法的改编版。我制作的“空白”图像数量与我已经拥有的图像数量相同。就我而言,我只有 5 个,所以这不是一个大问题。然后我使用一个列表来说明初始图像是否为图像 [1],然后将其替换为空白图像 [1]。它既不高效也不优雅,但由于我只有 5 张图像,因此它是我的程序最简单的选择。而且效果很好。
【解决方案2】:

@ChrisF 的回答是正确的。

我想说的是hidden之所以这么称呼,是因为它隐藏在视图之外,因此用户不会与之交互。从窗口中隐藏元素的主要目的是防止用户知道该元素存在。

因此,最好的解决方案是添加透明图像或空白图像并使其可点击。

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2019-06-26
    • 2013-09-20
    • 2020-04-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多