作者tocute (小飘)
看板C_Sharp
标题Re: [问题] 如何开发类似 SnagIt 的截图软体?
时间Thu Feb 28 17:03:21 2008
※ 引述《casiopea (Casiopea)》之铭言:
: 不晓得各位板友是否知道 SnagIt 这套截图软体?
: 它可以撷取 滑鼠框选的区域、
: 特定视窗、
: 视窗中特定区块(自动侦测某个region,例如整个toolbar、整个panel)
: 总之是个非常好用的软体,除了多样化的截取区域之外,也可以自动批次存档、上传到FTP
: 甚至还提供了简单的编修功能(阴影、模糊、加图、加字等等)
: 其中针对截图这块,我实在不知该看些什麽资料?
: 目前根据它的截图流程,我猜是跟 Windows OS 本身的 API 有关
: (它会将目前画面定格以方便选取截图区域)
: 但却不知道该怎麽实作 1. 如何将画面定格?
: 2. 定格後如何进行截图或是自动侦测特定区域?
: 想请教板友有无任何参考文件或是open source project可供参考?
: 感激不尽~
刚好前阵子有再研究 不过我是对 webbrowser 作截图
你看看这两个方法何不合你用
1. // Set hwnd to the Window
IntPtr myIntptr =
handle of Window;
int hwndInt = myIntptr.ToInt32();
IntPtr hwnd = myIntptr;
// Set hdc to the bitmap
Bitmap bm = new Bitmap(screenWidth, screenHeight,
System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
Graphics g = Graphics.FromImage(bm);
IntPtr hdc = g.GetHdc();
// Snapshot the WebBrowser
bool result = PrintWindow(hwnd, hdc, 0);
g.ReleaseHdc(hdc);
g.Flush();
// Save the bitmap, if successful
if (result == true)
bm.Save("slide.bmp");
2. Graphics g = webBrowser1.CreateGraphics();
Bitmap ibitMap = new Bitmap(webBrowser1.Width, webBrowser1.Height,
g);
Graphics iBitMap_gr = Graphics.FromImage(ibitMap);
IntPtr iBitMap_hdc = iBitMap_gr.GetHdc();
IntPtr me_hdc = g.GetHdc();
BitBlt(iBitMap_hdc, 0, 0, webBrowser1.Width, webBrowser1.Height,
me_hdc, 0, 0, SRC);
g.ReleaseHdc(me_hdc);
iBitMap_gr.ReleaseHdc(iBitMap_hdc);
ibitMap.Save("1.bmp", ImageFormat.Bmp);
第二个 我比较看不懂 不过似乎可以抓萤幕上 某范围的画面
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.231.156