C# WPF中inkCanvas简单实用

来源:互联网 发布:天刀吴彦祖捏脸数据 编辑:程序博客网 时间:2024/06/14 05:35

最近有点时间就想看看wpf然后在网上看了一下水墨画的东西和例子,然后自己根据自己的理解就用inkCanvas控件做了一个小软件,可以供大家学习参考。

话不多说,wpf其实就两点,玩过winform的都比较熟悉,它就是winform的升级版吧。所以还是差不多的,先要设计界面。然后添加功能。只是他的界面是一个XAML文件。

我做的是一个简单的画板。

实现了文件有新建,打开,保存,保存和打开的都是isf格式,也可以保存成图片格式。

编辑有:选择,复制,粘贴,剪贴,清空等功能,其实很简单,几句话。

工具中有画笔和橡皮两个,画笔有粗细,颜色等选择,橡皮有大小功能。

如图:




效果:红色粗笔效果,可以选择其中一笔进行放大缩小,移动变换,p字母效果


部分源代码:

保存功能: private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            if (this.inkCanvas1.Strokes.Count != 0)
            {
                MessageBoxResult Message = MessageBox.Show("写字板已修改是否保存?", "是否保存", MessageBoxButton.YesNoCancel);
                //保存,新建
                if (Message == MessageBoxResult.Yes)
                {
                    SaveFileDialog save = new SaveFileDialog();
                    save.FileName = " ";
                    save.Filter = "文件|*.isf";
                    if (save.ShowDialog() == true)
                    {
                        FileStream f = File.Open(save.FileName, FileMode.Create, FileAccess.Write);
                        this.inkCanvas1.Strokes.Save(f);
                        f.Close();
                    }
                    this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection();
                }
                if (Message == MessageBoxResult.No)
                    this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection();
            }


            else
                this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection();
        }

打开文件功能:

  OpenFileDialog open = new OpenFileDialog();
            open.Title = "选择文件";
            open.Filter = "文件|*.isf";
            if (this.inkCanvas1.Strokes.Count != 0)
            {
                MessageBoxResult Message = MessageBox.Show("写字板已修改是否保存?", "是否保存", MessageBoxButton.YesNo);
                //保存,新建
                if (Message == MessageBoxResult.Yes)
                {
                    SaveFileDialog save = new SaveFileDialog();
                    save.FileName = " ";
                    save.Filter = "文件|*.isf";
                    if (save.ShowDialog() == true)
                    {
                        FileStream f = File.Open(save.FileName, FileMode.Create, FileAccess.Write);
                        this.inkCanvas1.Strokes.Save(f);
                        f.Close();
                    }
                    this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection();
                }
                if (Message == MessageBoxResult.No)
                    this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection();
            }


            else
                if (open.ShowDialog() == true)
                {
                    FileStream f = File.Open(open.FileName, FileMode.Open, FileAccess.Read);
                    this.inkCanvas1.Strokes = new System.Windows.Ink.StrokeCollection(f);
                    f.Close();
                }

画笔颜色功能:

 System.Windows.Forms.ColorDialog color = new System.Windows.Forms.ColorDialog();
            //color.ShowDialog();
            if (color.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                this.inkCanvas1.DefaultDrawingAttributes.Color = System.Windows.Media.Color.FromArgb(color.Color.A,color.Color.R,color.Color.G,color.Color.B);
                this.inkCanvas1.DefaultDrawingAttributes.FitToCurve = true;
            }

如果有需要学习的请到我的空间下载源码和软件,供大家学习。哈哈!本人新手,请勿见笑。

0 0