图形输出中的屏幕截图 [Windows XP 中的 Turbo C++ 3.0]
Screenshot in Graphics Output [Turbo C++ 3.0 in Windows XP]
我无法在 Windows XP 中使用 Turbo C++ 生成的图形输出中截取屏幕截图。怎么做?
我尝试了 PrintScreen 并将其粘贴到 MSPaint 中,但没有帮助。
Turbo C 图形在 VGA(或兼容)模式下工作。要将输出保存为 JPEG 文件,最好的办法是自己在代码中完成。
将像素绘制到内存缓冲区,然后使用任何开源库(例如 "libjpeg")将其转换为 JPEG。检查 http://www.jpegcameras.com/libjpeg/libjpeg.html
由于您已经将输出绘制到屏幕,您可以将 VGA 内存缓冲区复制到您自己的内存缓冲区并使用它(而不是直接将像素绘制到内存缓冲区)。
否则,获取指向 VGA 内存的指针并将其传递给 JPEG 库以创建 jpeg 图像。
您可以按如下方式访问显存:
typedef unsigned char byte;
byte far *VGA = (byte far*)0xA0000000L;
查看 http://www.brackeen.com/vga/basics.html
另请注意,JPEG 是一种有损压缩。也就是说,您保存的 jpeg 图像可能不是 "same" 作为输入图像。从视觉上看,它们看起来相同,但 "content" 本身并不相同。
如果您计划 "comparisions",那么您应该选择 non-lossy 格式,例如 TIFF 或 BMP。将图像保存为 BMP 格式既快速又直接。查看 http://gpalem.web.officelive.com/bitmap.html#SaveB itmap
此外,如果您有兴趣用一系列 JPEG 图像或位图创建电影,您可能会发现 http://gpalem.web.officelive.com/createmovie.html 非常适合。
查看项目at codeproject.com,里面有你想要的!
使用代码非常简单。检查这个 example.
我无法在 Windows XP 中使用 Turbo C++ 生成的图形输出中截取屏幕截图。怎么做?
我尝试了 PrintScreen 并将其粘贴到 MSPaint 中,但没有帮助。
Turbo C 图形在 VGA(或兼容)模式下工作。要将输出保存为 JPEG 文件,最好的办法是自己在代码中完成。
将像素绘制到内存缓冲区,然后使用任何开源库(例如 "libjpeg")将其转换为 JPEG。检查 http://www.jpegcameras.com/libjpeg/libjpeg.html
由于您已经将输出绘制到屏幕,您可以将 VGA 内存缓冲区复制到您自己的内存缓冲区并使用它(而不是直接将像素绘制到内存缓冲区)。
否则,获取指向 VGA 内存的指针并将其传递给 JPEG 库以创建 jpeg 图像。
您可以按如下方式访问显存:
typedef unsigned char byte;
byte far *VGA = (byte far*)0xA0000000L;
查看 http://www.brackeen.com/vga/basics.html
另请注意,JPEG 是一种有损压缩。也就是说,您保存的 jpeg 图像可能不是 "same" 作为输入图像。从视觉上看,它们看起来相同,但 "content" 本身并不相同。
如果您计划 "comparisions",那么您应该选择 non-lossy 格式,例如 TIFF 或 BMP。将图像保存为 BMP 格式既快速又直接。查看 http://gpalem.web.officelive.com/bitmap.html#SaveB itmap
此外,如果您有兴趣用一系列 JPEG 图像或位图创建电影,您可能会发现 http://gpalem.web.officelive.com/createmovie.html 非常适合。
查看项目at codeproject.com,里面有你想要的!
使用代码非常简单。检查这个 example.