要将文件显示成图片这其中需要经过

1.将磁盘文件内容读取到内存;

2.将文件对应内存里包含的像素为以及像素信息转化为显示驱动器能理解的格式;

3.将转化过后的内存送到显卡的缓存区

4.显示器读取缓存现实于屏幕

在GDI中,WINDOWS不允许用户操作硬件,所以提供了用于显示位图文件到屏幕的API:

SetDIBitsToDevice   直接将DIB显示到屏幕上

(

hdc,

xDst,

yDst,         (xDst,yDst)指定图片左上角的在屏幕上的坐标

cxSrc,         要显示DIB图片的宽度

cySrc,         要显示DIB图片的宽度

xSrc,

ySrc,          (xSrc,ySrc)是DIB图片左下角的坐标

yScan,       指定DIB图片从哪一行扫描行开始

cYScans,    指定一次扫描多少行

pBits,

pInfo,

fClrUse

)

StrechDIBits    将DIB通过缩放来显示到屏幕上

SetDIBitsToDevice 和StrechDIBits 在函数调用期间,每个像素(可能有几百万个)必须从设备无关的格式想设备相关的格式转换,而这种转换通常是非常繁琐的。因此这两个函数的执行效率并不是非常高,WINDOWS为我们提供了一些DIB与DDB的转换函数。

hBitmap = CreateDIBitmap(hdc,pInfoHdr,0,PbITS,PiNFO,0)

或者

hBitmap = CreateDIBitmap(hdc,pInfoHdr,0,null,null,0)

SetDibits(hdc,hBitmap,0,bitmap.height,pBits,Pinfo,0)

《《------------反向---------------------》》

通过GetDibits(hdc,hBitmap,yScan,CYScans,pBits(out),Pinfo(out),0)将DDB转换为DIB,将位图保存为磁盘文件,屏幕截图就需要使用此函数

【笨嘴拙舌WINDOWS】BMP图片浏览器的更多相关文章

  1. Windows 保存BMP图片

    在Windows下保存BMP图片还是挺方便的,直接上代码,拷贝就能用 void savebmp(uchar * pdata, char * bmp_file, int width, int heigh ...

  2. windows server 2008 R2安装图片浏览器/照片查看器方法

    有用户的电脑安装了windows server 2008 R2,浏览大量图片时很不方便,因为系统中没有照片查看器或图片浏览器.其实,win2008 R2是有照片查看器的,只是默认情况下没有开启.参考以 ...

  3. BMP图片格式模型

    BMP BMP(全称Bitmap)是Window操作系统中的标准图像文件格式 可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广. 它采用位映射存储格式,除了图像深度可选以外,不 ...

  4. 用WPF窗体打造个性化界面的图片浏览器

    原文:用WPF窗体打造个性化界面的图片浏览器 本文使用WPF窗体(XAML及C#)与Win Form控件(FolderBrowserDialog)结合的方式, 演示制作了一个简易漂亮的WPF图片浏览器 ...

  5. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

    本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...

  6. bmp图片的有关操作

    读取bmp图片 并生成新的bmp图片 #include "stdafx.h"#include <windows.h>#include <cmath>#inc ...

  7. MFC对话框显示BMP图片

    1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) ...

  8. BMP图片格式

    BMP图片 BMP采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8bit及24bit和32bit.BMP文 ...

  9. Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片

    在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片: ? 1 2 3 openedImg = Image.open(saveToFile); print " ...

随机推荐

  1. [转载]Thread.Sleep(0)妙用

    原文地址:http://blog.csdn.net/lgstudyvc/article/details/9337063 来自本论坛: 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段 ...

  2. 利用dsniff的tcpkill杀TCP连接

    利用dsniff的tcpkill杀TCP连接 Linux连接久久不能释放的现象不常见,但偶然也会发生.进程虽不复存在,但是客户端的连接咬定青山不放松,死活也不肯吐出连接,导致重启进程时因操作系统判断监 ...

  3. C#创建UTF8无BOM文本文件

    In order to omit the byte order mark (BOM), your stream must use a custom instance of UTF8Encoding i ...

  4. leetcode majority number

    给定一组数,有一个数在这组数里的出现次数超过n/2次. 求出这是哪个数 https://leetcode.com/problems/majority-element/ 一开始考虑的方是将所有数转化为二 ...

  5. iOS 隐藏顶部状态栏方式和更改颜色

    plist文件里面添加 AppDelegate: //显示状态栏 [[UIApplication sharedApplication]setStatusBarHidden:NO]; //将状态栏颜色设 ...

  6. BackgroundWorker组件

    BackgroundWorker组件封装了后台线程的操作,并且直接利用线程池,无需自己管理线程池等复杂问题. 它主要适用于 比如界面后台加载数据,进度显示,上传下载文件,日月结等 这些都是繁重的劳动, ...

  7. 【Apache运维基础(4)】Apache的Rewrite攻略(1)

    简述 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块 ...

  8. Girls: different perspectives to consider

    Girls: different perspectives to consider成为极品女人的十大要素The point of articles such as these isn't to dic ...

  9. Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event

    把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private ...

  10. 让浏览器屏蔽js

    有时候为了测试js是否做到了渐进增强,需要屏蔽下js 做法: Internet选项>>安全>>自定义级别 禁用java小程序脚本和活动脚本 有的浏览器调试器直接就有这个功能