我试图找到一种(有点)简单的方法来在窗口上截取屏幕截图并将生成的HBITMAP保存为JPEG.这里棘手的部分是,因为代码在CI中不能使用GDI +,并且由于代码是更大程序的模块,我不能使用外部库(如libjpeg).
此代码截取屏幕截图并返回HBITMAP.将该位图保存到文件中很容易.问题是位图是2或3mb.
HDC hDCMem = CreateCompatibleDC(NULL);
HBITMAP hBmp;
RECT rect;
HDC hDC;
HGDIOBJ hOld;
GetWindowRect(hWnd, & rect);
hBmp = NULL;
{
hDC = GetDC(hWnd);
hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top);
ReleaseDC(hWnd, hDC);
}
hOld = SelectObject(hDCMem, hBmp);
SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);
return hBmp;
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?非常感谢,任何帮助表示赞赏
编辑:因为我们走向GDI +的方向我想我会发布代码iv C++,可以截取屏幕截图并使用GDI +将其转换为JPEG.如果有人知道如何使用FLAT GDI +实现这一目标我会很感激帮助.码:
#include <windows.h>
#include <stdio.h>
#include <gdiplus.h>
using namespace Gdiplus;
int GetEncoderClsid(WCHAR *format, CLSID *pClsid) …Run Code Online (Sandbox Code Playgroud) FILE *out=fopen64("text.txt","w+");
unsigned int write;
char *outbuf=new char[write];
//fill outbuf
printf("%i\n",ftello64(out));
fwrite(outbuf,sizeof(char),write,out);
printf("%i\n",write);
printf("%i\n",ftello64(out));
Run Code Online (Sandbox Code Playgroud)
输出:
0
25755
25868
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?write设置为25755,我告诉fwrite将多个字节写入文件,这是在开头,然后我在25755以外的位置?
什么会更快?这个:
sprintf(&str[strlen(str)], "Something");
Run Code Online (Sandbox Code Playgroud)
要么
strcat(str, "Something");
Run Code Online (Sandbox Code Playgroud)
有任何性能差异吗?
我正在尝试启用脚本的垃圾收集器来做得更好.它应该能够回收大量的内存,但有些东西正在阻止它.
我已经使用了Devel :: Cycle了一下,这让我更近了但是我不在那里.
如何找出Perl哈希的当前引用计数(我的对象的存储)?
有没有办法跟踪谁持有对象的引用?也许是一种领带说,只要有人指出这个对象,就要记住某个人是谁.
我试图在Windows 5.14.2上运行以下
C:\Perl>perl -e 'print "Hello World \n"' Can't find string terminator "'" anywhere before EOF at -e line 1.
我错过了什么?
我希望能够为我的Perl程序创建Web前端.我对Perl有很多经验,并且我将大部分代码转换为由Chromatic支持的Modern Perl范例.我有写网页的ZERO经验.(偶尔会出现Word保存为网页).
我相信我知道开始使用哪些工具,我只是难以使用他们的开始文档以及学习工具的顺序.
Perl:我都在这里.
舞者:我创建了一个网站,但我很丢失,而cpan文档让我更加困惑.我不知道如何将这些网站与Apache集成,而不是使用Dancer附带的迷你服务器.
模板工具包:这个看起来最直接,我有O'Reilly的书.对于看似简单的东西来说,这似乎是一本非常大的书,所以我知道我错过了一些东西.
HTML:我应该学到多少钱?什么是最好的学习路径?
最终,最好的是"使用Perl从头开始构建现代网站"教程,书籍,视频系列或网站.
请问,从哪里开始?
我有一些Perl代码,我注意到一个数组与前导反斜杠一样使用 \@array
任何人都可以解释它是什么意思吗?
Perl有多处理模块吗?与Python的多处理模块提供的功能类似的东西.
我知道我可以使用Perl构建类似的功能,但我正在寻找已经实现的功能.
我想http://www.example.com/在Perl脚本的末尾打开一个URL,例如.我不想使用WWW :: Mechanize访问它,但实际上是在图形Web浏览器中向用户显示该网页.
有办法在Mac(open URL)和Windows中执行此操作,但我想要一个适用于任何操作系统的解决方案,而不仅仅是一个.