有谁知道如何捕捉在Java中的屏幕截图(不是它自己的屏幕,但在桌面上的任何其他窗口,他们并不一定是积极的窗口)在Windows?这个类似的主题有很多线索,但我还没有找到答案.
我尝试过使用JNA,但经过几次尝试后卡住了.例如...
public class Main {
public static void main(String[] args) {
Main m = new Main();
List<WindowInfo> list = m.getWindows();
for (int i=0;i<list.size();i++)
{
WindowInfo info = list.get(i);
System.out.println(info.getTitle());
}
WindowInfo wi = list.get(0);
W32API.HDC hdcSrc = User32.instance.GetWindowDC(wi.getHwnd());
W32API.HDC hdcMemory = Gdi32.instance.CreateCompatibleDC(hdcSrc);
//W32API.HBITMAP hBitmapMemory = Gdi32.instance.CreateCompatibleBitmap(hdcSrc, int width, int height);
int width = wi.getRect().right - wi.getRect().left;
int height = wi.getRect().bottom - wi.getRect().top;
W32API.HBITMAP hBitmapMemory = Gdi32.instance.CreateCompatibleBitmap(hdcSrc, width, height);
W32API.HANDLE hOld = Gdi32.instance.SelectObject(hdcMemory, hBitmapMemory);
Gdi32.instance.BitBlt(hdcMemory, 0, …Run Code Online (Sandbox Code Playgroud) 我正在用Java编写一个工具,它在Graphics对象上做了一点点绘图.
但是,我遇到了一个我不太清楚如何解决的问题.希望有人可以提供帮助.
如何确定Graphics对象上的点x,y是否接触从例如200,200到392,144的行.
听起来很简单,但我很难过......帮忙!
我正在编写一个用Java编写的系统工具,基本上,它在t0开始一个任务,并在N秒内完成.因为我预计此工具可以在不同的计算机上运行,所以执行任务的时间会有所不同.
因此,在此工具开始之前,它需要进行一次性校准,以便能够准确预测任务完成所需的时间("准确",因为1到3秒就可以了).
基本上我有x和y的测量值,在N秒内完成...
x y N Seconds ------------------------------------------------------------ 1.0 15 5.54 1.5 15 3.64 2.0 15 2.73 1.0 35 12.7 1.5 35 8.44 2.0 35 6.23 1.0 55 19.9 1.5 55 13.8 2.0 55 10.3
鉴于上面的测量,我可以得出一个神奇的公式,"如果任务要在15秒内完成,那么x必须是"blah",y是"blah".
显然数学不是我的强项,是一个公式甚至可能吗?
谢谢!