标签: visiblox

VISIBLOX,WPF:获取图表点以水平滚动?

我正在使用Visiblox WPF API并且无法在折线图中获取图表点以水平滚动.而不是滚动,点被压扁在一起,其中,这不是特别的问题,除了我期望在图表上有100个数据点.我查看了Visiblox网站上的所有示例,但找不到我想要的内容.我附上了一个示例截图.

有任何想法吗?

谢谢你的帮助,Sparky

例

c# wpf charts xaml visiblox

13
推荐指数
1
解决办法
1370
查看次数

C#silverlight中的DispatcherTimer和UI刷新限制

我再次为一个对你们所有人都很简单的问题道歉.我对Silverlight幕后的内容知之甚少.

我有一个图表应用程序(Visiblox),我用它作为滚动范围每20ms更新一次,添加和删除一个点.在伪代码中:

List<Point> datapoints= new List<Point>();
Series series = new Series(datapoints);
void timer_tick(){
  datapoints.Add(new Point);
  datapoints.RemoveAt(0);
  // no need to refresh chart, it does refresh automatically
}
Run Code Online (Sandbox Code Playgroud)

在此图表工具中运行6系列时,它开始显示有点迟缓.将刻度线更改为10毫秒没有任何区别,图表以相同的速度更新,因此似乎20ms是速度限制(UI或图表?).

我试过CompositionTarget.Rendering并得到了相同的结果:在20ms以下,速度没有差别.

然后我意外地启用了两个并且速度加倍.所以我测试了多个线程(2,3,4),速度加倍,三倍和四倍.这还没有锁,因为我甚至不知道生成锁定需要什么进程,但没有数据损坏和内存泄漏.

我的问题是为什么20ms的低速图表不能在10ms运行,但在多线程时速度非常快?UI刷新过程是否运行得更快?图表计算加倍了吗?或者单个DispatcherTimer的执行速度是否有限制?

谢谢!


编辑:我有嵌入式编码的背景,所以当我想到线程和时序时,我立即想到在硬件中切换一个引脚并连接一个范围来测量进程长度.我是C#中的线程新手,没有用于连接范围的引脚.有没有办法以图形方式查看线程时序?

c# silverlight multithreading dispatchertimer visiblox

8
推荐指数
2
解决办法
4484
查看次数

在Visiblox图表中反转线性轴

是否可以在Visiblox图表中反转LinearAxis?例如,如果使用线性轴作为Y轴,并且最小和最大轴值为1和10,那么我希望翻转轴,使得1位于轴的顶部,10位于轴的顶部.底部.

c# wpf visiblox

6
推荐指数
1
解决办法
474
查看次数

保存UIElement的图像,使其比屏幕上显示的图像大

我有一个图表,我正在向用户显示,我希望能够将图表作为图像导出到磁盘,以便他们可以在应用程序之外使用它(用于演示文稿或其他东西).

我已经设法使用PngBitmapEncoder和RenderTargetBitmap来获得基本的想法,但我得到的图像是小到可以使用的方式,我希望得到更大的图像.

我试图简单地增加我想要渲染的控件的高度和宽度,但是父级似乎可以直接控制渲染大小.从这里我试图在内存中复制UIElement但是然后渲染大小为(0,0)并且当我尝试使用方法来渲染它时,例如Measure()Arrange()和UpdateLayout()它们会抛出异常需要解耦父级来调用它们,但因为它在内存中而不是渲染,所以不应该是父级?

这一切都是使用Visiblox图表API完成的

这是我目前所拥有的,除了它不起作用:(

var width = 1600;
var height = 1200;

var newChart = new Chart { Width = width, Height = height, Title = chart.Title, XAxis = chart.XAxis, YAxis = chart.YAxis, Series = chart.Series};
Debug.WriteLine(newChart.RenderSize);
var size = new Size(width, height);
newChart.Measure(size);
newChart.Arrange(new Rect(size));
newChart.UpdateLayout();
Debug.WriteLine(newChart.RenderSize);

var rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
            rtb.Render(newChart);

var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));

using (var stream = fileDialog.OpenFile())
   encoder.Save(stream);
Run Code Online (Sandbox Code Playgroud)

我已经离得更近了,它现在将图形背景渲染为轴'等等,但不是实际绘制的线条.以下是更新的来源

public static void RenderChartToImage(Chart elementToRender, string filename)
{ …
Run Code Online (Sandbox Code Playgroud)

c# wpf caliburn.micro visiblox uielement

6
推荐指数
1
解决办法
1501
查看次数

Visiblox,WPF:在图表中显示标记的标记

有没有办法在visiblox图表中添加一些标记,如带有文本标签的点或垂直线?

干杯,卢茨

wpf charts visiblox

5
推荐指数
1
解决办法
1162
查看次数

强制轴在Visiblox图表中使用给定数量的主刻度线

在Visiblox图表中使用LinearAxis作为Y轴时,我想强制轴使用给定数量的主刻度线,同时仍然使工具包自动计算轴范围和刻度标记位置.例如,我可能有一个主要和次要Y轴,我希望两个轴使用相同数量的主要刻度,以便它们的水平网格线重叠.这可能吗?

c# visiblox

5
推荐指数
1
解决办法
1687
查看次数