Tag: direct2d

如何使用SharpDX中的文件字体?

我想为windows 8 app生成图像,我将使用SharpDX API 这是我感谢应对和粘贴的代码示例 private MemoryStream RenderStaticTextToBitmap() { var width = 400; var height = 100; var pixelFormat = WicPixelFormat.Format32bppBGR; var wicFactory = new ImagingFactory(); var dddFactory = new SharpDX.Direct2D1.Factory(); var dwFactory = new SharpDX.DirectWrite.Factory(); var wicBitmap = new Bitmap( wicFactory, width, height, pixelFormat, BitmapCreateCacheOption.CacheOnLoad); var renderTargetProperties = new RenderTargetProperties( RenderTargetType.Default, new D2DPixelFormat(Format.Unknown, AlphaMode.Unknown), […]

Direct2D / GDI +和慢速Windows表格绘图 – 可以做什么?

我正在使用Visual Studio 2008,.NET C#2.0-3.5和Windows Forms进行大量工作,我注意到,就像我之前的许多人一样,GDI +在绘制控件时非常慢。 请注意 ,我不会非常处理图像(JPG,GIF等)。 图像仅在某些地方作为图标。 这实际上是控件/表格/等,绘制速度很慢。 问题在于您可以看到正在绘制的控件,并且可能需要几秒钟才能绘制一组看似简单的控件。 即,它的滞后和可怕。 我已经进行了测试,我只是在表格上放了一些标签(40-50),按F5运行并且必须等待它们被绘制。 再次,滞后,而不是一个非常好的经验。 那么,WPF可能会解决这个问题,但我/我们还没有准备好转向WPF。 所以我正在寻找解决方法或修复方法,我偶然发现了Direct2D,并在阅读其他一些库时。 让我有点困惑,因此这些问题: 1)首先,我想要的是一个相当简洁的方法,用更快的速度和硬件加速方法替换 GDI +。 是否可以在不转到WPF且无需重写所有Windows窗体代码的情况下执行此操作? 每当我在Direct2D上阅读任何内容时,我都会看到通常可怕的C ++代码的长块,告诉我如何手动编写代码来绘制。 我不要那个。 2)在网上阅读时,我偶然发现了SlimDX,但我无法弄清楚如何使用它(我承认,我写作时并没有尝试过)。 可以说我已经有了一个GUI应用程序(Windows窗体,标准C#代码) – 我可以以某种方式使用SlimDX(或类似的东西)来“替换”GDI +而不需要太多的重写吗? 我的问题是我找不到任何示例或告诉我是否可以在我已经创建的Windows窗体软件中使用SlimDX,Direct2D或其他类似的东西,如果可能的话 – 如何做到这一点。 希望我不要太模糊=) ==编辑== 2010-09-22 我在我的真实应用程序中进行了一些测试,并将其中一个缓慢的事情分离出来: 当我向UserControl中的某些标签添加文本时,控件会自行resize以适合文本。 例如,包含GroupControl的位会适应刚刚添加到标签的.Text属性的文本的大小。 大约有10个Label控件。 第一次更新标签,从而更改尺寸时,整个过程大约需要500毫秒。 标签第二次更新, 没有大小更改,大约需要0毫秒。 ==编辑2 == 2010-09-22 发现其中一个减速。 然后将一个String添加到Text-property,如果正在添加的文本的字符串长度与更新之前的文本不同,则它很慢。 我使用DevExpress库,LabelControls可以设置为AutoSizeMode。 如果我将其设置为“无”,则在添加长度与前一文本不同的文本时,滞后将消失。 我猜这个问题对于普通的Label-control是相同的,因为它也有一个AutoSize = true / false设置。 然而,它是一个“解决方法”,但仍然certificate了我的观点 […]