.net 使用alpha通道调整图像大小

.net 使用alpha通道调整图像大小,.net,graphics,image-processing,gdi+,image-scaling,.net,Graphics,Image Processing,Gdi+,Image Scaling,我正在编写一些代码来生成图像-基本上我有一个很大的源图像,包括透明区域 我使用GDI+打开该图像并添加其他对象 我接下来要做的是将这个新图像保存得更小,所以我使用了位图构造函数,它获取一个源图像对象和一个高度和宽度,然后保存它 我原以为alpha通道会像彩色通道一样平滑,但这并没有发生——它确实产生了两个半透明像素,但总体来说它是非常块状的。有什么好处 Using img As New Bitmap("source100x100.png") ''// Drawing stuff Using

我正在编写一些代码来生成图像-基本上我有一个很大的源图像,包括透明区域

我使用GDI+打开该图像并添加其他对象

我接下来要做的是将这个新图像保存得更小,所以我使用了位图构造函数,它获取一个源图像对象和一个高度和宽度,然后保存它

我原以为alpha通道会像彩色通道一样平滑,但这并没有发生——它确实产生了两个半透明像素,但总体来说它是非常块状的。有什么好处

Using img As New Bitmap("source100x100.png")
 ''// Drawing stuff
 Using simg As New Bitmap(img, 20, 20)
  simg.Save("target20x20.png")
 End Using
End Using

编辑:我想我想要的是超级采样,就像Paint.NET在设置为“最佳质量”时所做的那样,在新位图上绘制图像,而不是从图像创建新位图

只需指定大小即可创建空位图,然后使用
Graphics.FromImage
方法为位图创建
Graphics
对象。使用
DrawImage
方法将图像绘制到新位图上


Graphics
对象中有类似
Interpolationmode
PixelOffsetMode
的属性,可以用来控制图像的缩放和绘制方式。

SmoothingMode也有帮助。谢谢。