【问题标题】:Windows phone - draw graphicsWindows phone - 绘制图形
【发布时间】:2014-06-21 13:25:37
【问题描述】:

我似乎无法弄清楚如何在 C# 中的 Windows 手机应用程序中绘制图形。 我想画例如一条线。在老式的 Windows 窗体中,我向 Windows 绘制事件添加了一个事件处理程序。然后使用 GDI+ 图形对象。但是任何控件中都没有绘制事件?

那么我如何在 Windows 手机应用程序的画布上画一条线?


我想我需要澄清一下。 我想创建动态图形,我想使用 C#。 我想要一个大约 30 fps 的更新频率,我只需要大约 100 个图形元素。

【问题讨论】:

  • 忘记“老派”,基于 XAML 的技术与过时的 winform 具有完全不同的范式。如果您需要线路,只需执行<Line X1="0" Y1="0" X2="10" Y2="10" Stroke="Blue" StrokeThickness="2"/> 或其他操作。

标签: c# windows-phone-8


【解决方案1】:

如果您需要线路,请使用Line class

<Page xmlns="whatever">
   <Grid>
      <Line X1="0" Y1="0" X2="10" Y2="10" Stroke="Blue" StrokeThickness="2"/>
   </Grid>
</Page>

除此之外,请参考MSDN

忘记您可能在过时技术中学到的任何程序范式。现代技术是声明性的。

【讨论】:

    【解决方案2】:

    您首先将 Canvas 添加到表单,然后将 .Add() 图形对象添加到画布子项中 - 它使引擎为您缩放对象,这有点整洁。通常看起来像这样:

    line = new **Line**();
    line.Stroke = Brushes.Yellow;
    
    line.X1 = 0;
    line.Y1 = 0;
    line.X2 = 100;
    line.Y2 = 100;
    
    line.StrokeThickness = 2;
    yourCanvas.Children.**Add(line)**;
    

    只需从代码中删除 **s - 它们是为了吸引注意力。

    实际上,当我绘制动态超立方体时,我从未使用过 XAML 版本,但如果您需要静态结构甚至子结构 XAML 是可行的方法。据我了解, Children.Add() 在解析的 XAML 树中动态创建节点,.NET 保存在内存中。如果您不能对 WPF 强加的动态定位图形造成轻微的性能影响,则必须坚持使用 DirectX 或 OpenGL 以获得更好的性能。

    【讨论】:

    • -1 你不会.Add() 基于 XAML 的技术。这就是 XAML 的用途。
    • static structure - 抱歉,你不知道你在说什么。 -1。请参阅 XAML 中正确架构的“动态线条”UI 的 my example。没有程序代码。它实际上是一个ListBox。顺便说一句,由于我从未上过任何学校,我不知道什么是“动态超立方体”,但我确实知道 XAML 以及使用它的正确方法;)
    • 因此,您通过模板隐式生成行,在您的示例中,这实际上是在 XAML 中声明的工厂。在 .NET 将模板添加到场景中之后,您如何看待 - 魔术?
    • 没关系。在引擎盖下它也使用System.Windows.Media.DrawingContext.DrawLine(),这没关系。在引擎盖下,CPU 中都是 0 和 1,这并不重要。在基于 XAML 的技术中不鼓励使用过程方法。
    【解决方案3】:

    如果您想在使用 DirectX 时进行低级别访问以绘制 2D 或 3D,您可以查看SharpDX

    Github 中有一些samples for Windows Phone,比如:

    • MiniCube: 在 DrawingSurfaceBackgroundGrid 中显示旋转立方体

    【讨论】:

    • 是的,好的。我只是希望在 C# 标准库中的画布 wss 上进行简单的绘图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多