位图

Windows API

筅森魡賤 提交于 2020-04-04 06:18:25
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime

CreateDIBSection函数

瘦欲@ 提交于 2020-04-04 04:22:48
HBITMAP CreateDIBSection( HDC hdc, // handle to DC CONST BITMAPINFO*pbmi, // bitmap data UINT iUsage, // data type indicator VOID**ppvBits, // bit values HANDLE hSection, // handle to file mapping object DWORD dwOffset // offset to bitmap bit values); CreateDIBSection函数会根据位图结构信息(pbmi)分配内存空间,你不用为它分配内存,这块内存也不需要你释放,系统会自己释放的。然后将位图中的图像数据读入这个内存地址,显示即可。 LPBYTE lpBits; HBITMAP hBmp=::CreateDIBSection(dcMem.m_hDC,lpBitmap,DIB_PAL_COLORS, &lpBits,NULL,0); //将图像数据填充到得到的内存地址中 file.ReadHuge(lpBits,dwBitlen); pDC->StretchBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcMem,0,0, bmp.bmWidth,bmp.bmHeight,SRCCOPY);

CreateDIBSection

流过昼夜 提交于 2020-04-04 04:21:09
  函数功能:该函数创建应用程序可以直接写入的、与设备无关的位图(DIB)。该函数提供一个指针,该指针指向位图位数据值的地方。可以给文件映射对象提供句柄,函数使用文件映射对象来创建位图,或者让系统为位图分配内存。   函数原型:HBITMAP CreateDIBSection(HDC hdc,CONST BITMAPINFO *pbmi,UINT iUsage,VOID** ppvBits,HANDLE hSection,DWORD dwOffset);   参数:   hdc:设备环境句柄。如果iUsage的值是DIB_PAL_COLORS,那么函数使用该设备环境的逻辑调色板对与设备无关位图的颜色进行初始化。   pbmi:指向BITMAPINFO结构的指针,该结构指定了与设备无关位图的各种属性,其中包括位图的维数和颜色。   iUsage:指定由pbmi参数指定的BITMAPINFO结构中的成员bmiColors数组包含的数据类型(要么是逻辑调色板索引值,要么是原文的RGB值)。下列值是系统定义的,其含义为:   DIB_PAL_COLORS:表示成员bmiColors是hdc指定的设备环境的逻辑调色板,使用的是16位索引值数组。   DIB_RGB_COLORS:表示结构BITMAPINFO中包含了RGB值的数组。   ppvBits:指向一个变量的指针

CreateDIBSection

冷暖自知 提交于 2020-04-04 04:20:06
分辨率 我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。 调色板   有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R、G、B三个分量表示。因为每个分量有256个级别,要用8位(bit),即一个字节(byte)来表示,所以每个象素需要用3个字节。整个图象要用200×200×3,约120k字节,可不是一个小数目呀!如果我们用下面的方法,就能省的多。   因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的每一行记录一种颜色的 R 、 G 、 B 值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第 0 行为 255 , 0 , 0( 红色 ) ,那么当某个象素为红色时,只需要标明 0 即可。   让我们再来计算一下: 16 种状态可以用 4 位 (bit) 表示,所以一个象素要用半个字节。整个图象要用 200×200×0.5 ,约 20k 字节,再加上表占用的字节为 3×16=48 字节 . 整个占用的字节数约为前面的 1/6 ,省很多吧?   这张 R 、 G 、 B 的表,就是我们常说的调色板 (Palette) ,另一种叫法是颜色查找表 LUT(Look Up Table)

CreateDIBSection

牧云@^-^@ 提交于 2020-04-04 04:18:49
理解分辨率 我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。 理解调色板 有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R、G、B三个分量表示。因为每个分量有256个级别,要用8位(bit),即一个字节(byte)来表示,所以每个象素需要用3个字节。整个图象要用200×200×3,约120k字节,可不是一个小数目呀!如果我们用下面的方法,就能省的多。 因为是一个 16 色图,也就是说这幅图中最多只有 16 种颜色,我们可以用一个表:表中的每一行记录一种颜色的 R 、 G 、 B 值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第 0 行为 255 , 0 , 0( 红色 ) ,那么当某个象素为红色时,只需要标明 0 即可。 让我们再来计算一下: 16 种状态可以用 4 位 (bit) 表示,所以一个象素要用半个字节。整个图象要用 200×200×0.5 ,约 20k 字节,再加上表占用的字节为 3×16=48 字节 . 整个占用的字节数约为前面的 1/6 ,省很多吧? 这张 R 、 G 、 B 的表,就是我们常说的调色板 (Palette) ,另一种叫法是颜色查找表 LUT(Look Up Table) ,似乎更确切一些。

SQL Server优化器特性-位图过滤(Bitmap)

一曲冷凌霜 提交于 2020-03-30 06:57:02
一直以来,由于SQL Server中没有位图索引使得面对一些场景,从业人员在索引选择上受限,饱受诟病.其实熟悉SQL Server的朋友应该知道,SQL Server虽然没有位图索引,但在特定环境下还是会采用位图(Bitmap)过滤的,这次就为大家介绍下SQL Server的位图过滤. 概念:关于位图索引的概念我就不做过多介绍了,感兴趣的朋友可以看下wikipedia http://en.wikipedia.org/wiki/Bitmap_index 优势:在重复率高,数据很少被更新的场景中(如一年之内的年龄,汽车车型等)过滤高效. SQL Server的位图过滤采用的布隆过滤(bloom filter)方式,这里我简单说下布隆过滤的实现方式. 实现方式:通过构建一个长度X的位数组(bit array)(所有位为0),将要匹配的集合通过哈希函数映射到位数组中的相应点中(相应位为1),当判断一个值是否存在时找bit array中对应位是否为1就可以了.这个过程由SQL Server内部自己完成. 如图1-1所示,我将需要匹配的集合{神仙?,妖怪?,谢谢!}映射到bit array中,当有一条新记录{悟空..}我判断他是否在我的集合中,只需判断相应的位是否是1就可以了,图中可以看出{悟空..}并不是所有位都为1,所以悟空并不在我的集合中. 图1-1 具体到SQL

让子弹飞,图片缓冲应用

*爱你&永不变心* 提交于 2020-03-29 23:36:35
今天看到同学讲到图片缓冲的应用,原文(http://bbs.9ria.com/thread-61328-1-2.html) 看了下代码,发现还有改进的余地,特地自己实现了一把 改进的地方:改进beginBitmapFill为位图,这个比较耗,用vector代替arrary 不再传递buffer及位图,数据和具体显示分离 简化了部分代码 下面是具体效果 运动物品类 package { /** * 运动物品类 * @author heycup@gmail.com */ public class MoveObject { public var x:int; public var y:int; public var sx:int; public var sy:int; public function update():void { x += sx; y += sy; if (x > BitmapBufferTest.w || x < 0){ sx = -sx; } if (y > BitmapBufferTest.h || y < 0){ sy = -sy; } } } } 场景类 package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite;

Android中文API(136) —— Bitmap

烈酒焚心 提交于 2020-03-26 05:14:23
前言   本章内容android.graphics.Bitmap章节,译为"位图",版本为Android 4.0 r1,翻译来自:"StreamH",欢迎访问他的博客:" http://blog.csdn.net/qs_csu ",再次感谢"StreamH" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。 声明   欢迎转载,但请保留文章原始出处:)     博客园: http://www.cnblogs.com/     Android中文翻译组: http://androidbox.sinaapp.com/ Bitmap 译者署名: StreamH 译者链接: http://blog.csdn.net/qs_csu 版本: Android 4.0 r1 结构 继承关系 public class Bitmap extends Object implements Parcelable java.lang.Object android.graphics.Bitmap 内部类    enum Bitmap.CompressFormat    详细说明位图的压缩格式    enum Bitmap.Config    位图的结构 常量 Int DENSITY_NONE 标志着该位图是以未知的像素密度创建的 参见 getDensity()

android Bitmap学习总结

我们两清 提交于 2020-03-26 05:11:25
http://bbs.chinaunix.net/thread-3682769-1-1.html BitMap类: public void recycle()——回收位图占用的内存空间,把位图标记为Dead public final boolean isRecycled() ——判断位图内存是否已释放 public final int getWidth()——获取位图的宽度 public final int getHeight()——获取位图的高度 public final boolean isMutable()——图片是否可修改 public int getScaledWidth(Canvas canvas)——获取指定密度转换后的图像的宽度 public int getScaledHeight(Canvas canvas)——获取指定密度转换后的图像的高度 public boolean compress(CompressFormat format, int quality, OutputStream stream)——按指定的图片格式以及画质,将图片转换为输出流。 format:Bitmap.CompressFormat.PNG或Bitmap.CompressFormat.JPEG quality:画质,0-100.0表示最低画质压缩,100以最高画质压缩

Android Bitmap 和 Canvas详解

混江龙づ霸主 提交于 2020-03-26 05:05:39
位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。   1. 从资源中获取位图   可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。   当然,首先需要获取资源:   Resources res=getResources();   使用BitmapDrawable获取位图   使用BitmapDrawable (InputStreamis)构造一个BitmapDrawable;   使用BitmapDrawable类的getBitmap()获取得到位图;   // 读取InputStream并得到位图   InputStreamis=res.openRawResource(R.drawable.pic180);   BitmapDrawable bmpDraw=newBitmapDrawable(is);   Bitmap bmp=bmpDraw.getBitmap();或者采用下面的方式:   BitmapDrawablebmpDraw=(BitmapDrawable)res.getDrawable(R.drawable.pic180);   Bitmapbmp=bmpDraw.getBitmap();使用BitmapFactory获取位图   (Creates Bitmap objects fromvarious