C#图片半透明效果

这篇博客介绍了如何在C#中实现图片颜色半透明的效果。通过自定义控件,绘制带有特定透明度的矩形来达到半透明遮罩的目的。文章提供了构建函数和典型代码示例,并强调在更新透明度和颜色参数后需要刷新控件以显示效果。参考了《C#实现Winform自定义半透明遮罩层介绍》一文,并提供了源码下载链接。
摘要由CSDN通过智能技术生成

目前有个任务,需要实现图片颜色半透明,效果如下图:


测试了一下,使用方法为在上面自定义一个控件,在控件上用指定颜色绘制一个矩形,并指定其为半透明(alpha方式)。

定义控件

定义控件如下内容:

public MyOpaqueLayer()//构建函数  含有参数的初始化,主要是alpha值、遮罩颜色等。

典型的构建函数为:

 	 public MyOpaqueLayer(int Alpha, bool IsShowLoadingImage)
        {
            SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);
            base.CreateControl();
            this._alpha = Alpha;
            _new_brush_color = new Color();
            _new_brush_color = Color.Transparent;
        } 	

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)       /// 自定义绘制窗体  绘制矩形并叠加
典型的绘制函数为

   /// <summary>
        /// 自定义绘制窗体
        /// </summ
要在C#中使用Bitmap绘制半透明的PNG图片,可以使用Graphics类的DrawImage方法,并设置透明度。下面是一个示例: ```csharp using System; using System.Drawing; class Program { static void Main() { // 创建一个Bitmap对象 Bitmap bitmap = new Bitmap("path_to_png_file.png"); // 创建一个具有透明背景的Bitmap对象 Bitmap targetBitmap = new Bitmap(bitmap.Width, bitmap.Height); // 设置Graphics对象的CompositingMode为SourceOver以支持透明度 using (Graphics graphics = Graphics.FromImage(targetBitmap)) { graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; // 设置透明度(0为完全透明,255为不透明) float opacity = 0.5f; // 创建颜色矩阵并设置透明度 ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.Matrix33 = opacity; // 创建颜色矩阵属性 ImageAttributes imageAttributes = new ImageAttributes(); imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); // 绘制具有透明度的PNG图片到目标Bitmap上 graphics.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imageAttributes); } // 保存目标Bitmap为图片文件 targetBitmap.Save("path_to_output_file.png"); Console.WriteLine("半透明PNG图片绘制完成。"); } } ``` 在这个示例中,你需要将 `"path_to_png_file.png"` 替换为你实际的PNG图片路径。首先,创建一个源Bitmap对象并加载PNG图片。然后,创建一个目标Bitmap对象,它具有与源Bitmap相同的尺寸。 通过设置Graphics对象的CompositingMode属性为SourceOver,我们启用了透明度支持。然后,我们通过创建一个ColorMatrix对象,并将其第三行的值设置为所需的透明度来设置透明度。接下来,我们创建了一个ImageAttributes对象,并使用SetColorMatrix方法将ColorMatrix应用于图像。 最后,使用Graphics对象的DrawImage方法将具有透明度的PNG图片绘制到目标Bitmap上,并保存目标Bitmap为图片文件。 请确保提供的PNG图片具有透明度(即图片中的某些区域是透明的),以便在绘制时产生半透明效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值