zoukankan      html  css  js  c++  java
  • GDI+位图透明

        前段时间做了一个图片透明画的代码,基本思路是使用ColorMatrix设置位图的Alpha通道,使其透明化。这类代码可能高手都懒得写,像我等菜鸟要用时就得费一番周则研究了,所以我把做完的代码发上来,大家有需要用的就拿去用,如果高兴的话还可以评论里说声加油之类的话,呵呵。

        利用ColorMatrix还可以调整整个位图的RGB值,看各位需要发挥了。

        代码如下:

     1///<summary>
     2/// 改变图像透明度(真透明)
     3/// </summary>
     4/// <param name="img">所要转变的图像</param>
     5/// <param name="alpha">透明度,最大为1,最小为0</param>
     6/// <returns>改变后的图像</returns>

     7public static Bitmap VitrificationImage(Image img, float alpha)
     8{
     9    Bitmap _newImg = new Bitmap(img.Width, img.Height);
    10 
    11    using (Graphics _g = Graphics.FromImage(_newImg))
    12    {
    13        using (ImageAttributes _imageAttrs = new ImageAttributes())
    14        {
    15            _imageAttrs.SetColorMatrix(new ColorMatrix(CreateAlphaMatrix(alpha)));
    16 
    17            _g.DrawImage(img, new Rectangle(00, img.Width, img.Height),
    18                        11, img.Width, img.Height, GraphicsUnit.Pixel, _imageAttrs);
    19        }

    20    }

    21 
    22    return _newImg;
    23}

    24 
    25///<summary>
    26/// 创建用于改变图像透明度的颜色矩阵
    27/// </summary>
    28/// <param name="alpha">所要设置的透明度</param>
    29/// <returns>返回用于图像转换的颜色矩阵</returns>

    30private static float[][] CreateAlphaMatrix(float alpha)
    31{
    32    if (alpha > 1)
    33        alpha = 1;
    34 
    35    if (alpha < 0)
    36        alpha = 0;
    37 
    38    float[][] _matrix =
    39    
    40                new float[] {10000},
    41                new float[] {01000},
    42                new float[] {00100},
    43                new float[] {000, alpha, 0},
    44                new float[] {00001}
    45    }
    ;
    46 
    47    return _matrix;
    48}
  • 相关阅读:
    phpstorm实现分屏展示代码
    Yii2 JWT
    JSON Web Token 入门教程
    Linux常用命令: zip、unzip 压缩和解压缩命令
    yii2表单提交CSRF验证
    解决jquery click事件执行两次
    《Inside C#》笔记(十二) 委托与事件
    MVC与单元测试实践之健身网站(七)-日程与打卡
    《Inside C#》笔记(十一) 运算符重载
    MVC与单元测试实践之健身网站(七)-添加计划
  • 原文地址:https://www.cnblogs.com/flying_bat/p/757421.html
Copyright © 2011-2022 走看看