5

私の目的は、Java で DirectX を使用して画面をキャプチャすることです。プロジェクトが完全に詳細に説明されており、ここで 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 に変換するのは興味深いことです。

4

1 に答える 1

-2

Java は C# ではない

C# は Java とはまったく異なります。C# は使用できますDirectXが、DirectX はすべてのプラットフォームで利用できなかったため、Java は使用できません。代わりに、パッケージRobotに存在するクラスを使用できます。java.awtの入手方法はこちらimage

ロボットでやる

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

BufferedImageスクリーンショットを含む を返します。

于 2012-09-05T01:45:20.017 に答える