找传奇、传世资源到传世资源站!

wpf界面常用函数(cs文件无DLL)

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

都是一些基本简单的常用界面函数,全部cs文件,无DLL。
按照winform的编写方式写的代码,基本不写xaml文件,很容易看清楚。
包括:窗体无边框(窗体)、 FontAwesome字体图标、rtf转图像、动画移动控件、控件翻转、淡入淡出、控件位置获取、圆角图像、滚动条等等,
在cs文件中对照查看。使用.net 4.61及以下,不支持4.7。

基本按照一个留言板模式写的Demo,登陆、留言、用户信息等基本都有,因为是演示,没有搞得那么精致了。
用户信息在UserData.mdb,
登陆名:1001至1029,密码123456

图像及设计模式是照搬来winform的,开始仔细学习wpf,有错误或繁琐,自行修正,仅供参考
wpf界面常用函数(cs文件无DLL) 桌面应用界面/GUI-第1张
wpf界面常用函数(cs文件无DLL) 桌面应用界面/GUI-第2张
wpf界面常用函数(cs文件无DLL) 桌面应用界面/GUI-第3张
以下内容自行修改
bug修改:RichTextBox输入内容转换图像,搞成嵌入winform组件了,不科学。
修改如下:
Wpf 的RichTextBox(rich1) 插入图像:

private void Button_Click(object sender, RoutedEventArgs e)
        {
            string filepath = "";
            OpenFileDialog openfilejpg = new OpenFileDialog();
            openfilejpg.Filter = "png图片(*.png)|*.png|gif图片(*.gif)|*.gif";
            openfilejpg.FilterIndex = 0;
            openfilejpg.RestoreDirectory = true;
            openfilejpg.Multiselect = false;
            if (openfilejpg.ShowDialog() == true)
            {
                filepath = openfilejpg.FileName;
                System.Windows.Controls.Image img = new System.Windows.Controls.Image();
                BitmapImage bImg = new BitmapImage();
                img.IsEnabled = true;
                bImg.BeginInit();
                bImg.UriSource = new Uri(filepath, UriKind.Relative);
                bImg.EndInit();
                img.Width = 28;
                img.Height = 28;
                img.Source = bImg;
                img.UseLayoutRounding = true;
                new InlineUIContainer(img, rich1.Selection.Start);
            }
        }

然后顺序取得里面的全部图像放入到List里面
public class imglist
        {
            public Image image;
            public imglist(Image img)
            {
                image = img;
            }
        }
        public static List<imglist> ImageList = new List<imglist>();

        public static void ResizeRtbImages(RichTextBox rtb)
        {
            foreach (Block block in rtb.Document.Blocks)
            {
                
                if (block is Paragraph)
                {
                    Paragraph paragraph = (Paragraph)block;
                    foreach (Inline inline in paragraph.Inlines)
                    {
                        if (inline is InlineUIContainer)
                        {
                            InlineUIContainer uiContainer = (InlineUIContainer)inline;
                            if (uiContainer.Child is Image)
                            {
                                Image image = (Image)uiContainer.Child;
                                ImageList.Add(new imglist(image));
                            }
                        }
                    }
                }
            }
        }

转换为xaml
public static string ToXaml(RichTextBox richTextBox)
        {
            string xaml = string.Empty;
            TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
            using (MemoryStream ms = new MemoryStream())
            {
                textRange.Save(ms, System.Windows.DataFormats.Xaml);
                ms.Seek(0, SeekOrigin.Begin);
                StreamReader sr = new StreamReader(ms);
                xaml = sr.ReadToEnd();
            }
            return xaml;
        }

再替换字符串
            string tmp = ToXaml(rich1);
            int b = tmp.IndexOf("<Paragraph>") 11;
            int t = tmp.LastIndexOf("</Paragraph>");
            string tmp1 = tmp.Substring(b, t-b);
            rich2.AppendText("\r\r\r" tmp1);

            string tmp2 = tmp1.Replace("<Run> </Run>", "▣"). // 特殊符号
            Replace("</Paragraph><Paragraph>", "\r").
            Replace("<Run xml:lang=\"zh-cn\">", "").
            Replace("</Run>", "");

最后画文字到一幅图像,遇到“特殊符号“顺序画ImageList[n].image就可以了
生成对话框需计算文字宽度等,参考原文件
自行修改,修改后可以用.net 4.7

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复