jjzjj

RenderTargetBitmap

全部标签

c# - DrawingContext到位图文件

我有一个DrawingContext(Visual或DrawingGroup的一部分),在这里我彼此绘制一堆矩形和/或1位图像。可以将其视为1位蒙版图像。我想将其转换为位图图像文件。不能使用RenderTargetBitmap,因为它只能以32位像素格式进行渲染,因此,如果我必须渲染20MB的1位图像,则最终堆上将有640MB(20*32)的内存。当然,这会产生很大的LOH碎片,并且应用程序在第二次运行时内存不足。因此,我基本上需要一种从绘图上下文中高效写入1位位图文件的方法。任何想法/建议/替代方法将不胜感激。 最佳答案 有很多想

c# - 在 Windows Phone 8.1 中共享渲染到位图图像

我想在WindowsPhone8.1中将我的Canvas作为图像共享。为此,我首先将我的Canvas转换为图像然后共享它。我尝试了我的Windows8.1代码。没有出现错误,但共享源应用程序中没有图像,仅出现描述和标题。代码如下:privateasyncvoidDataTransferManager_DataRequested(DataTransferManagersender,DataRequestedEventArgse){e.Request.Data.Properties.Title="Myapp";e.Request.Data.Properties.Description="a

c# - Master-Details View 中的 RenderTargetBitmap GDI 句柄泄漏

我有一个带有主从View的应用程序。当您从“主”列表中选择一个项目时,它会使用一些图像(通过RenderTargetBitmap创建)填充“详细信息”区域。每次我从列表中选择不同的主项时,我的应用程序使用的GDI句柄数量(如ProcessExplorer中所报告)都会增加-并最终下降(或有时锁定)在10,000个GDI句柄处使用。我不知道如何解决这个问题,因此非常感谢任何关于我做错了什么的建议(或者只是关于如何获取更多信息的建议)。我在名为“DoesThisLeak”的新WPF应用程序(.NET4.0)中将我的应用程序简化为以下内容:在MainWindow.xaml.cs中public

c# - 如何将 XPS 文件转换为高质量的图像(而不是模糊的低分辨率)?

我正在尝试使用WPF转换XPS。想法是这些图像可以用silverlight4加载,为此我使用以下代码://XPSDocumentXpsDocumentxpsDoc=newXpsDocument(xpsFileName,System.IO.FileAccess.Read);FixedDocumentSequencedocSeq=xpsDoc.GetFixedDocumentSequence();//ThenumberofpagesPageCount=docSeq.References[0].GetDocument(false).Pages.Count;DocumentPagesizePa

c# - 如何在 UWP Windows 10 应用程序中将 InkCanvas 渲染为图像?

RenderTargetBitmap类使用简单的Canvas+InkManager(在Windows8.1中)将墨迹渲染到图像。UWP介绍InkCanvas和一个新的InkingAPI。但是,似乎RenderTargetBitmap不适用于此。当我尝试使用RenderAsync方法捕获墨迹笔划时,没有墨迹笔划只呈现其他对象,如矩形等。这是一个错误还是这个新的API不应该以这种方式使用?如果没有,那么如何使用InkCanvas渲染图像?谢谢! 最佳答案 这是我用Win2D解决这个问题的方法。首先,将Win2D.uwpnuget包添加到

c# - 由于非托管内存处理的延迟导致内存不足?

我的应用程序因内存不足异常而崩溃,有时其他异常也可能是由内存不足引起的。我用这个简单的代码重现了这个问题:for(inti=0;i理论上这段代码不应该崩溃,因为位图应该被自动垃圾收集,但在32位模式下运行时它会持续崩溃。问题可以这样解决:for(inti=0;i当然,这个解决方案与您不应显式调用GC.Collect的常识相悖,但我怀疑这是一个它确实有意义的场景。任何人都可以对此提供任何知情的见解吗?有没有更好的方法来解决这个问题? 最佳答案 RenderTargetBitmap很可能有与其关联的native资源。您有足够的托管内存(

c# - RenderTargetBitmap 和 Viewport3D - 质量问题

我想将3D场景从Viewport3D导出​​到位图。执行此操作的明显方法是使用RenderTargetBitmap——但是当我这样做时,导出位图的质量明显低于屏幕图像。在互联网上环顾四周,似乎RenderTargetBitmap没有利用硬件渲染。这意味着渲染是在Tier0完成的。.这意味着没有mip-mapping等,因此导出图像的质量会降低。有谁知道如何以屏幕质量导出Viewport3D的位图?澄清虽然下面给出的示例没有显示这一点,我最终需要将Viewport3D的位图导出到一个文件中。据我所知,唯一的方法是将图像导入派生自BitmapSource的东西。下面的Cplotts显示使用

c# - 在 Windows Phone 8.1 中如何将 IBuffer 转换为字节数组?

我正在为WindowsPhone8.1编写应用程序。我需要将UIElement保存为图像文件(我更喜欢JPG或PNG)。我正在使用RenderTargetBitmap类来执行此操作。在我的UIElement上调用方法RenderAsync后,我创建了一个IBuffer,其中包含我的RenderTargetBitmap的方法GetPixelsAsync()的结果。现在我需要调用方法ToArray()将我的IBuffer转换为字节数组以使用类似BitmapEncoder的东西保存我的图像,但似乎在WindowsPhone8.1上没有任何用于IBuffer的ToArray()方法,而在Win

c# - RenderTargetBitmap 和 DPI

我不明白为什么RenderTargetBitmap上的DPI参数会像它们看起来那样使用。我经常看到通过基于DPI调整图像大小来处理非标准DPI设置的代码,如下所示:newRenderTargetBitmap((int)(width/96d)*dpi,(int)(height/96d)*dpi,dpi,dpi,PixelFormats.Pbgra32);例子:http://blogs.msdn.com/b/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx(通过web.archive.org)ContentControl+Rend

c# - RenderTargetBitmap 和 DPI

我不明白为什么RenderTargetBitmap上的DPI参数会像它们看起来那样使用。我经常看到通过基于DPI调整图像大小来处理非标准DPI设置的代码,如下所示:newRenderTargetBitmap((int)(width/96d)*dpi,(int)(height/96d)*dpi,dpi,dpi,PixelFormats.Pbgra32);例子:http://blogs.msdn.com/b/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx(通过web.archive.org)ContentControl+Rend