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

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. 从程序员到CTO的Java技术路线图 (转自安卓巴士)

    在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...

  2. 表单中<form>的enctype属性

    application/x-www-form-urlencoded.multipart/form-data.text/plain 上传文件的表单中<form>要加属性enctype=&qu ...

  3. Sqli-labs less 41

    Less-41 此处与less-39是一致的,区别在于41错误不回显.所以我们称之为盲注. Payload: http://192.168.11.189/sqli-labs/Less-41/index ...

  4. 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!

    如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...

  5. c#知识库同步的总结

    C#知识库下载地址: http://www.51aspx.com/Code/FileCollector 新版下载地址:http://pan.baidu.com/s/1P3Hk 对于这一款平时用来收集知 ...

  6. Android ListVIew 详解(一)

    在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...

  7. Windows命令查看文件MD5

    certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile filename SHA256

  8. DevExpress GridView 自定义搜索按钮改为中文内容

    首先将 GridControl 控件的搜索功能显示出来. http://www.cnblogs.com/DeepLearing/p/3887601.html 显示效果如下: 可以通过 GridLoca ...

  9. Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)

    题目链接 D. Appleman and Tree time limit per test :2 seconds memory limit per test: 256 megabytes input ...

  10. cojs 疯狂的字符串 题解报告

    首先这道题是GT考试的加强版本QAQ 当n<k的时候,答案显然是10^n 当n=k的时候,答案显然是10^n-1 这样就有20分辣 之后我们考虑k<=20的做法 显然设f(i,j)表示前i ...