在我的全屏WPF应用程序中切换窗口时,如果是第一次显示屏幕,显示器将在显示窗口之前暂时变黑.这仅在第一次显示窗口时发生.有没有办法预加载每个窗口,所以这不会发生?
这就是我尝试过的:
myWindow.Show();
myWindow.Hide();
Run Code Online (Sandbox Code Playgroud)
但是有一个明显的闪烁.
然后我尝试了:
myWindow.Height = 0;
myWindow.Width = 0;
myWindow.WindowState = WindowState.Normal;
myWindow.Show();
myWindow.Hide();
myWindow.Height = Screen.PrimaryScreen.Bounds.Height;
myWindow.Width = Screen.PrimaryScreen.Bounds.Width;
myWindow.WindowState = WindowState.Maximized;
Run Code Online (Sandbox Code Playgroud)
没有闪烁,但当我然后显示窗口时,它显示自己处于奇怪的状态一瞬间然后更新以正确显示.
我需要加快我的图像查看器,并想知道我是否应该考虑创建自己的DirectX控件来执行此操作.
我的图像查看器显示医学图像.它们可能非常大.乳房X线照相术我们说的是55mb.像素数据是存储在ushort阵列中的16位灰度级.在没有深入细节的情况下,我目前的方法是将像素数据加载到ImageSource中,并使用WPF Image控件.
我从未对DirectX做过任何事情.值得深入探讨吗?它会比原生WPF更快吗?如果是这样有多大?或者,我应该忘记DirectX并研究可以改进现有方法的领域吗?
在有人这么说之前,我知道WPF使用DirectX.我想知道如果删除WPF层并自己编写DirectX将提高性能.
我有一个未定义的显示上下文数,每个都会显示一个纹理.当我调用glGenTextures时,我会在所有显示上下文中返回相同的名称.这会有用吗?即使它们具有相同的名称,它们仍会存储和显示不同的纹理吗?如果不是应该做些什么来解决这个问题?
我有两个需要相互交谈的应用程序.App1需要能够序列化App2然后可以反序列化的对象.轻松完成,对吧?这是问题所在; App1基于C#,App2基于Java.因此App1需要以Java二进制文件格式写出文件.如何才能做到这一点?
我看到它的方式,我有两个选择.第一个是弄清楚在C#中序列化Java对象的一些方法,以便App1只创建适当的文件.我的另一个选择是用Java编写一个转换器来读取文件并相应地填充对象并序列化新填充的对象.这样C#app只需写出转换器然后解释的某种格式化文本文件.
我无法对Java应用程序进行任何更改.
该怎么做?
更新:
Java应用程序已经掌握在客户手中,因此更改序列化方案会导致客户现有数据不兼容.Java App在处理此对象时使用本机java序列化.不能对Java应用程序进行修改.
C#app使用协议缓冲区来序列化自己的数据.
我正在开发一个显示16位灰度图像的应用程序.应用程序的UI最初是使用Win Forms创建的,由于Win Forms不支持16位灰度,我编写了一个自定义的openGL控件来显示图像.在过去的几个月里,我们将UI转换为WPF,但继续通过WindowsFormsHost使用openGL图像显示.
WPF是基于DirectX的,所以尝试摆脱openGL是有意义的,但WPF本身是否支持16位灰度图像?或者我是否必须创建DirectX控件?
此外,openGL控件不仅用于显示图像数据.控制器允许用户以各种方式操作图像(翻转,旋转,缩放,平移,裁剪等); 以及注释图像(绘制线条,矩形,测量角度等).如果我只是使用WPF来显示图像,我如何使用WPF进行操作和注释?另外,我使用着色器在图像纹理上进行一些颜色映射.WPF是否可以这样,或者我必须在显示前手动对图像数据进行颜色映射?
我从未使用过DirectX,所以如果需要编写DirectX控件,学习和实现我需要的东西有多难?
我创建了一个小守护进程(基本上是一个隐藏控制台并运行的控制台应用程序).
我需要将其发送给用户,并尝试使用不同的扩展名重命名可执行文件,通过电子邮件将其发送给用户,并让他们将其重命名为正确的名称.
当我通过电子邮件发送给自己进行测试时,这似乎有效.但是,当用户尝试运行可执行文件时,它会生成以下错误消息:
此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决问题.
我究竟做错了什么?