2010-09-07 114 views
6

我需要在.NETCF中創建一個具有透明背景的圖像,我使用洋紅色作爲我希望透明的背景。我試圖做到這一點的方式是重寫onPaint()。但我不能讓背景透明?下面是我有:在緊湊框架中的透明度

protected override void OnPaint(PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 

    ImageAttributes imageAttributs = new ImageAttributes(); 
    imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255), 
     Color.FromArgb(255, 0, 255)); 
    g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height, 
     GraphicsUnit.Pixel, imageAttributs); 

    base.OnPaint(e); 
} 

但是當我嘗試,包括我的形象完全不繪製ImageAttributes?

回答

9

啊,透明度在CF.人們可以(而且確實)浪費在這個時間和小時內。首先,您可能會向我們提供一些關於您使用的圖像(位圖,png等)的更多信息,但我們可能會從您的帖子中推斷出一些信息。我們還需要知道這是否在兒童容器中(如框架,面板等內部)。

Colorkey透明度肯定是支持的(從2.0開始 - 也許甚至更早)。這裏的問題是,如果你在一個孩子,你會得到父母「流血」。這似乎是你正在嘗試的,但對我來說並不是很明顯,所以我有幾個後續問題需要澄清。

  • OnPaint表單覆蓋或自定義控件?
  • 爲什麼在工作之後調用基本的OnPaint()(與之前相反或根本不調用)?
  • 你重寫OnPaintBackground嗎?

我現在的猜測是ypou在調用所有東西的時候會有一些錯誤,但是我們沒有足夠的代碼來發現它。

這裏是繪畫和透明度幾個資源:

有用於alpha通道的東西更多的資源(這在CF中並不簡單),但是s因爲它看起來像你試圖colorkey,這應該是足夠的。

+0

在簡單情況下,爲什麼不使用this.pnlMyPanel.BackColor = this.BackColor? – hellboy 2013-10-14 07:37:13

3

緊湊型框架不支持透明度 - 您可以通過COM interop來實現對它的支持。克里斯洛頓有一個very good blog post在alpablending緊湊的框架。

1

它看起來像OpenNETCF已經圍繞這個託管包裝。我相信Chris Tacke可以對此進行更多評論。他似乎在這個網站非常活躍,但看起來像打他到這一個:)