上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 191 下一页
摘要: 所有API都需要通过兼容性测试,才说明这个API没有问题,达到可以使用的程度。下面这段代码就是测试API的兼容性,当测试到GetPixel函数时,就发现有一个BUG,就是最后一行,当希望这个单色的图片返回0xFFFFFF值,但在ROS返回是0值。说明这个API函数在单色处理上存在问题,那么怎么样修改这个问题呢?#001 HDC hdc, hdcmem;#002 DWORD bits[64];#003 HBITMAP hbmp, oldhbmp;#004 COLORREF col;#005 int i, bitspixel;#006 #007 /* fill bitmap data with b 阅读全文
posted @ 2010-02-10 23:54 ajuanabc 阅读(102) 评论(0) 推荐(0) 编辑
摘要: PALETTE_Init函数是用来创建系统调色板。具体实现如下:#001 HPALETTE FASTCALL PALETTE_Init(VOID)#002 {#003 int i;#004 HPALETTE hpalette;#005 PLOGPALETTE palPtr;#006 #ifndef NO_MAPPING#007 PALOBJ *palObj;#008 #endif#009 创建系统20种缺省的颜色。#010 // create default palette (20 systemcolors)分配20种颜色的调色板占用的内存空间。#011 palPtr = ExAllocate 阅读全文
posted @ 2010-02-09 23:09 ajuanabc 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张表格,这张表格就叫做调色板。图像保存的数据时并不保存颜色的真实值,而是保存调色板里的索引值。#001 typedef struct tagLOGPALETTE {#002 WORDpalVersion;#003 阅读全文
posted @ 2010-02-08 21:39 ajuanabc 阅读(118) 评论(0) 推荐(0) 编辑
摘要: GetPixel函数是从指定DC里获取指定位置的颜色值。#001 COLORREF#002 WINAPI#003 GetPixel( HDC hDC, INT x, INT y )#004 {如果句柄不是DC,就返回非法的。#005 if (GDI_HANDLE_GET_TYPE(hDC) !=GDI_OBJECT_TYPE_DC) return CLR_INVALID;#006 if (!GdiIsHandleValid((HGDIOBJ) hDC)) returnCLR_INVALID;调用函数NtGdiGetPixel返回指定颜色值。#007 return NtGdiGetPixel( 阅读全文
posted @ 2010-02-07 10:35 ajuanabc 阅读(114) 评论(0) 推荐(0) 编辑
摘要: SelectObject函数是将对象选定到指定的设备场境中。具体实现代码如下:#001 HGDIOBJ#002 WINAPI#003 SelectObject(HDC hDC,#004 HGDIOBJ hGdiObj)#005 {#006 PDC_ATTR pDc_Attr;#007 HGDIOBJ hOldObj = NULL;#008 UINT uType;#009 //PTEB pTeb;#010 获取这个HDC相关的属性。#011 if(!GdiGetHandleUserData(hDC,GDI_OBJECT_TYPE_DC, (PVOID)&pDc_Attr))#012 {# 阅读全文
posted @ 2010-02-06 20:52 ajuanabc 阅读(256) 评论(0) 推荐(0) 编辑
摘要: NtGdiCreateBitmap函数是创建一个位图句柄。#001 HBITMAP APIENTRY#002 NtGdiCreateBitmap(#003 INT Width,#004 INT Height,#005 UINT Planes,#006 UINT BitsPixel,#007 INOPTIONAL LPBYTE pUnsafeBits)Width是位图宽度。Height是位图高度。Planes是位图中颜色面的数目。BitsPixel是标识单个像素的颜色所需的位数。pUnsafeBits是指向由字节组成的数组的指针,该数组中包含像素数据。矩形中每条扫描线都必须字对齐。#008 {# 阅读全文
posted @ 2010-02-05 21:33 ajuanabc 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 转自:InfoQ 作者 Abel Avram 译者 张龙 发布于 2010年1月30日 上午12时6分 目前Web Hypertext Application Technology Working Group(WHATWG)正与W3C通力合作建立HTML 5标准,在过去3个月中,该项工作已经进入到了WHATWG的“Last Call”阶段。在这期间,变化最大的一个特性就是iframe元素的sandbox属性。sandbox属性可以防止不信任的... 阅读全文
posted @ 2010-02-05 10:59 ajuanabc 阅读(227) 评论(0) 推荐(0) 编辑
摘要: CreateBitmap函数是创建具有给定宽度、高度和颜色格式的、以颜色位值构成的数组为基础的位图。#001 HBITMAP WINAPI#002 CreateBitmap(INT Width,#003 INT Height,#004 UINT Planes,#005 UINT BitsPixel,#006 PCVOID pUnsafeBits)#007 {#008 /* FIXME some part should be done in usermode */#009 if (Width && Height)#010 {如果有宽度和高度,就调用内核函数NtGdiCreateB 阅读全文
posted @ 2010-02-04 21:23 ajuanabc 阅读(115) 评论(0) 推荐(0) 编辑
摘要: GetDC函数是通过窗口的句柄获取设备环境,这样就可以把获取到的设备环境使用到后面的GDI函数里,这样就可以在窗口的客户区中绘图了。当应用程序结束时,需要使用ReleaseDC来释放设备环境。如果是私有设备时,就可以不删除它。这个API实现函数如下:#001 EXTINLINE HDC WINAPI#002 GetDC(HWND hWnd)#003 {这里调用函数NtUserGetDC来实现相应的功能。#004 return NtUserGetDC(hWnd);#005 }NtUserGetDC函数是在内核WIN32K里实现的,如下:#001 HDC APIENTRY#002 NtUserGe 阅读全文
posted @ 2010-02-02 22:43 ajuanabc 阅读(303) 评论(0) 推荐(0) 编辑
摘要: DC(device context)是一个图形对象、图形属性和影响图形输出的集合结构体。CreateDC函数用给定名称为指定的设备创建设备环境。CreateDC一般用于创建打印机的设备环境,也可以用来得到屏幕(硬件屏幕,而不是窗口的客户区)的设备环境。请小心使用这个函数,因为它允许应用程序在屏幕上任何位置绘图,而不仅仅是在窗口的边界内。请用GetDC或BeginPaint来获取屏幕窗口的设备环境。#001 HDC#002 WINAPI#003 CreateDCW (#004 LPCWSTR lpwszDriver,#005 LPCWSTR lpwszDevice,#006 LPCWSTR... 阅读全文
posted @ 2010-01-31 17:36 ajuanabc 阅读(247) 评论(0) 推荐(0) 编辑
上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 191 下一页