2013-08-07 108 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

相关问题