草庐IT

高效绘图小工具:Multi-omics Visual

全部标签

c# - WPF:如何高效地每秒更新图像 30 次

我正在编写一个使用组件的WPF应用程序,该组件返回一个指向位图像素(步长*高度)的指针(IntPtr)。我事先知道位图是一个24位的rgb,它的宽度和高度。用这些位图更新图像控件构成了一个视频给用户,但我不确定最有效的方法是什么,大多数时候CPU使用率达到75%+,内存从40mb变化到500mb,我认为GC开始工作,然后再次下降到40mm。该应用开始没有响应。我该怎么办?谢谢! 最佳答案 您很可能正在分配新的位图,这些位图不是一次性的。您应该分配一个WriteableBitmap并更新它。链接的文档描述了锁定、更新和解锁Writea

c# - 将带分隔符的文件读入 DataTable 的高效函数

我想知道是否有人知道用于将制表符分隔文件读入数据表的高效C#函数?谢谢 最佳答案 这目前使用LINQ方法.First()和.Skip()如果您需要在.Net2.0上使用它,这两种方法都可以很容易地重新创建//evencoolerasanextensionmethodstaticIEnumerableReadAsLines(stringfilename){using(varreader=newStreamReader(filename))while(!reader.EndOfStream)yieldreturnreader.ReadL

c# - 高效的数据表分组依据

我想对一个DataTable执行聚合查询以创建另一个DataTable。我无法更改用于创建初始DataTable的SQL。原始数据表:(一切都是一个整数)TeamID|MemberID-------|-----------1|11|21|32|42|5期望的结果:TeamID|MemberIDCount-------|--------------1|32|2如果它是SQL我可以做SelectTeamID,Count(*)FromTableGroupByTeamID但在我的应用程序中,我知道如何处理的唯一方法是这样的:Dictionaryd=newDictionary();foreach

c# - 如何在C#中有效地在桌面上绘图?

我想用C#直接在桌面上画图。经过一番搜索,我最终使用了来自DesktopHDC(null)的Graphics对象。然后,我使用这个Graphics对象正常绘画。问题是当屏幕的任何部分被重绘时我的形状会丢失。我尝试了一个While循环,但它实际上以应用程序所能达到的速度结束绘制,这不是桌面的更新速率。通常,我需要将我的绘图代码放在“OnPaint”事件中,但桌面上不存在这样的事情。我该怎么做?示例代码:https://stackoverflow.com/questions/1536141/how-to-draw-directly-on-the-windows-desktop-c

c# - 高效、不可变、可扩展的 .NET 集合

这个问题在这里已经有了答案:Immutablecollections?(10个答案)关闭9年前。在我看来,.NET极度缺乏安全、不可变的集合类型,尤其是BCL,但我也没有看到其他方面做过多少工作。是否有人对.NET的(最好)生产质量、快速、不可变的集合库有任何指示。快速列表类型是必不可少的。我还没有准备好切换到F#。*编辑:搜索者请注意,这很快就会被纳入BCL:.NETimmutablecollections

c# - WPF 中的 Windows 小工具 - 在激活 "Show desktop"时显示

我正在尝试使用WPF创建类似“小工具”的应用程序。目标是获得与普通Windows7小工具相同的行为:没有任务栏条目当您alt+tab窗口时不显示并不总是在最前面,应用程序可以在最前面执行“AeroPeek”时可见使用“显示桌面”/Windows+D时可见我已经能够完成前四个目标,但无法找到第五个问题的解决方案。我最接近的是使用HowdoyoudoAppBardocking(toscreenedge,likeWinAmp)inWPF?中的实用程序类,但这会将应用程序变成一个“工具栏”,从而将应用程序从屏幕上放置我的小工具GUI的部分中移除。我可以看到以前在Stackoverflow上提出

c# - 两个 .Net 应用程序之间的高效通信

我目前正在用C#编写一个.Net应用程序,它有两个主要组件:DataGenerator-一个生成大量数据的组件查看器-能够可视化生成器创建的数据的WPF应用程序这两个组件目前在我的解决方案中是两个独立的项目。此外,我正在使用PRISM4.0框架来从这些组件中创建模块。本质上,DataGenerator生成大量数据并使用PRISM的EventAggregator发送事件,Viewer订阅这些事件并为用户显示准备好的数据。现在我的要求略有改变,这两个组件现在将在它们自己的应用程序中运行(但在同一台计算机上)。我仍然希望所有通信都是事件驱动的,我也仍然希望使用PRISM框架。我的第一个想法是

c# - 为什么 BitVector 32 结构比 BitArray 更高效?

BitArray和BitVector32结构有什么区别,BitVector32结构相对于BitArray有什么优势?为什么BitVector32结构比BitArray更高效?提前致谢。周杰... 最佳答案 BitVector32ismoreefficientthanBitArrayforBooleanvaluesandsmallintegersthatareusedinternally.ABitArraycangrowindefinitelyasneeded,butithasthememoryandperformanceoverhe

c# - 高效笛卡尔积算法

有人可以为我演示一种比我目前使用的算法更有效的笛卡尔积算法(假设有一个)。我环顾四周并用谷歌搜索了一下,但看不到任何明显的东西,所以我可能会遗漏一些东西。foreach(intiinis){foreach(intjinjs){//Pairiandj}}这是我在代码中所做的高度简化的版本。这两个整数是查找键,用于检索一个/多个对象,并且将来自两个查找的所有对象配对成新对象。这个小代码块在一个更大更复杂的系统中成为一个主要的性能瓶颈,因为它运行的数据集规模很大。通过改进用于存储对象的数据结构和所涉及的查找,可能会减轻其中一些问题,但我认为主要问题仍然是笛卡尔积本身的计算。编辑关于我对算法的

c# - C#/.Net 中的高效多元线性回归

有谁知道在C#中执行多元线性回归的有效方法,其中联立方程的数量可能有1000个(具有3或4个不同的输入)。看完thisarticle在多元线性回归上,我尝试用矩阵方程来实现它:Matrixy=newMatrix(newdouble[,]{{745},{895},{442},{440},{1598}});Matrixx=newMatrix(newdouble[,]{{1,36,66},{1,37,68},{1,47,64},{1,32,53},{1,1,101}});Matrixb=(x.Transpose()*x).Inverse()*x.Transpose()*y;for(inti=