上一篇讲了如何写一个很low的截屏工具,这次进行稍微美化,对未选择区域的图片加上透明度,效果如下图。
主要用到的的代码如下:
/// 设置图片的透明度
/// </summary>
/// <param name="image">原图</param>
/// <param name="alpha">透明度0-255</param>
/// <returns></returns>
private Bitmap SetPictureAlpha(Image image, int alpha)
{
//颜色矩阵
float[][] matrixItems =
{
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,alpha/255f,0},
new float[]{0,0,0,0,1}
};
ColorMatrix colorMatrix = new ColorMatrix(matrixItems);
ImageAttributes imageAtt = new ImageAttributes();
imageAtt.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
Bitmap bmp = new Bitmap(image.Width, image.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height),
0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAtt);
g.Dispose();
return bmp;
}
看不懂的可以参考
http://blog.csdn.net/q317379184/article/details/47978783
定义Image alphaImg;
alphaImg = SetPictureAlpha(alphaImg, 100);//透明度Img
在pictureBox1_Paint中加入 //在有透明度的区域绘制无透明度区域
g.DrawImage(Img, rect, rect, GraphicsUnit.Pixel);