GDI编程
来源:互联网 发布:mac brick o la试色 编辑:程序博客网 时间:2024/06/05 10:47
由于最近一直在搞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);}
0 0
- GDI编程
- GDI编程
- GDI+编程
- GDI编程
- GDI+ 编程
- GDI 编程
- gdi++编程
- GDI+编程
- GDI编程
- GDI编程
- GDI+编程
- GDI+编程基础 GDI+ Vs GDI
- GDI(GDI+) - 混合编程【实例】
- GDI与GDI+编程小结
- GDI+编程简介
- 使用GDI+编程
- GDI+编程中的错误
- GDI编程的练习题
- 项目问题排查
- 数据分析师需要学习的知识
- 替换空格
- linux系统根目录各文件的作用
- 2016年8月19日-第四章练习
- GDI编程
- afafafafafaf %%%
- 笔记本建立Tensorflow(GPU)环境
- MongoDB 在linux下的安装配置
- 分别用Java和JS读取Properties文件内容
- 锐捷在ubuntu下使用
- android开发之手机与单片机蓝牙模块通信
- get和post的区别
- Java设计模式(行为型)之-解释器模式