Tag: screenshot

通用Windows库(UWP)获取截图的方式?

我想创建一个ScreenCaptureLib.dll,旨在为通用Windows构建。 我们已经使用Windows.Forms进行了以下操作: https : //github.com/ShareX/ShareX/tree/master/ShareX.ScreenCaptureLib 显然,没有一个Windows窗体代码不起作用,我想在正确的方向上一些指针开始。 我很感激你的帮助。 谢谢迈克尔

C#截图winlogon以及用户桌面

我正在使用屏幕共享项目。但我遇到了捕获安全桌面的麻烦。 我已经在这里提出相关问题并得到了答案 请通过以上链接 正如dymanoid所暗示的那样。 我正在使用PsExec exe来捕获安全的桌面/ winlogon桌面,如下所示 / x和/ s开关在SYSTEM帐户和Winlogon桌面下运行该进程。 PsExec / i / h / x / d / s“path_ \ screencapture.exe” 现在screencapture exe在winlogon桌面上作为SYSTEM帐户运行,我能够在用户登录屏幕上看到screencapture exe,但在用户桌面屏幕上看不到。 现在反过来我能够捕获用户登录屏幕而不是用户桌面。 用户桌面给我空/黑屏。 如果我从命令中删除/ x如下所示,我可以得到userdesktop不安全的桌面 PsExec / i / h / d / s“path_ \ screencapture.exe” 我的问题是,有没有办法做到这一点

XNA截图显示了Bloom之前,而不是最终渲染

我有一个使用Reach图形设置在C#XNA 4.0中编码的Windows平台游戏。 我的项目基于GameStateManagement示例,但后来我添加了Bloom和spriteSheet / spriteBatchfunction。 我希望保存最终屏幕输出的屏幕截图。 但是,当我保存我的截图时,它只显示Bloom应用之前和我的HUD文本显示之前的渲染(我在Bloom之后绘制)。 在这两个过程之后,我的Draw方法结束时保存了截图。 我尝试过各种各样的事情。 安德鲁的答案在这里拍摄XNA中的屏幕截图很有帮助并且保存了图像; 但是,它并没有保存最终渲染。 我有一种感觉它与绽放过程或spograbatch有关。 这是我的代码: example { public override void Draw(GameTime gameTime) { ScreenManager.GraphicsDevice.SetRenderTarget(sceneRenderTarget); // Clear the screen to black ScreenManager.GraphicsDevice.Clear(ClearOptions.Target, Color.Black, 0, 0); SpriteBatch spriteBatch = ScreenManager.SpriteBatch; spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend); // then i draw all my game stuff spriteBatch.End(); #region Post-Processing & Bloom ScreenManager.GraphicsDevice.SamplerStates[1] = SamplerState.LinearClamp; // […]

WPF使用C#从UIElement截取JPG

我正在尝试从我的部分WPF应用程序创建JPG。 就像截图一样,只有个别的UIElement 。 我从这里开始: http : //www.grumpydev.com/2009/01/03/taking-wpf-screenshots/ 我正在使用他的扩展方法,该方法允许您使用UIElement.GetJpgImage()获取byte []。 然后可以使用文件流将其写入JPG图像。 如果我制作整个窗口的JPG,它看起来很好! 但是,这并不理想,因为它只捕获用户看到的内容。 由于滚动查看器而无法显示的内容或因为其父级动画为小尺寸而无法显示的内容。 如果我拍摄一个“截图”,例如我用于布局的网格: alt text http://img697.imageshack.us/img697/4233/fullscreenshot2.jpg 我得到了这个黑色背景的垃圾。 我不希望这样。 此外,如果我使用动画折叠了这个网格的高度,我根本不会得到任何东西。 这些实际上是模板化的复选框,它们上面应该有黑色文本,网格的背景应该是白色的。 这是其他人写的代码,用于返回写入文件流的byte []数组: public static byte[] GetJpgImage(this UIElement source, double scale, int quality) { double actualHeight = source.RenderSize.Height; double actualWidth = source.RenderSize.Width; double renderHeight = actualHeight * scale; double renderWidth = actualWidth * scale; RenderTargetBitmap […]

WebBrowser.DrawtoBitmap()一致地为少数站点生成空白图像

我一直在我的asp.net页面中使用WebBrowser.DrawtoBitmap()在单独的STA线程中运行,以将网页捕获为图像。 但我发现我一直在为少数网站拍摄空白图像。 我知道这种方法不是“正式”支持的,但如果有人可以为我提供任何理由或解决这些空白图像问题,那就太好了。

如何用C#和WebKit.NET捕获完整的网站截图?

我正在使用WebKit.NET在我的C#应用​​程序中集成浏览器组件。 问题是我只能用截图捕获浏览器窗口中的可见部分。 有没有办法捕获整个页面的屏幕截图?

捕获最小化的远程桌面的屏幕截图

我有以下C#代码,我用它来捕获远程桌面(RDP)会话中的屏幕截图。 它在会话处于活动状态时工作正常,但如果我最小化会话,则会因无效的句柄exception而失败。 是否有任何方法可以使这项工作,或者当会话最小化时屏幕基本上“消失了”? string filename = @”C:\Snap.png”; Size bitmapSize = new Size( Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height ); using (Bitmap bitmap = new Bitmap(bitmapSize.Width, bitmapSize.Height, PixelFormat.Format24bppRgb)) using (Graphics graphics = Graphics.FromImage(bitmap)) { graphics.CopyFromScreen( // Exception thrown here new Point(0, 0), new Point(0, 0), bitmapSize); bitmap.Save(filename, ImageFormat.Png); }

用c#捕捉游戏画面的最快方法(每秒超过20张图像)

如何快速制作整个游戏画面的大屏幕? 像每秒20-30的东西?(我想将它们转换为video) [[1]]我尝试过WMEncoder。结果是WMEncoder只能使用一组预先配置的编解码器以video格式(wma)捕获屏幕和屏幕区域。 (29 fps最佳编码结果).WMEncoder无法制作截图。 [[2]]我试过DirectX: Surface s = device.CreateOffscreenPlainSurface( Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Format.A8R8G8B8, Pool.SystemMemory); device.GetFrontBufferData(0, s); SurfaceLoader.Save(“c:\\Screenshot”+i.ToString()+”.bmp”, ImageFileFormat.Bmp, s); 这就像gdi ..very slow ….它只适用于DirectX 1.0,因为在DirectX 2.0中不存在SurfaceLoader 我在一些post中读到的另一种方式是使用: s = device.GetBackBuffer(0, 0, Microsoft.DirectX.Direct3D.BackBufferType.Mono); ,但这只是截图到了当前的窗口。 [[3]]我曾尝试使用Taksi(在sourceforge.net上)…但我不知道如何在c#中使用它并让它工作。 请帮帮我…

使用C#,WPF和DWM保存窗口的屏幕截图

这是对这个问题的后续问题 上述解决方案使用DWM显示活动窗口的缩略图。 如果我理解正确,它的工作原理是让你指定要查看的应用程序的窗口句柄,然后让你提供一个窗口句柄和窗口上应该绘制目标窗口内容的位置。 有没有办法将窗口屏幕直接渲染到BitmapImage或Image而不是直接在窗口中的某个位置绘制? (基本上只是抓住窗口的屏幕截图 – 即使它被另一个窗口覆盖 – 没有使用更新缩略图。) 谢谢你的帮助!

如何获取截图以包含调用窗口(在XP上)

我有代码截取屏幕截图… Size ssSize; int ssX, ssY, ssWidth, ssHeight; Bitmap thisScreenshot; Graphics gfxScreenshot; public Image Screenshot() { ssX = Screen.PrimaryScreen.Bounds.X; ssY = Screen.PrimaryScreen.Bounds.Y; ssWidth = Screen.PrimaryScreen.Bounds.Width; ssHeight = Screen.PrimaryScreen.Bounds.Height; ssSize = Screen.PrimaryScreen.Bounds.Size; thisScreenshot = new Bitmap(ssWidth,ssHeight); gfxScreenshot = Graphics.FromImage(thisScreenshot); return((Image)gfxScreenshot.CopyFromScreen(ssX, ssY, 0, 0, ssSize)); } 在W7上,结果图像包括调用窗口的像素; 但在XP上却没有。 我希望图像始终包含调用进程/窗口的像素。 任何线索我怎么能强迫这个? UPDATE1:我已经做了更多的实验,结果我更加困惑……我拿了上面的代码并创建了一个完全独立的应用程序,这样我和最初启动的应用程序之间就没有任何关系来自。 奇怪的是,我仍然没有在屏幕截图中看到该应用程序的窗口。 所以现在我做截图的过程和我想要包含在屏幕截图中的窗口之间没有任何关系; 然而,那个窗口仍未包括在内。 我确实尝试过PRNT-SCRN按钮,其中包括窗口。 请注意,这只是XP上的一个问题。