GDI+ 制作透明图片
1:制作透明图片文件;
GDI+ 支持32位位图文件,所以自然就支持图片透明了;
首先:建立一个32位位图文件在内存中,将文件刷新为透明格式;
其次:在这个内存32位位图文件上作图;
最后:保存这个32位位图文件为指定格式的图片:
例子如下:在透明位图文件上作图,然后保存问题png格式文件:
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib, "Gdiplus")
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
}
free(pImageCodecInfo);
return -1; // Failure
}
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
//1:建立透明内存32位位图文件;
Bitmap bmp( 1000,1000, PixelFormat32bppARGB );
//2:刷新32位位图文件为透明;
Graphics g( &bmp );
Color myColor(0, 0,0,0 );
g.Clear( myColor );
//3:作图:
g.DrawLine( &Pen(Color::Black), 0,0,100,100);
//4: 显示:
Graphics gwnd(this->m_hWnd);
gwnd.DrawImage( &bmp, 0,0);
//5:保存为png图片:
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
bmp.Save(L"F:\\Mosaic2.png", &pngClsid, NULL);
}
2:将指定位图颜色透明:
1:建立一个32位位图文件在内存中,将指定位图刷新到32为位图文件上;
2:获取像素点值GetPixel,如果是指定的颜色,设置为透明像素点colorPixel.SetValue( Color::MakeARGB(0,0,0,0) ); SetPixel;
3:保存图片;
注:windows图片查看器,无法产看32位位图透明图片,它会将透明度值取消显示;
但GDI+可以显示32位位图文件;而且其他图片编辑软件可以查看;
GDI+ 制作透明图片相关推荐
- 001-ps怎么制作透明图片
ps怎么制作透明图片 应用场景:最近签署文件需要手写签名,正好笔记本上装的有PS-想到了用PS的画笔
- 制作透明图片,并为视频批量添加上PNG格式图片
如何制作一张PNG格式的透明图片水印,并给多个视频添加上呢?其实操作的方法很简单,下面随小编一起来操作. 材料准备: 一台电脑 安装一个视频剪辑高手 下载一个Photoshop 多张图片以及视频素材 ...
- 如何使用GDI+制作圆形图片(类似QQ头像)
一直在CSDN学习,下载了很多资源,没有上传过什么资料,今天也为大家做个小小贡献 很多软件和APP都用了圆形图像,也想当的好看,最近公司项目要用到这个小东西,花了半天时间搞了出来. (c#只用了几分钟 ...
- PS制作透明的BMP图片
PNG制作透明图片是 很容易的,而且不失真. 但是BMP所谓的透明,我不认为是真正意义上的透明 因为: 1,我见的BMP图片背景是粉红色的,但是加载在某些控件上后,类似透明 2 ,我见的BMP图片的背 ...
- 用“掩码位图“,制作类似.png的“透明图片“①
目录 前言 掩码位图的制作 前言 因为要给我原神版的飞机大战导入图片,所以需要使用透明图片作为飞机的素材. 一般来说,我们会制作.png格式或者.psd格式的透明图片,但我制作完毕并将其贴到窗口时 ...
- 教你如何利用灰度图透明效果制作隐藏图片.part1
#更新 使用深色图片简单实现隐藏图片二不需要网格抠图 http://blog.csdn.net/chenzhuyu/article/details/54766757 #效果图: 在QQ聊天的时候,图片 ...
- 教你如何利用灰度图透明效果制作隐藏图片.Part2
前言 文章http://blog.csdn.net/chenzhuyu/article/details/52483394 中介绍了利用像素交替+蒙版的方法制作隐藏图片 实现在QQ界面中,预览与查看显示 ...
- 计算机电脑水晶字制作图片,电脑技巧收藏家photoshop技巧Photoshop教程:制作透明水晶字(3)...
Photoshop教程:制作透明水晶字(3) 步骤3 设置"颜色叠加" 跟着进行第二步的设置.用鼠标选中[图层样式]对话框左边的"颜色叠加"选项,然后在选项区域 ...
- 【转】C#使用GDI+制作背景颜色淡入淡出效果的按钮
C#使用GDI+制作背景颜色淡入淡出效果的按钮 2010-04-14 来自:CNBLOG 字体大小:[大 中 小] 摘要:本文介绍C#使用GDI+制作背景颜色淡入淡出效果的按钮,并提供完整的示例和 ...
最新文章
- HTML的标签描述22
- cinder与ceph的区别_分布式存储基础、Ceph、cinder及华为软件定义的存储方案 -
- word如何(以标题)另起一页(段落 --> 换行和分页 --> 段前分页)
- linux——DHCP的配置问题
- VTK:随机探针用法实战
- 面试官问我:如何减少客户对交付成果的质疑
- mysql invalid default value_mysql5.x升级到5.7 导入数据出错,提示Invalid default value for...
- struts集成spring官方例子
- 华为集齐 AI 龙珠,“召唤神龙”为期不远
- linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别(一)
- 判断一个字符串的字符是不是唯一
- Profiler中WaitForTargetFPS详解【转】
- python+selenium实战搭建PO模型
- Unity3d制作2D游戏飞翔的小鸟(FlappyBird)
- API(15)——打印系统开发(52)——WinForm开发(62)——C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
- TASK SCHEDULE(任务计划)服务无法运行 解决方案
- oracle--13集合
- 新一代zData数据库一体机和ZDBM数据备份与恢复一体机正式发布
- Java面向对象常见概念
- 电源系列2:LDO 基本 原理(二)