【问题标题】:Win2D library: CanvasImageBrush paints using the Canvas coordinates?Win2D 库:CanvasImageBrush 使用 Canvas 坐标绘制?
【发布时间】:2016-03-01 18:30:47
【问题描述】:

G'day 伙计们,

我已开始探索 Windows 10 UAP 应用的 Win2D 库。

我正在绘制一个椭圆并使用之前定义的 CanvasImageBrush 填充它。看起来用作填充的坐标是基于绘制椭圆的屏幕坐标。

换句话说,左上角的椭圆看起来很好,但在页面的其他地方,椭圆被黑色填充。我将 ExtendX 和 ExtendY 属性设置为“Wrap”来检验我的假设,并绘制椭圆,就好像它暴露了画笔使用的平铺图像一样。

我附上了一张截图来展示这种行为。用于创建 CanvasImageBrush 的图像是一个 162x148 的矩形,其中包含三角形。

由于我无法想象这是预期的行为,我一定是在做一些愚蠢的事情。如果有人能指出什么,我将不胜感激。

这里是代码

public sealed partial class MainPage : Page
{
    CanvasImageBrush fillBrush;
    List<Vector2> selectedPoints = new List<Vector2>();

    public MainPage()
    {
        this.InitializeComponent();
    }

    async Task CreateBrushes( CanvasControl sender )
    {
        CanvasBitmap cb = await CanvasBitmap.LoadAsync(sender, "Assets\\bitmapBrush.png");
        fillBrush = new CanvasImageBrush(sender, cb );
        fillBrush.ExtendX = CanvasEdgeBehavior.Wrap;
        fillBrush.ExtendY = CanvasEdgeBehavior.Wrap;
    }

    private void CanvasControl_CreateResources(CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
    {
        args.TrackAsyncAction(CreateBrushes(sender).AsAsyncAction());
    }

    private void CanvasControl_Draw(CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
    {
        foreach( Vector2 v in selectedPoints )
        {
            args.DrawingSession.FillEllipse( v, 25, 25, fillBrush );
        }
    }

    private void MainCanvas_PointerPressed(object sender, PointerRoutedEventArgs e)
    {
        PointerPoint p = e.GetCurrentPoint((CanvasControl)sender);
        Vector2 v = new Vector2((float)p.Position.X, (float)p.Position.Y);

        selectedPoints.Add(v);

        MainCanvas.Invalidate();
    }

【问题讨论】:

    标签: c# windows win-universal-app win2d


    【解决方案1】:

    显然这是预期的行为。

    要使用 CanvasImageBrush 绘制一致的图像,您需要使用 .Transform 方法转换为图像上的一致点。

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 2011-10-30
      • 2021-11-15
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多