首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GDI编程

GDI编程

作者头像
_gongluck
发布2018-03-08 14:07:38
1.2K0
发布2018-03-08 14:07:38
举报

由于最近一直在搞GDI(GDI+)和图片处理的东西,怕自己忘记(其实已经忘得差不多),就仿照网上的BITMAPINFO查看器,写了个东西。

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

运行效果如图:

虽然比较(很)难看,但本人觉得图片显示那块还是做得不错的。嘿嘿。

图片显示的实现是:先把位图文件加载到内存当中(这里我很偷懒,没有任何检查!),然后通过双缓冲显示位图。为了能实现图片的移动,我是创建了两个兼容DC,先在一个兼容dc上做完所有的位拷贝再拷贝到窗口dc上,可能这里做的太麻烦了(毕竟技术菜啊)。

对话框头文件添加的内容有:

public:
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButton2();

	BYTE* m_buf;				//指向加载到内存的位图文件
	BITMAPFILEHEADER* m_bmfh;	//指向文件头
	BITMAPINFO* m_bmi;			//指向位图信息结构
	BYTE* m_dibs;				//指向dib数据
	void Show(int x, int y);	//显示位图
	void TreeShow(void);		//树形控件

	int X;				//X偏移
	int Y;				//Y偏移
	CPoint old;			//记录移动时的上一个点
	BOOL flag;			//标记鼠标左键是否被按下

	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);		//左键
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);		//移动
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);		//左键弹起

图片显示的关键代码:

void CBITMAP2Dlg::Show(int x, int y)
{
	CDC* pdc = GetDlgItem(IDC_DDD)->GetDC();
	CRect rect;
	GetDlgItem(IDC_DDD)->GetWindowRect(&rect);
	ScreenToClient(&rect);
	CDC bk,kb;
	bk.CreateCompatibleDC(pdc);
	HBITMAP bmbk = CreateCompatibleBitmap(pdc->m_hDC,rect.Width(),rect.Height());
	HBITMAP oldbm = (HBITMAP)bk.SelectObject(bmbk);

	kb.CreateCompatibleDC(pdc);
	HBITMAP bmkb = CreateDIBitmap(pdc->m_hDC,&m_bmi->bmiHeader,CBM_INIT,m_dibs,m_bmi,DIB_RGB_COLORS);
	HBITMAP oldbm2 = (HBITMAP)kb.SelectObject(bmkb);
	bk.BitBlt(0,0,rect.Width(),rect.Height(),NULL,0,0,WHITENESS);
	bk.BitBlt(0,0,rect.Width(),rect.Height(),&kb,x,y,SRCCOPY);
	pdc->BitBlt(0,0,rect.Width(),rect.Height(),&bk,0,0,SRCCOPY);

	kb.SelectObject(oldbm2);
	DeleteObject(bmkb);
	DeleteDC(kb);
	bk.SelectObject(oldbm);
	DeleteObject(bmbk);
	DeleteDC(bk.m_hDC);
	ReleaseDC(pdc);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年10月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档