java canvas画图,UWP Canvas绘图越界
我有一個畫布(不是InkCanvas!),我可以在上面繪制Polylines . 這工作得很好,但是如下面的GIF所示,繪制出界限存在一個巨大的問題 .
我的畫布在ScrollViewer中,ScrollViewer在GridView中 .
我試圖捕獲指針離開畫布與以下事件處理程序:
canvas.PointerExited += Canvas_PointerExited;
canvas.PointerCaptureLost += Canvas_PointerCaptureLost;
但似乎這些事件被解雇得太慢了 .
我嘗試使用畫布的Clip屬性,但行為沒有變化 . 并且UWP畫布沒有“ClipToBound”屬性 .
我的整個視圖是在Code-Behind中生成的,因為我必須在一個視圖上生成多個畫布 .
有沒有辦法阻止這種行為?
EDIT1:
根據要求:更深入了解我的代碼 .
XAML頁面如下所示:
它都在一個頁面內 .
我的代碼背后看起來像這樣:
我的建設者:
public ImprovedCanvasManager(Grid boundingGrid, Grid overviewGrid, string filepath, double height)
{
drawCanvas = new Canvas();
overviewGrid.Loaded += OverviewGrid_Loaded;
overviewGrid.SizeChanged += OverviewGrid_SizeChanged;
RowDefinition rd = new RowDefinition();
rd.Height = new GridLength(height);
overviewGrid.RowDefinitions.Add(rd);
InitializeScrollViewer();
Grid.SetRow(scroll, overviewGrid.RowDefinitions.Count);
Grid.SetColumn(scroll, 0);
scroll.Content = drawCanvas;
overviewGrid.Children.Add(scroll);
LoadImage(filepath);
}
public ImprovedCanvasManager(Grid boundingGrid, Grid overviewGrid, Grid inkToolGrid, string filepath, double height = 1000) : this(boundingGrid, overviewGrid, filepath, height)
{
AddDrawingToolsToCanvas(inkToolGrid, overviewGrid);
EnableDrawingOnCanvas(drawCanvas);
}
我只有兩個構造器,使我能夠簡單地實例化具有繪制和無繪制能力的畫布 .
這是我初始化我的ScrollViewer的方式:
private void InitializeScrollViewer()
{
scroll = new ScrollViewer();
scroll.VerticalAlignment = VerticalAlignment.Top;
scroll.VerticalScrollMode = ScrollMode.Auto;
scroll.HorizontalScrollMode = ScrollMode.Auto;
scroll.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
scroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
scroll.ZoomMode = ZoomMode.Enabled;
scroll.ManipulationMode = ManipulationModes.All;
scroll.MinZoomFactor = 1;
scroll.MaxZoomFactor = 3;
}
這些是影響任何視圖構建的唯一代碼行 .
Edit 2:
我的畫布不會填充左側的周圍網格,而是填充底部 .
總結
以上是生活随笔為你收集整理的java canvas画图,UWP Canvas绘图越界的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode常用插件推荐_梅林软件中心
- 下一篇: 个人可以开几个证券账户 个人能开多少个股