0
G'day Folks,Win2D庫:使用Canvas座標的CanvasImageBrush油漆?
我已經開始探索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();
}