彩票走势图

高性能图表控件LightningChart出现闪电图全黑问题解答

翻译|使用教程|编辑:杨鹏连|2021-02-01 11:41:19.337|阅读 377 次

概述:本文主要介绍了高性能图表控件LightningChart出现闪电图全黑问题解答。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。

LightningChart.NET现已加入在线订购,SignalTools , 12 months, WPF版本原价4105元,现价只需3499元,现在抢购立享优惠!立即购买>>

点击下载LightningChart.NET最新试用版

问题:使用LightningChart的winforms程序,出于某种原因我覆盖了Form类中的CreateParams,并将LightingChart放在自定义面板中,然后LightningChart会变成全黑,我在某些地方做错了吗?附加的文件演示项目仅覆盖CreateParams,并且在启动时将显示黑屏,然后转到正确的内容,但是在我的程序中,它一直都是黑屏。

启动

图片

后正常启动后为

图片

黑色
图片
回复:闪电图全黑

覆盖CreateParams的代码

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;
        return cp;
    }
}
我们试图通过您共享的测试项目来重现此问题,但无法产生图表完全黑的情况。

项目中有两种形式,ReadData和Form1。两者都可以使用CreateParams添加。

ReadData首先为黑色,然后显示图表。

读数据

ReadData.PNG(21.89 KiB)查看1068次

Form1首先是透明的,然后显示图表。
表格1.PNG

问题是否在您计算机上的测试项目中发生?如果是这样,那么如果您忽略CreateParams,则图表是否可以正常显示?这将说明原因是否实际上是CreateParams。

完全黑图的唯一已知情况是缺少一些参考。在测试项目中,它们似乎是正确的,但以防万一您可以测试添加Arction.DirectXFiles.dll,DirectXInit.dll和Arction.MathCore.dll。


如前所述,如果缺少一些参考,可能会出现全黑图表。我们的用户手册第29.1章提供了完整的参考列表。在开发时,不一定需要所有这些文件,例如,如果已经在计算机中的某个位置找到DirectX -files。引用所有列出的部件可以解决黑图问题。

但是,如果渲染DeviceType SoftwareD11可以工作,但是HardwareD11或Hardware D9不能工作,则驱动程序本身可能有问题,因为它们可能有错误或过时。因此,将驱动程序更新到最新版本会有所帮助。

通常,可以在构造LightningChart之后立即侦听ChartMessage -event并在其中调用CheckEngineResult()-方法来捕获RenderingEngine错误。例如:

private void _chart_ChartMessage(ChartMessageInfo info)
        {
            info.ToString(); //= log message
 
            if (info.MessageType == MessageType.RenderDeviceCreateFailed || info.MessageType == MessageType.MemoryAllocationError)
            {
                CheckEngineResult();
            }
       }
 
 
private void CheckEngineResult()
        {
            var results = _chart.GetLastEngineInitResults();
 
            foreach (var engineInitResult in results)
            {
                string sLog = string.Format("Engine {0}. Success:{1}", engineInitResult.DeviceType, engineInitResult.Success);
 
                foreach (var exception in engineInitResult.Exceptions)
                {
                    sLog = string.Format("{0}\n Exception: {1}", sLog, exception.Message);
                }
                System.Diagnostics.Debug.WriteLine(sLog);
            }
       }
我们对此问题进行了更多调查,并且有可能重现了该问题。使用CreateParams时,应用程序中发生了以下情况吗?

启动应用程序后,将绘制诸如按钮之类的WinForms控件,但图表仍为黑色(下面的左图)。短时间后,将绘制图表(下图为右图)。

BlackChart.png
您要完成的图表行为是什么?是否应该同时绘制控件和图表?在这种情况下,您很可能不得不以某种方式延迟控件的绘制。这可以通过重写OnPaint方法或使用SuspendLayout和ResumeLayout来完成。但是,一种解决方法是隐藏控件,直到绘制图表为止。换句话说,将所有控件的Visible属性默认设置为false,然后在图表的Paint事件中将其设置为true。下面的示例代码仅在绘制图表后才显示所有按钮。
_chart.Paint += _chart_Paint;

        private void _chart_Paint(object sender, PaintEventArgs e)
        {
            _chart.Paint -= _chart_Paint; // Do this only once.
            foreach (var b in this.Controls.OfType<Button>())
            {
                b.Visible = true;
            }
        }

如果对此有任何疑问,以获取更多信息。

想要购买LightningChart正版授权,或了解更多产品信息请点击


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP