Winforms:创建动态时间线控件

Posted

技术标签:

【中文标题】Winforms:创建动态时间线控件【英文标题】:Winforms: creating a dynamic timeline control 【发布时间】:2011-05-31 07:23:59 【问题描述】:

我需要创建一个看起来像这样的 winforms 控件:

目前我正在考虑拍摄一个图片框/面板并覆盖 onpaint 事件并自己绘制所有东西。但不知何故,这种方法似乎并不正确。

我想知道也许有更简单的方法或更好的解决方案? 你将如何制作这样的控件?

【问题讨论】:

如果您可以使用 WPF,您的生活将更容易解决此类问题;您可以在 WinForms 应用程序中托管 WPF 控件 【参考方案1】:

不,这是正确的做法。尝试使用 TableLayoutPanel 之类的东西不仅非常痛苦,而且还需要花费一秒钟或更长时间来绘制自己的泥浆。这将需要一堆代码,但它不是硬代码。还有很多 for 循环的机会。

使用面板的 AutoScrollMinSize 获取滚动视图。使用 Graphics.TranslateTransform() 在 Paint 事件或 OnPaint 覆盖中传递 AutoScrollPosition。建议使用后者,从 Panel 派生您自己的控件以保持代码分离。您可以在这里灵活地自定义外观,玩得开心。

【讨论】:

哇,真快,这应该至少需要一个星期。太棒了,你还有 6 天的时间让它看起来很棒。干得好。【参考方案2】:

上次我做这样的事情时,我将网格作为位图,将图像加载到图片框中,然后直接在图像上绘制。除非您继续重绘它,否则使用绘制事件的问题不会持续最小化等。

【讨论】:

【参考方案3】:

可能更容易覆盖文字控件或从 CompositeControl 类继承,然后用 html(表格)和 javascript 呈现它,而不是绘制它。

【讨论】:

以上是关于Winforms:创建动态时间线控件的主要内容,如果未能解决你的问题,请参考以下文章

持久图形 WinForms

在 winforms 中创建动态 UI

在winforms中绘制水平分隔线[重复]

带有 WinForms .NET 时间线的交互式图表 [关闭]

WinForms:使用 c# 添加控件

如何创建悬停的 C# Winforms 控件