C# 捕获桌面并用作纹理?

C# 捕获桌面并用作纹理?,c#,unity3d,C#,Unity3d,我读过很多关于在Unity3D中截图的例子,但它们都解释了“游戏中”截图。我想在我的桌面上拍摄一个应用程序窗口的截图,并将其作为纹理绘制到游戏对象上 你知道我该怎么做吗?我只使用过Unity3D几次,因此希望您能提供一些指导,说明这是否可行,以及我如何实现这一点 我知道我可以编写一些常规的C#应用程序,用它来归档并读取Unity3D中的图像。但是,我不希望写入磁盘 目前,我所能做的就是得到一个“游戏内”截图 void LateUpdate() { //I know that I coul

我读过很多关于在Unity3D中截图的例子,但它们都解释了“游戏中”截图。我想在我的桌面上拍摄一个应用程序窗口的截图,并将其作为纹理绘制到游戏对象上

你知道我该怎么做吗?我只使用过Unity3D几次,因此希望您能提供一些指导,说明这是否可行,以及我如何实现这一点

我知道我可以编写一些常规的C#应用程序,用它来归档并读取Unity3D中的图像。但是,我不希望写入磁盘

目前,我所能做的就是得到一个“游戏内”截图

void LateUpdate()
{
    //I know that I could load an image from file here...
    Texture2D tex = new Texture2D(Screen.width, Screen.height);
    tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    tex.Apply();
    display.material.mainTexture = tex;
}

我认为您应该使用DLL。
看看这里


他解释了如何在Visual C中捕获窗口句柄。我认为您可以找到一个桌面句柄(在Win7+上)并捕获它,然后使用DLL将其发送给unity。

我认为您应该使用DLL。
看看这里


他解释了如何在Visual C中捕获窗口句柄。我认为您可以找到一个桌面句柄(在Win7+上)并捕获它,然后使用您的DLL将其发送给unity。

制作一个屏幕截图,将其保存到您的资产文件夹,为其创建一个材质,分配给您想要分配给的任何对象?还是我完全误解了?@是的,对不起,我已经考虑过了,并将其添加到帖子中。请查看更新。我仍然不了解您试图归档的内容^^^如果只是一个屏幕截图,请制作一个屏幕截图(就像使用键盘上的printscreen键一样)。或者你想要一些桌面应用程序的实时数据吗?我想捕获桌面上所有打开的窗口(MS Word、Excel等),并将这些捕获显示在游戏对象上。我不想写入磁盘。桌面应用程序的实时流几乎就是这样。@是的,他想要整个设备的屏幕截图,而不是unity中运行的游戏的屏幕截图。例如,当unity应用程序没有全屏运行时,他希望能够拍摄屏幕上显示的内容。unity应用程序和屏幕上的其他内容。制作一个屏幕截图,将其保存到您的资产文件夹中,为其创建一个材质,分配给您希望分配给的任何对象?还是我完全误解了?@是的,对不起,我已经考虑过了,并将其添加到帖子中。请查看更新。我仍然不了解您试图归档的内容^^^如果只是一个屏幕截图,请制作一个屏幕截图(就像使用键盘上的printscreen键一样)。或者你想要一些桌面应用程序的实时数据吗?我想捕获桌面上所有打开的窗口(MS Word、Excel等),并将这些捕获显示在游戏对象上。我不想写入磁盘。桌面应用程序的实时流几乎就是这样。@是的,他想要整个设备的屏幕截图,而不是unity中运行的游戏的屏幕截图。例如,当unity应用程序没有全屏运行时,他希望能够拍摄屏幕上显示的内容。unity应用程序和屏幕上的其他东西。