C#/.NET:使用C#创建动态可视化效果

3
注意:我不确定如何命名或标记这个问题,如果你有任何想法,请帮忙! 我目前设想了几个可能涉及动态渲染的项目(无论是点、线、文字还是音乐符号),但是,如果我要着手进行这些项目,我真的不知道该如何设计。我想知道的是像 Word、Geometer's Sketchpad 或 Finale 这样的程序是如何创建一个空白的“画布”并在其上呈现文本、几何图形或音乐的,C# 或 .NET 一般可以如何做到这一点?首先,最好使用哪个框架/平台:WinForms、WPF 还是其他什么?我对许多选项都持开放态度,因为我只是想了解不同的实现方式。接下来,如何使用你对第一个问题的回答来创建这样的“画布”?还有,在其上如何呈现物品?我希望我的问题不会太混乱或新手。我只是不知道如何处理这样的展望。谢谢!

更新: 我现在已经发布了一个更具体的后续问题。我提供了一个假设性的例子,说明我想要实现的内容。不过,即使我的问题没有被完全回答,我仍然会接受这里的答案。

4个回答

2

我认为WPF很适合您的项目。我喜欢《Pro WPF in C# 2008: Windows Presentation Foundation with .NET 3.5》这本书,它涵盖了您所问的大部分主题。

如果您提出更具有针对性的问题,您可能会得到更好的答案。您的问题范围太广,不容易简洁明了地回答。


1

WPF 通过轻松地在简单形状和控件内容之间移动形状绘制代码,使得为这样的项目重构设计更加容易。如果您需要自定义控件的丰富性,WPF 允许相当平滑的过渡。

大多数图形可以在 XAML 中定义,这意味着您可以通过 Illustrator 或任何生成标准 SVG 矢量图形的程序,通过 SVG-XAML 转换器 导出它们。

我喜欢 WPF Unleashed,它对 2D 图形有一个很好的讨论,并介绍了如何使用 DrawingContext 类进行视觉编辑。


1
你知道有一个称为Paint的事件吗?每次Windows操作系统需要在你的窗体上显示或重新绘制某些内容时,该事件就会被触发。因此,你可以创建一个Paint事件处理程序,在其中可以实现任何操作。例如:
  • Word:你有一个带有格式标记和其他东西的WordDocument数据结构,你使用所需的刷子/画笔和字体逐个字符/单词或单词块进行绘制。你可能还想绘制背景等...例如,如果用户更改了1个特定块的字体,则你的WordDocument必须更改一些内容以反映该字体更改。然后你可以做一个myForm.Invalidate()来重新绘制你的窗体(从而更新你的字体)。=> 动态更新你的GUI。

  • Sketchpad:你需要像线、点、三角形等数据结构。每次OnPaint被触发时,你都可以动态地进行绘制, 例如:myGraphics.DrawLine(..), myGraphics.DrawCircle(..)

  • Finale也是类似的。

你应该注意好你的数据结构和绘图类,不要在OnPaint()方法中画所有东西,而是在实体类中创建几个DrawMe(..)方法,并让它们自己绘制。例如:myCircle.DrawMe(..), myScore.DrawMe(..)
希望这能帮到你, Ben

0

关于你的问题,没有普适的答案 - 它太泛泛了。

你是在谈论动态创建的控件,标准的UI组件(下拉菜单、按钮)吗?

它是矢量图形 - 像绘画一样,还是2D图像处理 - 或者是3D吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接