gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:03 30 4
gpt4 key购买 nike

我的目标是在 Java 中使用 DirectX 捕获屏幕。 我发现该项目非常详细并进行了解释 here在 C# 中。

不幸的是,我对升 C 没有任何了解。我不知道我是否可以在这里向那些处理这两种语言的人提出从 C# 到 Java 的重写代码,但我想最终的结果会引起很多人的兴趣。

无论如何,我提前感谢那些愿意帮助我解决这个问题的人。即使我从未尝试过,我也知道不建议使用 C# -> Java 转换软件(或任何其他语言),解释我的重写问题。

请在下面找到相关代码:


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 s 在这里是 DirectX 类型的图像,因此我很感兴趣然后将其转换为 PNG。

最佳答案

Java 不是 C#

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

用机器人做

Dimension ss = Toolkit.getDefaultToolkit().getScreenSize();
Robot r = new Robot();
BufferedImage s = r.createScreenCapture(new Rectangle(ss));

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

关于c# - 在 Java 中使用 DirectX 进行快速屏幕捕获(从 C# 中的现有代码重写到 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273300/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com