首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中使用DirectX进行快速屏幕捕获(从C#中的现有代码重写到Java)

在Java中使用DirectX进行快速屏幕捕获(从C#中的现有代码重写到Java)
EN

Stack Overflow用户
提问于 2012-09-05 01:14:37
回答 1查看 1.6K关注 0票数 5

我的目标是使用在Java中使用DirectX捕获屏幕。我发现这个项目非常详细,并在这里中解释了C#。

不幸的是,我没有任何C夏普的知识。我不知道在这里是否可以要求上面提到的从C#到Java的代码重写到处理这两种语言的人,但是我想最终的结果会让很多人感兴趣。

无论如何,我要感谢那些能在这方面帮助我的人。即使我从未尝试过,我也知道C# -> Java转换软件(或任何其他语言)是不建议的,这解释了我的重写的问题。

请参阅以下有关守则:

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SlimDX.Direct3D9;

namespace KMPP
{
public class DxScreenCapture
{
    Device d;

    public DxScreenCapture()
    {
        PresentParameters present_params = new PresentParameters();
        present_params.Windowed = true;
        present_params.SwapEffect = SwapEffect.Discard;
        d = new Device(new Direct3D(), 0, DeviceType.Hardware, IntPtr.Zero, CreateFlags.SoftwareVertexProcessing, present_params);
    }

    public Surface CaptureScreen()
    {
        Surface s = Surface.CreateOffscreenPlain(d, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Format.A8R8G8B8, Pool.Scratch);
        d.GetFrontBufferData(0, s);
        return s;
    }
}
}

PS:由于Surface是一种DirectX类型的图像,我会很感兴趣的,然后把它转换成PNG。

EN

回答 1

Stack Overflow用户

发布于 2012-09-05 01:45:20

Java不是C

C#与java完全不同。C#可以使用DirectX,但是java不能使用它,因为DirectX在所有平台上都不可用。相反,您可以使用Robot包中的java.awt类。下面是如何获取image的方法。

用机器人做的

代码语言:javascript
运行
复制
Dimension ss = Toolkit.getDefaultToolkit().getScreenSize();
Robot r = new Robot();
BufferedImage s = r.createScreenCapture(new Rectangle(ss));

它返回一个包含屏幕截图的BufferedImage

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12273300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档