2013-08-07 76 views
1

也許有人可以幫忙,我試圖在窗體中顯示透明PNG作爲啓動畫面。表單上的代碼是:帶有alpha通道部件的透明PNG顯示帶有難看的邊框

Sub Form_Paint(ByVal s As Object, ByVal e As PaintEventArgs) Handles Me.Paint 
    Dim r As New Rectangle(0, 0, 728, 462) 
    Dim newBitmap As Bitmap 
    newBitmap = Bitmap.FromFile("Logo.png") 
    e.Graphics.DrawImage(newBitmap, r) 
end sub 

生成的圖像顯示帶有一個醜陋的「羽毛狀」邊框。看到這裏:
enter image description here

該圖像是一個32位ARGB已被賦予邊緣透明度。這是嵌入在網頁中的PNG:

enter image description here

有誰知道如何擺脫邊框的?

+1

這不是代碼問題,而是設計問題。錯誤的地方。 – adripanico

+0

不這麼認爲,請檢查上面的編輯 –

回答

0

試試這個:

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; 
e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 

也是這個參見: How to draw smooth images with C#?

不管怎麼說,正如其他用戶所指出的,問題是這是沒有任何抗鋸齒創建的圖像。上面的代碼片段將緩解這個問題,但最好的選擇是調整圖像。

Regards

+0

感謝您的建議,但我不認爲它是圖像,請參閱上面的編輯,以瞭解它嵌入網頁時的外觀。這段代碼也沒有什麼區別。 –

+0

我一直在檢查MSDN,問題在於圖像類(基類的位圖)。我在這裏找到[鏈接](http://msdn.microsoft.com/en-us/library/4sahykhd.aspx)以下內容: Image類不支持位圖中的透明度。要啓用Alpha透明度,請使用每像素32位的PNG圖像。 – dna2

+0

你可以調試bmp.PixelFormat嗎? – dna2

相關問題