文档章节

GDI+位图透明

rise-worlds
 rise-worlds
发布于 2016/06/20 13:38
字数 383
阅读 0
收藏 0

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

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

    代码如下:

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

 7 public   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>

30 private   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}

本文转载自:http://www.cnblogs.com/flying_bat/archive/2007/05/23/757421.html

rise-worlds

rise-worlds

粉丝 2
博文 1755
码字总数 0
作品 0
深圳
程序员
私信 提问
使用 Direct2D 绘制分层窗口

这是我关于Direct2D的第三篇介绍了,今天主要讲下其无可比拟的互操作性。为了避免繁缛末节的讲述,我们从一个实例入手:层级窗口。相对于windows的其它众多功能。层级窗口并未做相应的更新,...

Dy_
2014/01/16
8.5K
10
【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7422922 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 我们知道,Visual C+...

长平狐
2012/11/12
248
0
DirectDraw 编程指南

译者注:由于最近在学习DirectDraw的东西, 学了快两个星期了吧, 还是收获不少。今天周未闲来无事,实在无聊,总不能老想女朋友吧,呵呵,还是翻译点文章来打发时间。下面所有的DD表示Direc...

长平狐
2012/08/13
1K
0
VC实现多格式图像的转换

色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。在程序设计中,图像处理已经成为每个程序员的必修课。 在V...

余二五
2017/11/06
0
0
如何对mfc窗体背景图片的设置

打开vc+的mfc工程,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { C...

crossmix
2015/10/07
2K
0

没有更多内容

加载失败,请刷新页面

加载更多

Rust 的 GUI 框架生态概览

本文比较全面比较了目前主流的 Rust 的 GUI 框架的表现。其中 ++ 表示非常好,-- 表示非常差,而 o 表示处于平均水平。 参与对比的框架共有 8 个,详细的比较结果如下: Electron + Neon El...

红薯
26分钟前
3
0
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
3
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
3
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部