2013-10-07 53 views
0

我想在PictureBoxes上繪製標籤,但應該是透明背景。 這是我的代碼:`PictureBox(面板上)的C#標籤(透明backGround)

      Labels[i].Location = new Point(0, 0); 
          Labels[i].Size = new Size(13, 13); 
          Labels[i].BackColor = Color.Transparent; 
          Labels[i].ForeColor = Color.Blue; 


    Invoke(new MethodInvoker(delegate { Panels.Controls.Add(Pictures[i]); })); 
            Invoke(new MethodInvoker(delegate { Panels.Controls.Add(Labels[i]); })); 

我'拉我的圖片精美,標籤太多...但我得到的圖片下的標籤(我可以看到每一個標籤,當我拖動圖片,坐在位) 所以我想知道,我可以如何將它們放在Front with Transparent BackGround中。謝謝 `

+0

Controls.Add()調用錯誤。您必須將其添加到PictureBox,而不是面板。 –

回答

0

,我認爲你應該使用類似的z-index

+0

有些編碼幫助嗎? –

0

嘗試在你的委託調用Panels.Controls[Labels[i].Name].BringToFront();。這應該使圖片前的每個標籤都顯示出來,因爲它們已經被添加到面板上了。

+0

它確實帶來了......但不會像應該那樣獲得Transparent BackGround。 –

+0

我假設你使用winforms是嗎?在這種情況下,更改BackColor將不起作用。有解決方法,但默認情況下不可能在winforms中使用,也許你最好使用WPF。看看老的,但相關的線程與解決方法透明度在這裏:http://stackoverflow.com/questions/4639482/how-to-do-a-background-for-a-label-will-be-without-color –

+0

那麼我需要在WinForms –

0

我想你已經爲此搜索了一下,但這裏是good link about winforms transparency

我曾經寫過很多使用非常醜陋的皮膚和透明標籤的winforms應用程序。正如我記得當使用jpg作爲背景圖片時出現了一些故障,並且如果在之後加載了圖片,則標籤已被繪製。

無論如何,我建議覆蓋onPaint和onDraw方法,你可以在鏈接中看到。

+0

是的,我做了。我能夠自己解決這個問題,但無論如何,謝謝你們。 –

0

透明度僅適用於容器。爲此,您必須將標籤添加到PictureBox。將​​更改爲您在Controls.Add()行中使用的PictureBox的名稱。