資源簡介
按照winform的編寫方式寫的代碼,基本不寫xaml文件,很容易看清楚。
包括:窗體無邊框(窗體)、 FontAwesome字體圖標、rtf轉圖像、動畫移動控件、控件翻轉、淡入淡出、控件位置獲取、圓角圖像、滾動條等等,
在cs文件中對照查看。使用.net 4.61及以下,不支持4.7。
基本按照一個留言板模式寫的Demo,登陸、留言、用戶信息等基本都有,因為是演示,沒有搞得那么精致了。
用戶信息在UserData.mdb,
登陸名:1001至1029,密碼123456
圖像及設計模式是照搬來winform的,開始仔細學習wpf,有錯誤或繁瑣,自行修正,僅供參考
以下內容自行修改
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
代碼片段和文件信息
using?System.Windows;
namespace?Demo
{
????///?
????///?App.xaml?的交互邏輯
????///?
????public?partial?class?App?:?Application
????{
????????protected?override?void?onstartup(StartupEventArgs?e)
????????{
????????????System_Global.User_Database();
????????}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????16844??2019-09-08?10:20??函數說明.docx
?????文件???????3194??2019-09-07?19:28??exe\11.png
?????文件????1263104??2019-09-08?10:37??exe\Demo.exe
?????文件????????189??2019-09-03?08:53??exe\Demo.exe.config
?????文件?????230912??2019-09-08?10:37??exe\Demo.pdb
?????文件???????1318??2018-04-04?09:48??exe\Res_File\1-min.png
?????文件???????1310??2018-04-04?09:48??exe\Res_File\10-min.png
?????文件???????1342??2018-04-04?09:48??exe\Res_File\11-min.png
?????文件???????1384??2018-04-04?09:48??exe\Res_File\12-min.png
?????文件???????1318??2018-04-04?09:48??exe\Res_File\13-min.png
?????文件???????1368??2018-04-04?09:48??exe\Res_File\14-min.png
?????文件???????1312??2018-04-04?09:48??exe\Res_File\15-min.png
?????文件???????1356??2018-04-04?09:48??exe\Res_File\16-min.png
?????文件???????1344??2018-04-04?09:48??exe\Res_File\17-min.png
?????文件???????1389??2018-04-04?09:48??exe\Res_File\18-min.png
?????文件???????1258??2018-04-04?09:48??exe\Res_File\19-min.png
?????文件???????1289??2018-04-04?09:47??exe\Res_File\2-min.png
?????文件???????1322??2018-04-04?09:48??exe\Res_File\20-min.png
?????文件???????1344??2018-04-04?09:48??exe\Res_File\21-min.png
?????文件???????1374??2018-04-04?09:48??exe\Res_File\22-min.png
?????文件???????1415??2018-04-04?09:48??exe\Res_File\23-min.png
?????文件???????1372??2018-04-04?09:48??exe\Res_File\24-min.png
?????文件???????1311??2018-04-04?09:48??exe\Res_File\25-min.png
?????文件???????1375??2018-04-04?09:48??exe\Res_File\26-min.png
?????文件???????1298??2018-04-04?09:48??exe\Res_File\27-min.png
?????文件???????1357??2018-04-04?09:48??exe\Res_File\28-min.png
?????文件???????1352??2018-04-04?09:48??exe\Res_File\29-min.png
?????文件???????1354??2018-04-04?09:47??exe\Res_File\3-min.png
?????文件???????1350??2018-04-04?09:47??exe\Res_File\30-min.png
?????文件???????1328??2018-04-04?09:47??exe\Res_File\4-min.png
............此處省略256個文件信息
評論
共有 條評論