• 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}
  • 相关阅读:
    Libevent库学习笔记
    最大的k个数问题
    MongoDB之整库备份还原单表collection备份还原
    精通MATLAB混合编程
    AutoCAD 2016中文版从入门到精通(第2版)
    MATLAB科学计算范例实战速查宝典
    Android系统应用开发实战详解
    AutoCAD快捷命令速查大全
    TCP IP入门经典(第5版)
    STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用
  • 原文地址:https://www.cnblogs.com/flying_bat/p/757421.html
Copyright © 2020-2023  润新知