Dav*_*ten 4 .net transparency gdi+ image
我使用Drawing.Graphics对象和DrawImage()函数在Control上绘制了大量图像(所有尺寸= 24x24 pixelformat = 32BppPArgb).可以缩小我的应用程序,这意味着Graphics对象附加了一个Transform Matrix,它控制缩放和平移.
当缩放率低于50%时,绘制这些图标毫无意义,但我想从绘图图标过渡到不绘制图标更平滑.即,从70%开始,应该使用额外的透明度因子绘制图标,以便它们在50%时变得完全透明.
如何绘制具有额外透明度的位图,而不会花费比DrawImage()更长的时间?
谢谢,大卫
您只需创建一个合适的ColorMatrix,用它初始化一个ImageAttributes对象,并将该ImageAttributes对象传递给一个重载版本的Graphics.DrawImage.此示例将为您提供50%的透明度:
float[][] matrixAlpha =
{
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 0.5f, 0},
new float[] {0, 0, 0, 0, 1}
};
ColorMatrix colorMatrix = new ColorMatrix( matrixAlpha );
ImageAttributes iaAlphaBlend = new ImageAttributes();
iaAlphaBlend.SetColorMatrix(
colorMatrix,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |