2014-01-13 19 views
2

我使用C#有沒有辦法有一個隱藏的圖像在PictureBox仍然可以點擊

程序在Visual Studio 2013編寫Windows窗體程序是一種記憶遊戲,而該人可以看到哪些圖片是在其中正方形,但只要他們點擊第一張圖片,所有的圖片都是隱藏的,所以他們必須嘗試並記住每個圖像的位置。

我有一個tablelayoutpanel,裏面有一個pictureBox的網格。

一些正方形裏面有而其他人只是黑色方塊隨機圖像

我想要隱藏所有非黑色圖像(或出現隱藏)當點擊一個圖像。 我仍然希望在'隱藏'的圖像上發生點擊事件。

我試過pictureBox.visible = false;但很明顯,如果圖片不可見,則不再接受點擊事件。

我試圖將pictureBox.ForeColor設置爲Color.Gray,但這不是工作或前面的顏色是在圖像後面。我試過control.BringToFront(),但我想我使用了錯誤的控件,因爲我的顏色沒有在圖像前移動。

有沒有辦法讓圖像看起來隱藏起來,並且仍然對鼠標點擊作出響應,還是有辦法讓圖像在圖像上出現,以便圖像仍然存在,但在某些顏色的後面。

無論哪種方式都可以。

+0

將一張空白的彩色圖像存儲在PictureBox中,並將「顯示」圖像存儲在一個變量中。當您想要顯示圖像時,只需將空白圖像替換爲真實圖像即可。 – LarsTech

+0

「使用C#的Visual Basic 2013」​​咦? –

+0

對不起,我的意思是Visual Studio - 已編輯過文章 – smokeAndMirrors

回答

4

您無法隱藏/隱藏和點擊某些東西。

這樣做的一種方法是用空白圖像替換真實圖像。這可能與背景顏色相同,使其看起來像真實圖像已經消失。

設置圖片框的ForeColor對圖像沒有任何影響。

另一種方法可能是將圖像的不透明度設置爲非常小的正值,以使圖像不完全透明。這應該仍然是可點擊的,但如果用戶擺弄顯示器的亮度/對比度,它仍然可以看到。

+0

如何設置不透明度?我已經嘗試將圖像縮小到1像素,但是我沒有成功。 – smokeAndMirrors

+0

@pythonReuser - 你需要創建一個新的位圖,將alpha值設置爲適當的值。儘管如此,這可能會讓你的應用程序過度。使用不同的圖像會更簡單。 – ChrisF

+0

我使用了你的想法的改編。我做了與我已有的圖像數量相同數量的「空白」圖像。在我的情況下,我只有5個,所以這不是一個大問題。然後我用一個列表來說明初始圖像是否是圖像[1],然後用blankImage [1]替換它。這不是高效或優雅,但因爲我只有5張圖片,所以它是我的程序最簡單的選擇。加上它運作得非常好。 – smokeAndMirrors

0

@ ChrisF的回答是正確的。

我想說的是,hidden被稱爲是因爲它隱藏在視圖中,因此用戶不會與其交互。從窗口隱藏元素的主要目的是防止用戶知道該元素存在。

所以最好的解決方案是添加一個透明的圖像,或一個空白的,使其可點擊。

相關問題