如何在C#的Windows Metro Style应用程序的屏幕上绘图?

Cry*_*tal 7 c# windows coding-style draw microsoft-metro

我只是希望用户能够使用某种指针在屏幕上绘图.

我已经有代码工作,捕获指针的位置,但我无法弄清楚如何将像素或形状或任何东西放在屏幕上.

我找到了这个有用的教程:http://www.dotnetspeaks.com/DisplayArticle.aspx? ID =
137

我一直在看这里的文档:http:
//msdn.microsoft.com/en-us/library/windows/apps/hh465055(v = VS.85).aspx

到目前为止没有运气.=(本教程适用于Windows Phone 7,所以它有点不同.=\Help,please?=)

这就是我到目前为止所拥有的.

绘图部分:

    private void Image_PointerPressed(object sender, PointerEventArgs e)
    {
        Debug.WriteLine("Image_PointerPressed");
        isTracing = true;
    }

    private void Image_PointerReleased(object sender, PointerEventArgs e)
    {
        Debug.WriteLine("Image_PointerReleased");
        isTracing = false;
    }

    private void Image_PointerMoved(object sender, PointerEventArgs e)
    {
        Debug.WriteLine("Image_PointerMoved");
        Debug.WriteLine(e.GetCurrentPoint(this).Position);
        if (isTracing)
        {
            Debug.WriteLine("isTracing");

            Point pos = e.GetCurrentPoint(this).Position;
            Color color = Colors.Green;
            Line line = new Line() { X1 = pos.X, X2 = pos.X + 1, Y1 = pos.Y, Y2 = pos.Y + 1 };
            line.Stroke = new SolidColorBrush(color);
            line.StrokeThickness = 15;
            //// So how do I draw this line onto the screen?? ////

        }

    }
Run Code Online (Sandbox Code Playgroud)

作为参考,代码中的其他内容:


    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Threading.Tasks;
    using Multimedia.FFmpeg;
    using Windows.Foundation;
    using Windows.Storage;
    using Windows.Storage.Pickers;
    using Windows.Storage.Streams;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Shapes;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Input;

    bool isTracing = false;

And*_*ewS 7

简写:

  • Lines和Rectangles 添加到面板中
  • 直接操作位图
  • 在JavaScript/HTML项目中使用HTML5 Canvas元素
  • 用C++/DirectX编写整个内容

Metro/XAML无法覆盖OnRender()方法等.您可以选择将现有图形元素(例如,从Shapes命名空间)添加到Canvas或其他Panel,或者直接操作位图中的像素并将该位图推送到Image元素中.

Metro/C#仅具有保留模式图形绘制,这意味着它将呈现的唯一内容是已添加到视图层次结构中的对象.您正在寻找的是某种即时模式图形绘制,例如

myCanvas.DrawLine( fromPoint, toPoint );
Run Code Online (Sandbox Code Playgroud)

这可以使用HTML5的Canvas对象在JavaScript/HTML项目中完成.遗憾的是,这是我倾向于这样一个项目的方式.不幸的是,微软没有为XAML项目提供立即模式元素,但事实就是如此.C++/DirectX也是进行自定义绘图的一个选项,但需要对您在应用程序中执行的所有其他操作进行大量修改.