带有alpha通道部分的透明PNG显示边框难看

时间:2013-08-07 06:51:41

标签: vb.net image gdi

也许有人在那里可以提供帮助,我试图在表单中显示透明的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 个答案:

答案 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#?

无论如何,正如另一位用户所说,问题在于没有任何抗锯齿的情况下创建的图像。上面的代码片段可以解决问题,但最好的选择是调整图像。

此致