CxImage

Hi,蜜蜡,又是我听歌宝听歌专员gongluck。

今天,继之前的GDI、GDI+两个实例之后,我有利用功能强大的CxImage做了个小小的图片查看器。CxImage可真是强大,简直可以让各种类型的图片被弄得死去活来。

工程下载地址:点击打开链接

运行效果如图:

从网上下载好CxImage工程的源码并编译好后,把cximage文件夹下的所有头文件和工程的所有静态链接库文件(.lib)拷贝到自己的工程目录。

在代码中加入:

#include "ximage.h"
#pragma comment(lib, "png.lib")
#pragma comment(lib, "libdcr.lib")
#pragma comment(lib, "jpeg.lib")
#pragma comment(lib, "zlib.lib")
#pragma comment(lib, "tiff.lib")
#pragma comment(lib, "jasper.lib")
#pragma comment(lib, "cximage.lib")
#pragma comment(lib, "mng.lib")
#pragma comment(lib, "libpsd.lib")

准备工作做完之后就可以使用CxImage了。

CxImage画图的话用Draw成员函数就可以了,该函数的第一个参数是HDC,接着的参数就是绘图区域相关的。但我用的时候发现

用CXimag的draw画图,图像可以超出HDC的范围?

image.Draw(GetDlgItem(IDC_CXIMAGE)->GetDC()->GetSafeHdc(),X,Y);

当X、Y有一个为负数时,图片都可以超出控件本身的范围绘图,百思不得其解。

所以最后我使用GDI加CxImage的方式做:

        //兼容DC
	CDC cmpdc;
	cmpdc.CreateCompatibleDC(GetDlgItem(IDC_CXIMAGE)->GetDC());
	int save = SaveDC(cmpdc.m_hDC);
	CRect rect;
	GetDlgItem(IDC_CXIMAGE)->GetWindowRect(rect);
	//兼容位图
	HBITMAP hbmp = CreateCompatibleBitmap(GetDlgItem(IDC_CXIMAGE)->GetDC()->m_hDC,rect.Width()-5,rect.Height()-2);
	cmpdc.SelectObject(hbmp);
	cmpdc.BitBlt(0,0,rect.Width(),rect.Height(),NULL,0,0,WHITENESS);    //白色背景
	CString path;
	GetDlgItemText(IDC_EDIT1,path);
	//CxImage***************************************************
	CxImage image;
	image.Load(path.GetBuffer(),CXIMAGE_FORMAT_UNKNOWN);
	if (image.IsValid())
	{		
		image.Draw(cmpdc.m_hDC,X,Y);  
	}
	GetDlgItem(IDC_CXIMAGE)->GetDC()->BitBlt(0,0,rect.Width(),rect.Height(),&cmpdc,0,0,SRCCOPY);
	RestoreDC(cmpdc.m_hDC,save);
	DeleteObject(hbmp);
	DeleteDC(cmpdc);

当然,这里只是很简单的应用,CxImage的很多功能(图片变形、格式转化、过滤。。。)都没有用到,不过以后一定会有机会的~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

那人的Excel技巧好烂,他做1个小时,别人29秒搞定

本文为简书作者傲看今朝原创,CDA数据分析师已获得授权 ”智能表格“在Excel中就是叫表格,恐怕是Excel当中最不起眼最受人忽视,却极其实用的功能之一,可以...

1975
来自专栏hightopo

基于 HTML5 WebGL 的低碳工业园区监控系统

1337
来自专栏李蔚蓬的专栏

Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

顾名思义,CollapsingToolbarLayout是一个作用于Toolbar基础之上的布局,由DesignSupport库提供。

2174
来自专栏13blog.site

Markdown语法讲解及MWeb使用教程

写了一个月的博客,忽然感觉Markdown编辑器比较好用,于是就下载了一个本地的Markdown编辑软件学习了一下,刚好软件里自带了一篇英文的指示文档,顺便翻译...

2914
来自专栏程序员互动联盟

【专业文章】六种常见的HTML5写法误用(一)

一、不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>——具体地说,就是直接用...

3235
来自专栏小程序之家

如何在小程序中实现视频播放

在如何使用小程序媒体组件这篇文章中,我们简单介绍了video视频组件的使用,这篇文章中,将对视频播放做一些补充,同时介绍API的使用。

11.3K3
来自专栏小李刀刀的专栏

[译]CSS边框实现“无图化”设计

原文:http://www.yuiblog.com/blog/2011/03/08/css-border-tricks-with-collapsed-boxes...

3588
来自专栏逍遥剑客的游戏开发

Flash在DirectX中的绘制

1643
来自专栏web前端

用jQuery+easyUI遇到的几个插件与文件详解

很早就开始跟着老师学习jQuery课程,那时候是要求熟练使用jQuery中的easyUI插件中的控件,包括textbox、combobox、panel、chec...

17610
来自专栏GIS讲堂

openlayers自定义图层控制的实现

最近一直在考虑一件事情,那就是openlayers中自定义wms的图层控制。用过openlayers的人都知道,在openlayers中有自带的图层控制的控件,...

3643

扫码关注云+社区