[bo][un]flyue[/un] 在 2008-8-29 09:34 的发言:[/bo]
感觉你发的ScreenShot根本没有24色,最多16色
哎,用Win32的GDI不是很好吗,干吗要用TC来做图形程序
在GDI中有直接的API函数BitBlt供你调用,何必自己写呢?
文件夹里面的CELLS.bmp是24色没错,但是一到程序里就变 ...
感觉你发的ScreenShot根本没有24色,最多16色
哎,用Win32的GDI不是很好吗,干吗要用TC来做图形程序
在GDI中有直接的API函数BitBlt供你调用,何必自己写呢?
文件夹里面的CELLS.bmp是24色没错,但是一到程序里就变 ...
你说的没错,我们使用windos的API或者mfc其实很方便,或者使用的gdi+设计的就更加面向对象了。这些会用起来比较方便。
我这个文件的意义就在于,由于tc下是不具有使用图片资源来辅助一些游戏之类的习惯和思维的,因为tc并不支持。
用直接写显存来加载真彩色位图的c程序我也看过了,但是这样的程序仅适合显示位图,不适合在游戏或者一些需要
较高效率的刷新的地方使用。因为你进入的是一种显示模式,在这里只能操作像素,而离开了所有绘图函数的支持,
除非有人自己再开发出来这样多的功能足够的库,当然已经有人这样做了。
所以这样就给大家带来一种选择,可以使用位图来增色游戏的感觉。包括我这个想法也是很久前的一个偶然的冒出来的点子,
那时候我正在研究图标格式,我想既然位图格式我已经全都知道了,那么我当然能够在tc下面的16色来拟合每个像素,
这样就在tc下面能够显示位图。所以这个头文件的前身也就是我那时候的写的一个尝试。
当然在vc下面我们有很多方法来做这件事。
比如说LoadBitmap只能从HINSTANCE里面加载图片资源,但没办法从文件加载。
而LoadImage可以从文件加载位图,并拿到一个HBITMAP句柄了。但是它属于微软的API,所以它只支持BMP格式的文件。怎么不能读取jpg格式呀,没办法啊,jpg不是他家的规范啊。是什么那个jpeg的什么图形工作组定的。
那么要加载非BMP的其他格式怎么办,操作系统里带了一个DLL,里面带了一个CImage类,能够读取BMP以外格式的图片。这个类的用法还是非常方便的,值得推荐。
另一种方法就是用COM , query出来一个IPicture对象,然后通过它读取文件和绘图。也是可行的。
另外一点是我这里也显示了微软用HANDLE来封装数据的惯例。
[[it] 本帖最后由 hoodlum1980 于 2008-8-29 10:36 编辑 [/it]]