(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

一般我们可见的图形RGB三元色。对Alpha通道的话。它不一定会显示到窗口中来。

在Windows窗口中要展示一张透明图相对还是比較困难的,

1.      比如像windows查看器那样,使透明像素显示查看器底色(近似白色),但对于半透明的图片显示起来效果不是特别好。

2.      比如像photoshop那样,使用一张斑点的底图,对于全透明示。显示底图。半透明时和底图颜色混合。

这两种方法的话,photoshop的方法相对来说,视觉效果相对照较好一点。

要实现类似photoshop这种效果。首先我们须要一张底图:

1.      底图能够是一张小图。但必须是无缝的:能够扩展成一个无限大的图。像瓷砖一样,能够铺无限大。看起来是一体的。

2.      底图提供位置颜色查询,输入x/y查询像素点颜色

有了底图之后,我们就能够读取这张透明图:

1.读取原图片颜色信息

2.逐个像素读取(blue, green, red, alpha),当alpha不为255(255-不透明)时

a)        读取底图相应x,y位置的颜色colorBk

b)        使用颜色混合:

blue = (blue *alpha + colorBk.blue * (255 – alpha))/255;

green = (green *alpha + colorBk.green * (255 – alpha))/255;

red = (red *alpha + colorBk.red * (255 – alpha))/255;

c)        alpha设置为255,不同意颜色被window缺省颜色混合

alpha = 255;

1. 把处理后的像素显示到窗口中

这样就能够展示一张和Photoshop类似效果的透明图形了。

注意: 使用CImage读取24/32位图形时,读取的字节序是BGR/BGRA。參考MSDN结构体定tagRGBTRIPLE/
tagRGBQUAD义

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

[MFC]透明图展示的更多相关文章

  1. scxml 图像展示器 (基于C++ MFC GDI tinyxpath的实现)

    以前的时候学习新东西没有总结的习惯,周末把以前研究的东西翻了翻,稍微总结下. Scxml是w3c出来的基于状态机的对话脚本语言标准,具体内容可以谷歌到,这里讲述自己开发的一个把scxml转化为可交互图 ...

  2. VS下如何建立一个新的MFC程序 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8191036.html 这里不知道会不会有人是真的新手 新新手 不知道怎么 如何建立一个MFC ...

  3. MFC的PictureControl控件上展示Halcon的窗体

    自定义函数:id是MFC窗体上的PictureControl控件的ID,此函数返回halcon的HWindow对象. HTuple initPicControl(int id); HTuple CHa ...

  4. [MFC] 高仿Flappy bird 桌面版

    这是今年年初做的东西,一直没有时间整理,现在拿出来分享下~ 目录 开发背景 开发语言及运行环境 效果展示 游戏框架说明 游戏状态及逻辑说明 经典算法说明 重量级问题解决 开发感想 一.开发背景: fl ...

  5. C++新手之详细介绍MFC

     MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对 ...

  6. C++ MFC实现基于RFID读写器的上位机软件

    C++ MFC实现基于RFID读写器的上位机软件 该博客涉及的完整工程托管在https://github.com/Wsine/UpperMonitor,觉得好请给个Star (/▽\=) 运行和测试环 ...

  7. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现

    本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...

  8. MFC中添加OpenGL

    WINDOWS下展示OpenGL有多种形式: MFC 或 win32,该如何向MFC中添加OpenGL?下面是介绍最简单OpenGL框架. 1.首先通过VS建立MFC应用程序-MyOpenGL,选择单 ...

  9. 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。

    最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...

随机推荐

  1. Python金融量化

    Python股票数据分析 最近在学习基于python的股票数据分析,其中主要用到了tushare和seaborn.tushare是一款财经类数据接口包,国内的股票数据还是比较全的 官网地址:http: ...

  2. guice基本使用,三种注入方式(二)

    guice提供了强大的注入方式. 1.属性注入 2.构造器注入 3.set方式注入 1.属性注入: package com.ming.user.test; import com.google.inje ...

  3. JavaScript函数传参

    函数传参一: <html> <head> <meta charset="utf-8"> <title>无标题文档</title ...

  4. [ Tools ] [ MobaXterm ] [ SSH ] [ Linux ] 中文顯示解決

    預設是無法顯示中文的,需要修改連線的 Terminal Setting

  5. java 抽象工厂模式简单实例

    抽象工厂模式:提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的时间分别在子类工厂中产生. 类似于工厂模式:隔离了具体类的生产实现,使得替换具体的工厂实现类很容易.包含有 ...

  6. 杭电1003 Max Sum 【连续子序列求最大和】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...

  7. 读书笔记「Python编程:从入门到实践」_2.变量和简单数据类型

    做了大半年RPA了,用的工具是Kapow. 工作没有那么忙,不想就这么荒废着,想学点什么.就Python吧. 为期三个月,希望能坚持下来. 2.1 变量的命名和使用 变量名只能包含字母.数字和下划线. ...

  8. Memory management in RxSwift – DisposeBag

    I’ve noticed a lot of beginners in RxSwift ask about DisposeBag. DisposeBag isn’t a standard thing i ...

  9. 图片放大不失真软件PhotoZoom如何使用?

    PhotoZoom可以将我们一些过于像素低的照片可以无失真放大,那么PhotoZoom是如何实现无失真照片放大的呢? 以上图像中的编号表示每个步骤应操作的位置. 单击“打开”,并选择您想调整大小的图像 ...

  10. 微信小程序打开PDF

    具体情况是:微信小程序打开springboot返回的pdf文件.微信端先downloadFile,然后openDocument.但是打开文档一直不成功.后来发现官网的例子没有加fileType,我在参 ...