1、问题描述:切换画笔后,鼠标呈现画笔,但绘制界面需要点击后才能绘制,体验比较差
注:如果将切换为画笔或橡皮擦的功能放在二级菜单中则无次问题
解决方法(大体如此):
1)在第三方中,先创建完绘制画面和显示的工具窗体,关联两个窗体 +【加载显示窗体,再隐藏】
2)选择绘制时,最顶层显示出绘制界面,设置焦点,再最顶层显示出工具菜单,设置焦点。
参考代码:

//绘制界面 this.Show(); this.InkDraw.UseCustomCursor = true; this.InkDraw.Cursor = System.Windows.Input.Cursors.Pen; this.InkDraw.EditingMode = InkCanvasEditingMode.Ink; this.InkDraw.DefaultDrawingAttributes.Color = System.Windows.Media.Color.FromArgb(args.DrawColor.A, args.DrawColor.R, args.DrawColor.G, args.DrawColor.B); this.Focus(); //子工具条显示 frmBoardTools.Show(); frmBoardTools.Focus();
2、绘制窗体圆角

/// <summary> /// 窗体圆角 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Onsizechanged(object sender, SizeChangedEventArgs e) { System.Windows.Rect rect = new System.Windows.Rect(e.NewSize); RectangleGeometry gm = new RectangleGeometry(rect, 13, 13);//(rect, 28, 28); ((UIElement)sender).Clip = gm; }
3、InkCanvas 的strokes.Clear()后,不隐藏内容为空,隐藏后再显示,先闪烁原内容后,InkCanvas内容再显示为空!
解决方法:不适用隐藏、显示,而是Opacity = 0 ;和 Opacity = 1;