(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. poj--1274--The Perfect Stall(最大匹配)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21665   Accepted: 973 ...

  2. Sublime Text 2 界面主题 推荐 Flatland

    先搜索下THEME-FLATLAND 安装完后在preferences中选择settings-usr { "color_scheme": "Packages/Theme ...

  3. shp系列(三)——利用C++进行DBF文件的读(打开)

    1.DBF文件要点 DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息.DBF文件遵循以下几个条件: 每个要素在表中必须要包含一个与之相对 ...

  4. Python+unittest 接口自动化测试

    1.封装get.post#!/usr/bin/env python3# -*- coding: utf-8 -*- __author__ = 'hualai yu' import requests c ...

  5. Python基本数据类型之字典dict

    字典dict 是一个键(key)值(value)对,结构为{},大括号 创建字典 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 info = { # k ...

  6. git window端工具之sourcetree使用

    https://www.jianshu.com/p/3478e2a214a1

  7. lua迭代

    迭代 function enum(array) local index = 1 return function() --返回迭代函数 local ret = array[index] index = ...

  8. mysql连接出现error node【1045】

    第一步:在my.ini下找到mysqlid.在后边添加skip-grant-tables 第二步:重新启动mysql服务 第三步:重新设置密码 第四步: 将skip-grant-tables删除掉,保 ...

  9. SQL SERVER数据库状态

    一个SQL SERVER数据库会处于很多种状态,例如 ONLINE .RESTORING .RECOVERING .RECOVERY_PENDING  .SUSPECT.EMERGENCY .OFFL ...

  10. VS2015 & ReSharper CTRL

    如下为个人比较常用的快捷键,部分快捷键有进行修改. 一.VS偏好设置: 1.转到定义:F12 2.查找所有引用:Shift + F12 3.跳转到指定的某一行:Ctrl + G (or 单击状态栏中的 ...