C#:WPF绘制问题

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();
                 
View Code

 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;
        }
View Code

 3、InkCanvas 的strokes.Clear()后,不隐藏内容为空,隐藏后再显示,先闪烁原内容后,InkCanvas内容再显示为空!

解决方法:不适用隐藏、显示,而是Opacity = 0 ;和 Opacity = 1;

posted @ 2016-05-13 10:58  慧由心生  阅读(1025)  评论(0编辑  收藏  举报