diff --git a/.vs/ProjectEvaluation/ywxappwpfbarrage.metadata.v9.bin b/.vs/ProjectEvaluation/ywxappwpfbarrage.metadata.v9.bin
new file mode 100644
index 0000000..7e653c2
Binary files /dev/null and b/.vs/ProjectEvaluation/ywxappwpfbarrage.metadata.v9.bin differ
diff --git a/.vs/ProjectEvaluation/ywxappwpfbarrage.projects.v9.bin b/.vs/ProjectEvaluation/ywxappwpfbarrage.projects.v9.bin
new file mode 100644
index 0000000..f72af29
Binary files /dev/null and b/.vs/ProjectEvaluation/ywxappwpfbarrage.projects.v9.bin differ
diff --git a/.vs/ProjectEvaluation/ywxappwpfbarrage.strings.v9.bin b/.vs/ProjectEvaluation/ywxappwpfbarrage.strings.v9.bin
new file mode 100644
index 0000000..845aca2
Binary files /dev/null and b/.vs/ProjectEvaluation/ywxappwpfbarrage.strings.v9.bin differ
diff --git a/.vs/ProjectEvaluation/ywxappwpfdanmu.metadata.v9.bin b/.vs/ProjectEvaluation/ywxappwpfdanmu.metadata.v9.bin
index 898ff9b..76d8bfb 100644
Binary files a/.vs/ProjectEvaluation/ywxappwpfdanmu.metadata.v9.bin and b/.vs/ProjectEvaluation/ywxappwpfdanmu.metadata.v9.bin differ
diff --git a/.vs/ProjectEvaluation/ywxappwpfdanmu.projects.v9.bin b/.vs/ProjectEvaluation/ywxappwpfdanmu.projects.v9.bin
index c98770f..d18f89d 100644
Binary files a/.vs/ProjectEvaluation/ywxappwpfdanmu.projects.v9.bin and b/.vs/ProjectEvaluation/ywxappwpfdanmu.projects.v9.bin differ
diff --git a/.vs/ProjectEvaluation/ywxappwpfdanmu.strings.v9.bin b/.vs/ProjectEvaluation/ywxappwpfdanmu.strings.v9.bin
index 03c4c01..5ce5a59 100644
Binary files a/.vs/ProjectEvaluation/ywxappwpfdanmu.strings.v9.bin and b/.vs/ProjectEvaluation/ywxappwpfdanmu.strings.v9.bin differ
diff --git a/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/CodeChunks.db b/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/CodeChunks.db
new file mode 100644
index 0000000..663b75d
Binary files /dev/null and b/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/CodeChunks.db differ
diff --git a/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/SemanticSymbols.db b/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/SemanticSymbols.db
new file mode 100644
index 0000000..b54f3e9
Binary files /dev/null and b/.vs/YwxAppWpfBarrage/CopilotIndices/17.13.439.2385/SemanticSymbols.db differ
diff --git a/.vs/YwxAppWpfBarrage/v17/.futdcache.v2 b/.vs/YwxAppWpfBarrage/v17/.futdcache.v2
new file mode 100644
index 0000000..2edbc55
Binary files /dev/null and b/.vs/YwxAppWpfBarrage/v17/.futdcache.v2 differ
diff --git a/.vs/YwxAppWpfBarrage/v17/.suo b/.vs/YwxAppWpfBarrage/v17/.suo
new file mode 100644
index 0000000..097f512
Binary files /dev/null and b/.vs/YwxAppWpfBarrage/v17/.suo differ
diff --git a/.vs/YwxAppWpfBarrage/v17/DocumentLayout.backup.json b/.vs/YwxAppWpfBarrage/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..3936b92
--- /dev/null
+++ b/.vs/YwxAppWpfBarrage/v17/DocumentLayout.backup.json
@@ -0,0 +1,95 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\repos\\YwxAppWpfDanMu\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj|d:\\repos\\ywxappwpfdanmu\\ywxappwpfdanmu\\ywxappwpfbarrage.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+ "RelativeMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj|solutionrelative:ywxappwpfdanmu\\ywxappwpfbarrage.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj|d:\\repos\\ywxappwpfdanmu\\ywxappwpfdanmu\\ywxappwpfbarrage.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
+ "RelativeMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj|solutionrelative:ywxappwpfdanmu\\ywxappwpfbarrage.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj|d:\\repos\\ywxappwpfdanmu\\ywxappwpfdanmu\\services\\barrageperformancemonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj|solutionrelative:ywxappwpfdanmu\\services\\barrageperformancemonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj|d:\\repos\\ywxappwpfdanmu\\ywxappwpfdanmu\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}|YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj|solutionrelative:ywxappwpfdanmu\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 323,
+ "SelectedChildIndex": 1,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "YwxAppWpfBarrage",
+ "DocumentMoniker": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "RelativeDocumentMoniker": "YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "ToolTip": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "RelativeToolTip": "YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+ "WhenOpened": "2025-03-29T11:48:09.045Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "YwxAppWpfBarrage",
+ "DocumentMoniker": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "RelativeDocumentMoniker": "YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "ToolTip": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "RelativeToolTip": "YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAiAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+ "WhenOpened": "2025-03-29T11:47:00.615Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "BarragePerformanceMonitor.cs",
+ "DocumentMoniker": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\Services\\BarragePerformanceMonitor.cs",
+ "RelativeDocumentMoniker": "YwxAppWpfDanMu\\Services\\BarragePerformanceMonitor.cs",
+ "ToolTip": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\Services\\BarragePerformanceMonitor.cs",
+ "RelativeToolTip": "YwxAppWpfDanMu\\Services\\BarragePerformanceMonitor.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAaAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-03-29T11:44:42.999Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
+ },
+ {
+ "$type": "Bookmark",
+ "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "AssemblyInfo.cs",
+ "DocumentMoniker": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\AssemblyInfo.cs",
+ "RelativeDocumentMoniker": "YwxAppWpfDanMu\\AssemblyInfo.cs",
+ "ToolTip": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\AssemblyInfo.cs",
+ "RelativeToolTip": "YwxAppWpfDanMu\\AssemblyInfo.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAtAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-03-29T11:43:51.574Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vs/YwxAppWpfDanMu/v17/DocumentLayout.json b/.vs/YwxAppWpfBarrage/v17/DocumentLayout.json
similarity index 82%
rename from .vs/YwxAppWpfDanMu/v17/DocumentLayout.json
rename to .vs/YwxAppWpfBarrage/v17/DocumentLayout.json
index c9dfbaa..60941b1 100644
--- a/.vs/YwxAppWpfDanMu/v17/DocumentLayout.json
+++ b/.vs/YwxAppWpfBarrage/v17/DocumentLayout.json
@@ -18,10 +18,6 @@
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
- },
- {
- "$type": "Bookmark",
- "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
}
]
}
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db
index 1b2c736..d348866 100644
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db and b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db differ
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-shm b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-shm
deleted file mode 100644
index 71cda15..0000000
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-shm and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-wal b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-wal
deleted file mode 100644
index 7814557..0000000
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/CodeChunks.db-wal and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db
index 28f1dc3..131dc40 100644
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db and b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db differ
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-shm b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-shm
deleted file mode 100644
index a791040..0000000
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-shm and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-wal b/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-wal
deleted file mode 100644
index d3e6bf7..0000000
Binary files a/.vs/YwxAppWpfDanMu/CopilotIndices/17.13.439.2385/SemanticSymbols.db-wal and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/DesignTimeBuild/.dtbcache.v2 b/.vs/YwxAppWpfDanMu/DesignTimeBuild/.dtbcache.v2
index 63730c5..a69679e 100644
Binary files a/.vs/YwxAppWpfDanMu/DesignTimeBuild/.dtbcache.v2 and b/.vs/YwxAppWpfDanMu/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/1366cd0e-c519-4847-8466-11d46c72ce77.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/1366cd0e-c519-4847-8466-11d46c72ce77.vsidx
deleted file mode 100644
index 71209aa..0000000
Binary files a/.vs/YwxAppWpfDanMu/FileContentIndex/1366cd0e-c519-4847-8466-11d46c72ce77.vsidx and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/1d95d9bc-2ea0-4a00-bead-de6c110c01d6.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/1d95d9bc-2ea0-4a00-bead-de6c110c01d6.vsidx
new file mode 100644
index 0000000..cbdaf3d
Binary files /dev/null and b/.vs/YwxAppWpfDanMu/FileContentIndex/1d95d9bc-2ea0-4a00-bead-de6c110c01d6.vsidx differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/4368c0c7-de5a-46d9-9868-818758d2366c.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/4368c0c7-de5a-46d9-9868-818758d2366c.vsidx
new file mode 100644
index 0000000..74da4e8
Binary files /dev/null and b/.vs/YwxAppWpfDanMu/FileContentIndex/4368c0c7-de5a-46d9-9868-818758d2366c.vsidx differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/6fb863dd-7ee7-4bac-b812-312eb9f3bad1.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/6fb863dd-7ee7-4bac-b812-312eb9f3bad1.vsidx
new file mode 100644
index 0000000..fdeba5a
Binary files /dev/null and b/.vs/YwxAppWpfDanMu/FileContentIndex/6fb863dd-7ee7-4bac-b812-312eb9f3bad1.vsidx differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/a8082109-4f93-41af-bb36-aa15cb7278fb.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/a8082109-4f93-41af-bb36-aa15cb7278fb.vsidx
deleted file mode 100644
index c59d628..0000000
Binary files a/.vs/YwxAppWpfDanMu/FileContentIndex/a8082109-4f93-41af-bb36-aa15cb7278fb.vsidx and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/bc48aa12-2057-4eea-a397-88d1dddd9855.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/bc48aa12-2057-4eea-a397-88d1dddd9855.vsidx
new file mode 100644
index 0000000..b053d35
Binary files /dev/null and b/.vs/YwxAppWpfDanMu/FileContentIndex/bc48aa12-2057-4eea-a397-88d1dddd9855.vsidx differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/bf09ad42-c1c9-482e-b27f-e45dbb989851.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/bf09ad42-c1c9-482e-b27f-e45dbb989851.vsidx
new file mode 100644
index 0000000..0779238
Binary files /dev/null and b/.vs/YwxAppWpfDanMu/FileContentIndex/bf09ad42-c1c9-482e-b27f-e45dbb989851.vsidx differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/d5cbd42b-3875-4e2f-8035-05e05e4b00b2.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/d5cbd42b-3875-4e2f-8035-05e05e4b00b2.vsidx
deleted file mode 100644
index acb6d37..0000000
Binary files a/.vs/YwxAppWpfDanMu/FileContentIndex/d5cbd42b-3875-4e2f-8035-05e05e4b00b2.vsidx and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/e63725e1-29af-4db4-b250-bcef0060c1a5.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/e63725e1-29af-4db4-b250-bcef0060c1a5.vsidx
deleted file mode 100644
index f858f69..0000000
Binary files a/.vs/YwxAppWpfDanMu/FileContentIndex/e63725e1-29af-4db4-b250-bcef0060c1a5.vsidx and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/FileContentIndex/eb33135b-f47f-42a3-b406-2847cb3b874f.vsidx b/.vs/YwxAppWpfDanMu/FileContentIndex/eb33135b-f47f-42a3-b406-2847cb3b874f.vsidx
deleted file mode 100644
index 92dd1bf..0000000
Binary files a/.vs/YwxAppWpfDanMu/FileContentIndex/eb33135b-f47f-42a3-b406-2847cb3b874f.vsidx and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/17a8d31f-2121-4996-8374-d2b1103769f3 b/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/17a8d31f-2121-4996-8374-d2b1103769f3
deleted file mode 100644
index e28e2c0..0000000
Binary files a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/17a8d31f-2121-4996-8374-d2b1103769f3 and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/49c2c06a-7321-4da3-8d4a-f64c31ed1915 b/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/49c2c06a-7321-4da3-8d4a-f64c31ed1915
deleted file mode 100644
index f004974..0000000
Binary files a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/49c2c06a-7321-4da3-8d4a-f64c31ed1915 and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/b3b1ace6-dc8d-4720-b3f4-c241f85a10ec b/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/b3b1ace6-dc8d-4720-b3f4-c241f85a10ec
deleted file mode 100644
index 908e533..0000000
Binary files a/.vs/YwxAppWpfDanMu/copilot-chat/b78ee3fe/sessions/b3b1ace6-dc8d-4720-b3f4-c241f85a10ec and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/v17/.futdcache.v2 b/.vs/YwxAppWpfDanMu/v17/.futdcache.v2
deleted file mode 100644
index 4635d87..0000000
Binary files a/.vs/YwxAppWpfDanMu/v17/.futdcache.v2 and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/v17/.suo b/.vs/YwxAppWpfDanMu/v17/.suo
deleted file mode 100644
index 3905f0c..0000000
Binary files a/.vs/YwxAppWpfDanMu/v17/.suo and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/v17/.wsuo b/.vs/YwxAppWpfDanMu/v17/.wsuo
deleted file mode 100644
index bfa7e8e..0000000
Binary files a/.vs/YwxAppWpfDanMu/v17/.wsuo and /dev/null differ
diff --git a/.vs/YwxAppWpfDanMu/v17/DocumentLayout.backup.json b/.vs/YwxAppWpfDanMu/v17/DocumentLayout.backup.json
deleted file mode 100644
index c9dfbaa..0000000
--- a/.vs/YwxAppWpfDanMu/v17/DocumentLayout.backup.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Version": 1,
- "WorkspaceRootPath": "D:\\repos\\YwxAppWpfDanMu\\",
- "Documents": [],
- "DocumentGroupContainers": [
- {
- "Orientation": 0,
- "VerticalTabListWidth": 256,
- "DocumentGroups": [
- {
- "DockedWidth": 323,
- "SelectedChildIndex": -1,
- "Children": [
- {
- "$type": "Bookmark",
- "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
- },
- {
- "$type": "Bookmark",
- "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
- },
- {
- "$type": "Bookmark",
- "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
- }
- ]
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/WpfApp1/MainWindow.xaml b/WpfApp1/MainWindow.xaml
index ce0636d..690c152 100644
--- a/WpfApp1/MainWindow.xaml
+++ b/WpfApp1/MainWindow.xaml
@@ -3,7 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:danmu="clr-namespace:YwxAppWpfDanMu.Controls;assembly=YwxAppWpfDanMu"
+ xmlns:danmu="clr-namespace:YwxAppWpfBarrage.Controls;assembly=YwxAppWpfBarrage"
mc:Ignorable="d"
Title="弹幕演示" Height="450" Width="800">
@@ -16,7 +16,7 @@
-
+
diff --git a/WpfApp1/MainWindow.xaml.cs b/WpfApp1/MainWindow.xaml.cs
index ef368c6..1a4a361 100644
--- a/WpfApp1/MainWindow.xaml.cs
+++ b/WpfApp1/MainWindow.xaml.cs
@@ -1,9 +1,9 @@
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
-using YwxAppWpfDanMu;
-using YwxAppWpfDanMu.Controls;
-using YwxAppWpfDanMu.Models;
+using YwxAppWpfBarrage;
+using YwxAppWpfBarrage.Controls;
+using YwxAppWpfBarrage.Models;
namespace WpfApp1;
@@ -19,61 +19,61 @@ public partial class MainWindow : Window
InitializeComponent();
// 订阅事件
- DanMuControl.DanMuClick += OnDanMuClick;
- DanMuControl.DanMuAdded += OnDanMuAdded;
- DanMuControl.DanMuRemoved += OnDanMuRemoved;
+ BarrageControl.BarrageClick += OnBarrageClick;
+ BarrageControl.BarrageAdded += OnBarrageAdded;
+ BarrageControl.BarrageRemoved += OnBarrageRemoved;
}
- private void OnDanMuClick(object sender, DanMuEventArgs e)
+ private void OnBarrageClick(object sender, BarrageEventArgs e)
{
MessageBox.Show($"点击了弹幕: {e.Message.Content}");
}
- private void OnDanMuAdded(object sender, DanMuEventArgs e)
+ private void OnBarrageAdded(object sender, BarrageEventArgs e)
{
// 可以在这里处理弹幕添加事件
}
- private void OnDanMuRemoved(object sender, DanMuEventArgs e)
+ private void OnBarrageRemoved(object sender, BarrageEventArgs e)
{
// 可以在这里处理弹幕移除事件
}
private void PauseButton_Click(object sender, RoutedEventArgs e)
{
- DanMuControl.IsPaused = true;
+ BarrageControl.IsPaused = true;
}
private void ResumeButton_Click(object sender, RoutedEventArgs e)
{
- DanMuControl.IsPaused = false;
+ BarrageControl.IsPaused = false;
}
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
- DanMuControl.ClearAll();
+ BarrageControl.ClearAll();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// 方法1: 添加单条弹幕
- AddSingleTestDanMu();
+ AddSingleTestBarrage();
// 方法2: 添加多条弹幕(批量)
- // AddMultipleTestDanMu(5);
+ // AddMultipleTestBarrage(5);
}
// 添加单条测试弹幕
- private void AddSingleTestDanMu()
+ private void AddSingleTestBarrage()
{
var colors = new[] { Colors.Red, Colors.Green, Colors.Blue, Colors.Yellow, Colors.White, Colors.Cyan, Colors.Magenta };
var fonts = new[] { "Microsoft YaHei", "SimSun", "Arial", "Segoe UI" };
- var message = new DanMuMessage
+ var message = new BarrageMessage
{
// Content = $"这是单条测试弹幕 {DateTime.Now:HH:mm:ss}",
Content = $"这是单条测试弹幕 ",
@@ -85,19 +85,19 @@ public partial class MainWindow : Window
// Opacity = 0.7 + _random.NextDouble() * 0.3,
AvatarUrl = "https://unpkg.com/outeres@0.0.10/demo/avatar/1.jpg" // 使用占位图作为头像
};
- DanMuControl.AddDanMu(message);
+ BarrageControl.AddBarrage(message);
}
// 添加多条测试弹幕
- private void AddMultipleTestDanMu(int count)
+ private void AddMultipleTestBarrage(int count)
{
- var messages = new List();
+ var messages = new List();
var colors = new[] { Colors.Red, Colors.Green, Colors.Blue, Colors.Yellow, Colors.White, Colors.Cyan, Colors.Magenta };
var fonts = new[] { "Microsoft YaHei", "SimSun", "Arial", "Segoe UI" };
for (int i = 0; i < count; i++)
{
- messages.Add(new DanMuMessage
+ messages.Add(new BarrageMessage
{
Content = $"批量测试弹幕 {i + 1} - {DateTime.Now:HH:mm:ss}",
Color = colors[_random.Next(colors.Length)],
@@ -110,6 +110,6 @@ public partial class MainWindow : Window
});
}
- DanMuControl.AddDanMuBatch(messages);
+ BarrageControl.AddBarrageBatch(messages);
}
}
\ No newline at end of file
diff --git a/WpfApp1/WpfApp1.csproj b/WpfApp1/WpfApp1.csproj
index 78f6dc5..de25faf 100644
--- a/WpfApp1/WpfApp1.csproj
+++ b/WpfApp1/WpfApp1.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/WpfApp1/obj/Debug/net8.0-windows/MainWindow.g.i.cs b/WpfApp1/obj/Debug/net8.0-windows/MainWindow.g.i.cs
index 730709b..1ca6fb7 100644
--- a/WpfApp1/obj/Debug/net8.0-windows/MainWindow.g.i.cs
+++ b/WpfApp1/obj/Debug/net8.0-windows/MainWindow.g.i.cs
@@ -61,7 +61,7 @@ namespace WpfApp1 {
return;
}
_contentLoaded = true;
- System.Uri resourceLocater = new System.Uri("/WpfApp1;component/mainwindow.xaml", System.UriKind.Relative);
+ System.Uri resourceLocater = new System.Uri("/WpfApp1;V1.0.0.0;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
diff --git a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfo.cs b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfo.cs
new file mode 100644
index 0000000..f451ed1
--- /dev/null
+++ b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyTitleAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..259d371
--- /dev/null
+++ b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+5870e39427d95ecaf95f3e7f0d2696bd9ded97099c3d61bcee307afeed84777f
diff --git a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..2d3e193
--- /dev/null
+++ b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = WpfApp1
+build_property.ProjectDir = D:\repos\YwxAppWpfBarrage\WpfApp1\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.assets.cache b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.assets.cache
index df8f4f6..e8fc0db 100644
Binary files a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.assets.cache and b/WpfApp1/obj/Debug/net8.0-windows/WpfApp1.assets.cache differ
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/WpfApp1/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
rename to WpfApp1/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
diff --git a/WpfApp1/obj/Release/net8.0-windows/App.g.i.cs b/WpfApp1/obj/Release/net8.0-windows/App.g.i.cs
new file mode 100644
index 0000000..dca47d7
--- /dev/null
+++ b/WpfApp1/obj/Release/net8.0-windows/App.g.i.cs
@@ -0,0 +1,71 @@
+#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "DCC59813AB95D23CF72F07367E2D9621042BF6D9"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using WpfApp1;
+
+
+namespace WpfApp1 {
+
+
+ ///
+ /// App
+ ///
+ public partial class App : System.Windows.Application {
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+
+ #line 5 "..\..\..\App.xaml"
+ this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+
+ #line default
+ #line hidden
+ }
+
+ ///
+ /// Application Entry Point.
+ ///
+ [System.STAThreadAttribute()]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public static void Main() {
+ WpfApp1.App app = new WpfApp1.App();
+ app.InitializeComponent();
+ app.Run();
+ }
+ }
+}
+
diff --git a/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfo.cs b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfo.cs
new file mode 100644
index 0000000..e2aaaff
--- /dev/null
+++ b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyTitleAttribute("WpfApp1")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..37f3f8e
--- /dev/null
+++ b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+29dbf76db50ae405a4c1163e544ff28dfe0654e089379128e7499a0c5aa0a08b
diff --git a/WpfApp1/obj/Release/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..d6c9ad9
--- /dev/null
+++ b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = WpfApp1
+build_property.ProjectDir = D:\repos\YwxAppWpfDanMu\WpfApp1\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.GlobalUsings.g.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs
rename to WpfApp1/obj/Release/net8.0-windows/WpfApp1.GlobalUsings.g.cs
diff --git a/WpfApp1/obj/Release/net8.0-windows/WpfApp1.assets.cache b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.assets.cache
new file mode 100644
index 0000000..add0e15
Binary files /dev/null and b/WpfApp1/obj/Release/net8.0-windows/WpfApp1.assets.cache differ
diff --git a/WpfApp1/obj/WpfApp1.csproj.nuget.dgspec.json b/WpfApp1/obj/WpfApp1.csproj.nuget.dgspec.json
index 4c1f1d6..7574f36 100644
--- a/WpfApp1/obj/WpfApp1.csproj.nuget.dgspec.json
+++ b/WpfApp1/obj/WpfApp1.csproj.nuget.dgspec.json
@@ -1,17 +1,17 @@
{
"format": 1,
"restore": {
- "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj": {}
+ "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj": {}
},
"projects": {
- "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj": {
+ "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj",
+ "projectUniqueName": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj",
"projectName": "WpfApp1",
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj",
+ "projectPath": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj",
"packagesPath": "C:\\Users\\shiy7\\.nuget\\packages\\",
- "outputPath": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\obj\\",
+ "outputPath": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
@@ -32,8 +32,8 @@
"net8.0-windows7.0": {
"targetAlias": "net8.0-windows",
"projectReferences": {
- "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj": {
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj"
+ "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj": {
+ "projectPath": "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj"
}
}
}
@@ -75,74 +75,6 @@
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json"
}
}
- },
- "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj",
- "projectName": "YwxAppWpfDanMu",
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj",
- "packagesPath": "C:\\Users\\shiy7\\.nuget\\packages\\",
- "outputPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\obj\\",
- "projectStyle": "PackageReference",
- "fallbackFolders": [
- "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
- ],
- "configFilePaths": [
- "C:\\Users\\shiy7\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "9.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- },
- "Microsoft.WindowsDesktop.App.WPF": {
- "privateAssets": "none"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
}
}
}
\ No newline at end of file
diff --git a/WpfApp1/obj/WpfApp1.csproj.nuget.g.props b/WpfApp1/obj/WpfApp1.csproj.nuget.g.props
index f1b0f28..43b1461 100644
--- a/WpfApp1/obj/WpfApp1.csproj.nuget.g.props
+++ b/WpfApp1/obj/WpfApp1.csproj.nuget.g.props
@@ -1,7 +1,7 @@
- True
+ False
NuGet
$(MSBuildThisFileDirectory)project.assets.json
$(UserProfile)\.nuget\packages\
diff --git a/WpfApp1/obj/project.assets.json b/WpfApp1/obj/project.assets.json
index 3a45fed..5190fb3 100644
--- a/WpfApp1/obj/project.assets.json
+++ b/WpfApp1/obj/project.assets.json
@@ -1,32 +1,12 @@
{
"version": 3,
"targets": {
- "net8.0-windows7.0": {
- "YwxAppWpfDanMu/1.0.0": {
- "type": "project",
- "framework": ".NETCoreApp,Version=v8.0",
- "compile": {
- "bin/placeholder/YwxAppWpfDanMu.dll": {}
- },
- "runtime": {
- "bin/placeholder/YwxAppWpfDanMu.dll": {}
- },
- "frameworkReferences": [
- "Microsoft.WindowsDesktop.App.WPF"
- ]
- }
- }
- },
- "libraries": {
- "YwxAppWpfDanMu/1.0.0": {
- "type": "project",
- "path": "../YwxAppWpfDanMu/YwxAppWpfDanMu.csproj",
- "msbuildProject": "../YwxAppWpfDanMu/YwxAppWpfDanMu.csproj"
- }
+ "net8.0-windows7.0": {}
},
+ "libraries": {},
"projectFileDependencyGroups": {
"net8.0-windows7.0": [
- "YwxAppWpfDanMu >= 1.0.0"
+ "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj"
]
},
"packageFolders": {
@@ -36,11 +16,11 @@
"project": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj",
+ "projectUniqueName": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj",
"projectName": "WpfApp1",
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\WpfApp1.csproj",
+ "projectPath": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj",
"packagesPath": "C:\\Users\\shiy7\\.nuget\\packages\\",
- "outputPath": "D:\\repos\\YwxAppWpfDanMu\\WpfApp1\\obj\\",
+ "outputPath": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
@@ -61,8 +41,8 @@
"net8.0-windows7.0": {
"targetAlias": "net8.0-windows",
"projectReferences": {
- "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj": {
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj"
+ "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj": {
+ "projectPath": "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj"
}
}
}
@@ -104,5 +84,16 @@
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json"
}
}
- }
+ },
+ "logs": [
+ {
+ "code": "NU1105",
+ "level": "Error",
+ "message": "找不到“D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj”的项目信息。如果使用 Visual Studio,这可能是因为该项目已被卸载或不属于当前解决方案,因此请从命令行运行还原。否则,项目文件可能无效或缺少还原所需的目标。",
+ "libraryId": "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj",
+ "targetGraphs": [
+ "net8.0-windows7.0"
+ ]
+ }
+ ]
}
\ No newline at end of file
diff --git a/WpfApp1/obj/project.nuget.cache b/WpfApp1/obj/project.nuget.cache
new file mode 100644
index 0000000..7e54efd
--- /dev/null
+++ b/WpfApp1/obj/project.nuget.cache
@@ -0,0 +1,18 @@
+{
+ "version": 2,
+ "dgSpecHash": "YlqQWizSB44=",
+ "success": false,
+ "projectFilePath": "D:\\repos\\YwxAppWpfBarrage\\WpfApp1\\WpfApp1.csproj",
+ "expectedPackageFiles": [],
+ "logs": [
+ {
+ "code": "NU1105",
+ "level": "Error",
+ "message": "找不到“D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj”的项目信息。如果使用 Visual Studio,这可能是因为该项目已被卸载或不属于当前解决方案,因此请从命令行运行还原。否则,项目文件可能无效或缺少还原所需的目标。",
+ "libraryId": "D:\\repos\\YwxAppWpfBarrage\\YwxAppWpfBarrage\\YwxAppWpfBarrage.csproj",
+ "targetGraphs": [
+ "net8.0-windows7.0"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu.sln b/YwxAppWpfBarrage.sln
similarity index 69%
rename from YwxAppWpfDanMu.sln
rename to YwxAppWpfBarrage.sln
index b309b85..e2afaad 100644
--- a/YwxAppWpfDanMu.sln
+++ b/YwxAppWpfBarrage.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35828.75
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YwxAppWpfDanMu", "YwxAppWpfDanMu\YwxAppWpfDanMu.csproj", "{BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfApp1", "WpfApp1\WpfApp1.csproj", "{7605DAD6-FF29-68CC-A841-EC859FB1D9DB}"
EndProject
Global
@@ -13,10 +11,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BCBD427E-7D3C-4FE7-A49D-CE45517E84A9}.Release|Any CPU.Build.0 = Release|Any CPU
{7605DAD6-FF29-68CC-A841-EC859FB1D9DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7605DAD6-FF29-68CC-A841-EC859FB1D9DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7605DAD6-FF29-68CC-A841-EC859FB1D9DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/YwxAppWpfDanMu/AssemblyInfo.cs b/YwxAppWpfBarrage/AssemblyInfo.cs
similarity index 88%
rename from YwxAppWpfDanMu/AssemblyInfo.cs
rename to YwxAppWpfBarrage/AssemblyInfo.cs
index 016393a..49c8260 100644
--- a/YwxAppWpfDanMu/AssemblyInfo.cs
+++ b/YwxAppWpfBarrage/AssemblyInfo.cs
@@ -10,7 +10,7 @@ using System.Windows;
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
-[assembly: AssemblyDescription("A WPF DanMu (bullet comment) control library")]
+[assembly: AssemblyDescription("A WPF Barrage (bullet comment) control library")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
diff --git a/YwxAppWpfDanMu/Controls/DanMuControl.xaml b/YwxAppWpfBarrage/Controls/BarrageControl.xaml
similarity index 70%
rename from YwxAppWpfDanMu/Controls/DanMuControl.xaml
rename to YwxAppWpfBarrage/Controls/BarrageControl.xaml
index fabaf4d..7cba091 100644
--- a/YwxAppWpfDanMu/Controls/DanMuControl.xaml
+++ b/YwxAppWpfBarrage/Controls/BarrageControl.xaml
@@ -1,9 +1,9 @@
-
-
+
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Controls/DanMuControl.xaml.cs b/YwxAppWpfBarrage/Controls/BarrageControl.xaml.cs
similarity index 60%
rename from YwxAppWpfDanMu/Controls/DanMuControl.xaml.cs
rename to YwxAppWpfBarrage/Controls/BarrageControl.xaml.cs
index 112ed7f..270f06d 100644
--- a/YwxAppWpfDanMu/Controls/DanMuControl.xaml.cs
+++ b/YwxAppWpfBarrage/Controls/BarrageControl.xaml.cs
@@ -5,32 +5,32 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
-using YwxAppWpfDanMu.Models;
-using YwxAppWpfDanMu.Services;
-using YwxAppWpfDanMu.Utils;
+using YwxAppWpfBarrage.Models;
+using YwxAppWpfBarrage.Services;
+using YwxAppWpfBarrage.Utils;
-namespace YwxAppWpfDanMu.Controls
+namespace YwxAppWpfBarrage.Controls
{
- public partial class DanMuControl : UserControl
+ public partial class BarrageControl : UserControl
{
- private readonly DanMuPool _danMuPool;
- private readonly DanMuDispatcher _dispatcher;
- private readonly DanMuQueueProcessor _queueProcessor;
+ private readonly BarragePool _danMuPool;
+ private readonly BarrageDispatcher _dispatcher;
+ private readonly BarrageQueueProcessor _queueProcessor;
private readonly RateLimiter _rateLimiter;
- private readonly DanMuPerformanceMonitor _performanceMonitor;
+ private readonly BarragePerformanceMonitor _performanceMonitor;
- internal List _tracks = new List();
- private readonly Dictionary _activeItems = new Dictionary();
+ internal List _tracks = new List();
+ private readonly Dictionary _activeItems = new Dictionary();
- public DanMuControl()
+ public BarrageControl()
{
InitializeComponent();
- _danMuPool = new DanMuPool(this);
- _dispatcher = new DanMuDispatcher(Dispatcher);
- _queueProcessor = new DanMuQueueProcessor(_dispatcher);
+ _danMuPool = new BarragePool(this);
+ _dispatcher = new BarrageDispatcher(Dispatcher);
+ _queueProcessor = new BarrageQueueProcessor(_dispatcher);
_rateLimiter = new RateLimiter(50); // 限制每秒50条
- _performanceMonitor = new DanMuPerformanceMonitor();
+ _performanceMonitor = new BarragePerformanceMonitor();
Loaded += OnLoaded;
Unloaded += OnUnloaded;
@@ -40,7 +40,7 @@ namespace YwxAppWpfDanMu.Controls
#region Dependency Properties
public static readonly DependencyProperty LineCountProperty = DependencyProperty.Register(
- "LineCount", typeof(int), typeof(DanMuControl), new PropertyMetadata(5, OnLineCountChanged));
+ "LineCount", typeof(int), typeof(BarrageControl), new PropertyMetadata(5, OnLineCountChanged));
public int LineCount
{
@@ -49,7 +49,7 @@ namespace YwxAppWpfDanMu.Controls
}
public static readonly DependencyProperty IsPausedProperty = DependencyProperty.Register(
- "IsPaused", typeof(bool), typeof(DanMuControl), new PropertyMetadata(false));
+ "IsPaused", typeof(bool), typeof(BarrageControl), new PropertyMetadata(false));
public bool IsPaused
{
@@ -61,15 +61,15 @@ namespace YwxAppWpfDanMu.Controls
#region Events
- public event EventHandler DanMuClick;
- public event EventHandler DanMuAdded;
- public event EventHandler DanMuRemoved;
+ public event EventHandler BarrageClick;
+ public event EventHandler BarrageAdded;
+ public event EventHandler BarrageRemoved;
#endregion
#region Public Methods
- public void AddDanMu(DanMuMessage message)
+ public void AddBarrage(BarrageMessage message)
{
if (!_rateLimiter.TryAcquire())
{
@@ -81,18 +81,18 @@ namespace YwxAppWpfDanMu.Controls
{
try
{
- if (DanMuFilter.ShouldFilter(message))
+ if (BarrageFilter.ShouldFilter(message))
return;
- var args = new DanMuEventArgs(message);
- DanMuAdded?.Invoke(this, args);
+ var args = new BarrageEventArgs(message);
+ BarrageAdded?.Invoke(this, args);
if (!args.Handled)
{
- _danMuPool.AddDanMu(message);
+ _danMuPool.AddBarrage(message);
}
- _performanceMonitor.RecordAddedDanMu();
+ _performanceMonitor.RecordAddedBarrage();
}
catch (Exception ex)
{
@@ -102,7 +102,7 @@ namespace YwxAppWpfDanMu.Controls
});
}
- public void AddDanMuBatch(IEnumerable messages)
+ public void AddBarrageBatch(IEnumerable messages)
{
_queueProcessor.EnqueueBatch(() =>
{
@@ -113,18 +113,18 @@ namespace YwxAppWpfDanMu.Controls
try
{
- if (DanMuFilter.ShouldFilter(message))
+ if (BarrageFilter.ShouldFilter(message))
continue;
- var args = new DanMuEventArgs(message);
- DanMuAdded?.Invoke(this, args);
+ var args = new BarrageEventArgs(message);
+ BarrageAdded?.Invoke(this, args);
if (!args.Handled)
{
- _danMuPool.AddDanMu(message);
+ _danMuPool.AddBarrage(message);
}
- _performanceMonitor.RecordAddedDanMu();
+ _performanceMonitor.RecordAddedBarrage();
}
catch (Exception ex)
{
@@ -172,7 +172,7 @@ namespace YwxAppWpfDanMu.Controls
double trackHeight = ActualHeight / LineCount;
for (int i = 0; i < LineCount; i++)
{
- _tracks.Add(new DanMuTrack
+ _tracks.Add(new BarrageTrack
{
Top = i * trackHeight,
Height = trackHeight,
@@ -183,33 +183,33 @@ namespace YwxAppWpfDanMu.Controls
private static void OnLineCountChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
- if (d is DanMuControl control)
+ if (d is BarrageControl control)
{
control.InitializeTracks();
}
}
- internal void OnDanMuItemClick(DanMuItem item)
+ internal void OnBarrageItemClick(BarrageItem item)
{
- var args = new DanMuEventArgs(item.Message);
- DanMuClick?.Invoke(this, args);
+ var args = new BarrageEventArgs(item.Message);
+ BarrageClick?.Invoke(this, args);
}
- internal void OnDanMuItemRemoved(DanMuItem item)
+ internal void OnBarrageItemRemoved(BarrageItem item)
{
- var args = new DanMuEventArgs(item.Message);
- DanMuRemoved?.Invoke(this, args);
+ var args = new BarrageEventArgs(item.Message);
+ BarrageRemoved?.Invoke(this, args);
}
#endregion
- internal class DanMuTrack
+ internal class BarrageTrack
{
public double Top { get; set; }
public double Height { get; set; }
public double Width { get; set; }
public double AvailablePosition { get; set; }
- public List ActiveItems { get; } = new List();
+ public List ActiveItems { get; } = new List();
}
}
}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Controls/DanMuFilter.cs b/YwxAppWpfBarrage/Controls/BarrageFilter.cs
similarity index 88%
rename from YwxAppWpfDanMu/Controls/DanMuFilter.cs
rename to YwxAppWpfBarrage/Controls/BarrageFilter.cs
index 20afdab..771b2d7 100644
--- a/YwxAppWpfDanMu/Controls/DanMuFilter.cs
+++ b/YwxAppWpfBarrage/Controls/BarrageFilter.cs
@@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Text.RegularExpressions;
-using YwxAppWpfDanMu.Models;
+using YwxAppWpfBarrage.Models;
-namespace YwxAppWpfDanMu.Controls
+namespace YwxAppWpfBarrage.Controls
{
- public static class DanMuFilter
+ public static class BarrageFilter
{
private static readonly List _blockedKeywords = new List();
private static readonly List _blockedPatterns = new List();
@@ -25,7 +25,7 @@ namespace YwxAppWpfDanMu.Controls
}
}
- public static bool ShouldFilter(DanMuMessage message)
+ public static bool ShouldFilter(BarrageMessage message)
{
if (message == null || string.IsNullOrWhiteSpace(message.Content))
return true;
diff --git a/YwxAppWpfDanMu/Controls/DanMuItem.xaml b/YwxAppWpfBarrage/Controls/BarrageItem.xaml
similarity index 94%
rename from YwxAppWpfDanMu/Controls/DanMuItem.xaml
rename to YwxAppWpfBarrage/Controls/BarrageItem.xaml
index b171db6..b366a02 100644
--- a/YwxAppWpfDanMu/Controls/DanMuItem.xaml
+++ b/YwxAppWpfBarrage/Controls/BarrageItem.xaml
@@ -1,4 +1,4 @@
- _messageQueue = new Queue();
+ private readonly BarrageControl _parent;
+ private readonly Queue _messageQueue = new Queue();
private readonly DispatcherTimer _timer;
private readonly Random _random = new Random();
- public DanMuPool(DanMuControl parent)
+ public BarragePool(BarrageControl parent)
{
_parent = parent ?? throw new ArgumentNullException(nameof(parent));
@@ -34,7 +34,7 @@ namespace YwxAppWpfDanMu.Controls
_timer.Stop();
}
- public void AddDanMu(DanMuMessage message)
+ public void AddBarrage(BarrageMessage message)
{
lock (_messageQueue)
{
@@ -49,7 +49,7 @@ namespace YwxAppWpfDanMu.Controls
_messageQueue.Clear();
}
- _parent.DanMuCanvas.Children.Clear();
+ _parent.BarrageCanvas.Children.Clear();
foreach (var track in _parent._tracks)
{
track.ActiveItems.Clear();
@@ -67,20 +67,20 @@ namespace YwxAppWpfDanMu.Controls
while (_messageQueue.Count > 0)
{
var message = _messageQueue.Dequeue();
- DispatchDanMu(message);
+ DispatchBarrage(message);
}
}
}
- private void DispatchDanMu(DanMuMessage message)
+ private void DispatchBarrage(BarrageMessage message)
{
// 找到最适合的轨道
var track = FindBestTrack(message);
if (track == null)
return;
- var danMuItem = new DanMuItem(message);
- danMuItem.Click += (s, args) => _parent.OnDanMuItemClick(danMuItem);
+ var danMuItem = new BarrageItem(message);
+ danMuItem.Click += (s, args) => _parent.OnBarrageItemClick(danMuItem);
// 测量弹幕宽度
danMuItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
@@ -90,7 +90,7 @@ namespace YwxAppWpfDanMu.Controls
Canvas.SetLeft(danMuItem, _parent.ActualWidth);
Canvas.SetTop(danMuItem, track.Top + (track.Height - danMuItem.DesiredSize.Height) / 2);
- _parent.DanMuCanvas.Children.Add(danMuItem);
+ _parent.BarrageCanvas.Children.Add(danMuItem);
track.ActiveItems.Add(danMuItem);
// 创建动画
@@ -104,9 +104,9 @@ namespace YwxAppWpfDanMu.Controls
animation.Completed += (s, args) =>
{
- _parent.DanMuCanvas.Children.Remove(danMuItem);
+ _parent.BarrageCanvas.Children.Remove(danMuItem);
track.ActiveItems.Remove(danMuItem);
- _parent.OnDanMuItemRemoved(danMuItem);
+ _parent.OnBarrageItemRemoved(danMuItem);
};
// 添加透明度渐变效果
@@ -125,7 +125,7 @@ namespace YwxAppWpfDanMu.Controls
track.AvailablePosition = _parent.ActualWidth + itemWidth + 10; // 10为间距
}
- private DanMuControl.DanMuTrack FindBestTrack(DanMuMessage message)
+ private BarrageControl.BarrageTrack FindBestTrack(BarrageMessage message)
{
if (_parent._tracks.Count == 0)
return null;
diff --git a/YwxAppWpfDanMu/Controls/DanMuSettings.cs b/YwxAppWpfBarrage/Controls/BarrageSettings.cs
similarity index 84%
rename from YwxAppWpfDanMu/Controls/DanMuSettings.cs
rename to YwxAppWpfBarrage/Controls/BarrageSettings.cs
index 4df16cd..e794ac1 100644
--- a/YwxAppWpfDanMu/Controls/DanMuSettings.cs
+++ b/YwxAppWpfBarrage/Controls/BarrageSettings.cs
@@ -1,8 +1,8 @@
using System.Windows.Media;
-namespace YwxAppWpfDanMu.Controls
+namespace YwxAppWpfBarrage.Controls
{
- public static class DanMuSettings
+ public static class BarrageSettings
{
public static Color DefaultColor { get; set; } = Colors.White;
public static double DefaultFontSize { get; set; } = 14;
diff --git a/YwxAppWpfDanMu/Models/DanMuEventArgs.cs b/YwxAppWpfBarrage/Models/BarrageEventArgs.cs
similarity index 57%
rename from YwxAppWpfDanMu/Models/DanMuEventArgs.cs
rename to YwxAppWpfBarrage/Models/BarrageEventArgs.cs
index bbbef8a..71f8ea1 100644
--- a/YwxAppWpfDanMu/Models/DanMuEventArgs.cs
+++ b/YwxAppWpfBarrage/Models/BarrageEventArgs.cs
@@ -6,14 +6,14 @@ using System.Threading.Tasks;
using System;
-namespace YwxAppWpfDanMu.Models
+namespace YwxAppWpfBarrage.Models
{
- public class DanMuEventArgs : EventArgs
+ public class BarrageEventArgs : EventArgs
{
- public DanMuMessage Message { get; }
+ public BarrageMessage Message { get; }
public bool Handled { get; set; }
- public DanMuEventArgs(DanMuMessage message)
+ public BarrageEventArgs(BarrageMessage message)
{
Message = message;
}
diff --git a/YwxAppWpfDanMu/Models/DanMuMessage.cs b/YwxAppWpfBarrage/Models/BarrageMessage.cs
similarity index 91%
rename from YwxAppWpfDanMu/Models/DanMuMessage.cs
rename to YwxAppWpfBarrage/Models/BarrageMessage.cs
index 3a899d4..2841fec 100644
--- a/YwxAppWpfDanMu/Models/DanMuMessage.cs
+++ b/YwxAppWpfBarrage/Models/BarrageMessage.cs
@@ -3,9 +3,9 @@ using System.Windows;
using System.Windows.Media;
using static System.Net.Mime.MediaTypeNames;
-namespace YwxAppWpfDanMu.Models
+namespace YwxAppWpfBarrage.Models
{
- public class DanMuMessage
+ public class BarrageMessage
{
public string Content { get; set; }
public Color Color { get; set; } = Colors.Orange;
diff --git a/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml b/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..0f65d41
--- /dev/null
+++ b/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,11 @@
+
+
+
+
+ Release
+ Any CPU
+ bin\Release\net8.0-windows\publish\
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml.user b/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..6f2d6b1
--- /dev/null
+++ b/YwxAppWpfBarrage/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,8 @@
+
+
+
+
+ True|2025-03-29T11:47:24.3486362Z||;True|2025-03-29T17:33:52.6402455+08:00||;
+
+
+
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Services/DanMuDispatcher.cs b/YwxAppWpfBarrage/Services/BarrageDispatcher.cs
similarity index 84%
rename from YwxAppWpfDanMu/Services/DanMuDispatcher.cs
rename to YwxAppWpfBarrage/Services/BarrageDispatcher.cs
index 1acf15b..b4b18e1 100644
--- a/YwxAppWpfDanMu/Services/DanMuDispatcher.cs
+++ b/YwxAppWpfBarrage/Services/BarrageDispatcher.cs
@@ -1,13 +1,13 @@
using System;
using System.Windows.Threading;
-namespace YwxAppWpfDanMu.Services
+namespace YwxAppWpfBarrage.Services
{
- public class DanMuDispatcher
+ public class BarrageDispatcher
{
private readonly Dispatcher _dispatcher;
- public DanMuDispatcher(Dispatcher dispatcher)
+ public BarrageDispatcher(Dispatcher dispatcher)
{
_dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
}
diff --git a/YwxAppWpfBarrage/Services/BarragePerformanceMonitor.cs b/YwxAppWpfBarrage/Services/BarragePerformanceMonitor.cs
new file mode 100644
index 0000000..3f30501
--- /dev/null
+++ b/YwxAppWpfBarrage/Services/BarragePerformanceMonitor.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace YwxAppWpfBarrage.Services
+{
+ public class BarragePerformanceMonitor
+ {
+ private readonly Stopwatch _stopwatch = new Stopwatch();
+ private readonly List _errors = new List();
+
+ private int _totalBarrageAdded;
+ private int _totalBarrageFiltered;
+ private int _totalBarrageRemoved;
+
+ public void Start()
+ {
+ _stopwatch.Start();
+ }
+
+ public void Stop()
+ {
+ _stopwatch.Stop();
+ }
+
+ public void RecordAddedBarrage()
+ {
+ _totalBarrageAdded++;
+ }
+
+ public void RecordFilteredBarrage()
+ {
+ _totalBarrageFiltered++;
+ }
+
+ public void RecordRemovedBarrage()
+ {
+ _totalBarrageRemoved++;
+ }
+
+ public void RecordClear()
+ {
+ _totalBarrageRemoved += _totalBarrageAdded - _totalBarrageRemoved;
+ }
+
+ public void RecordError(Exception ex)
+ {
+ _errors.Add(ex);
+ }
+
+ public PerformanceStats GetStats()
+ {
+ return new PerformanceStats
+ {
+ TotalTime = _stopwatch.Elapsed,
+ TotalBarrageAdded = _totalBarrageAdded,
+ TotalBarrageFiltered = _totalBarrageFiltered,
+ TotalBarrageRemoved = _totalBarrageRemoved,
+ Errors = _errors.ToArray(),
+ BarragePerSecond = _stopwatch.Elapsed.TotalSeconds > 0 ?
+ _totalBarrageAdded / _stopwatch.Elapsed.TotalSeconds : 0
+ };
+ }
+
+ public class PerformanceStats
+ {
+ public TimeSpan TotalTime { get; set; }
+ public int TotalBarrageAdded { get; set; }
+ public int TotalBarrageFiltered { get; set; }
+ public int TotalBarrageRemoved { get; set; }
+ public Exception[] Errors { get; set; }
+ public double BarragePerSecond { get; set; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/Services/IBarrageService.cs b/YwxAppWpfBarrage/Services/IBarrageService.cs
new file mode 100644
index 0000000..e15e160
--- /dev/null
+++ b/YwxAppWpfBarrage/Services/IBarrageService.cs
@@ -0,0 +1,13 @@
+using YwxAppWpfBarrage.Models;
+
+namespace YwxAppWpfBarrage.Services
+{
+ public interface IBarrageService
+ {
+ void AddBarrage(BarrageMessage message);
+ void AddBarrageBatch(IEnumerable messages);
+ void ClearAll();
+ void Pause();
+ void Resume();
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Utils/DanMuQueueProcessor.cs b/YwxAppWpfBarrage/Utils/BarrageQueueProcessor.cs
similarity index 89%
rename from YwxAppWpfDanMu/Utils/DanMuQueueProcessor.cs
rename to YwxAppWpfBarrage/Utils/BarrageQueueProcessor.cs
index f5ca049..0fa2b47 100644
--- a/YwxAppWpfDanMu/Utils/DanMuQueueProcessor.cs
+++ b/YwxAppWpfBarrage/Utils/BarrageQueueProcessor.cs
@@ -1,17 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using YwxAppWpfDanMu.Services;
+using YwxAppWpfBarrage.Services;
-namespace YwxAppWpfDanMu.Utils
+namespace YwxAppWpfBarrage.Utils
{
- public class DanMuQueueProcessor
+ public class BarrageQueueProcessor
{
- private readonly DanMuDispatcher _dispatcher;
+ private readonly BarrageDispatcher _dispatcher;
private readonly Queue _queue = new Queue();
private bool _isProcessing;
- public DanMuQueueProcessor(DanMuDispatcher dispatcher)
+ public BarrageQueueProcessor(BarrageDispatcher dispatcher)
{
_dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
}
diff --git a/YwxAppWpfDanMu/Utils/RateLimiter.cs b/YwxAppWpfBarrage/Utils/RateLimiter.cs
similarity index 97%
rename from YwxAppWpfDanMu/Utils/RateLimiter.cs
rename to YwxAppWpfBarrage/Utils/RateLimiter.cs
index 59b7caa..9401806 100644
--- a/YwxAppWpfDanMu/Utils/RateLimiter.cs
+++ b/YwxAppWpfBarrage/Utils/RateLimiter.cs
@@ -1,7 +1,7 @@
using System;
using System.Diagnostics;
-namespace YwxAppWpfDanMu.Utils
+namespace YwxAppWpfBarrage.Utils
{
public class RateLimiter
{
diff --git a/YwxAppWpfDanMu/YwxAppWpfDanMu.csproj b/YwxAppWpfBarrage/YwxAppWpfBarrage.csproj
similarity index 85%
rename from YwxAppWpfDanMu/YwxAppWpfDanMu.csproj
rename to YwxAppWpfBarrage/YwxAppWpfBarrage.csproj
index ae13c71..0227945 100644
--- a/YwxAppWpfDanMu/YwxAppWpfDanMu.csproj
+++ b/YwxAppWpfBarrage/YwxAppWpfBarrage.csproj
@@ -5,7 +5,7 @@
enable
true
enable
- YwxAppWpfDanMu
+ YwxAppWpfBarrage
diff --git a/YwxAppWpfBarrage/YwxAppWpfBarrage.csproj.user b/YwxAppWpfBarrage/YwxAppWpfBarrage.csproj.user
new file mode 100644
index 0000000..e4af762
--- /dev/null
+++ b/YwxAppWpfBarrage/YwxAppWpfBarrage.csproj.user
@@ -0,0 +1,14 @@
+
+
+
+ <_LastSelectedProfileId>D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\Properties\PublishProfiles\FolderProfile.pubxml
+
+
+
+ Code
+
+
+ Code
+
+
+
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.deps.json b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.deps.json
new file mode 100644
index 0000000..0079ec3
--- /dev/null
+++ b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "YwxAppWpfBarrage/1.0.0": {
+ "runtime": {
+ "YwxAppWpfBarrage.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "YwxAppWpfBarrage/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.dll b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.dll
new file mode 100644
index 0000000..47f399b
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.dll differ
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.pdb b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.pdb
new file mode 100644
index 0000000..ee60cd3
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfBarrage.pdb differ
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.deps.json b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.deps.json
new file mode 100644
index 0000000..d31e953
--- /dev/null
+++ b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "YwxAppWpfDanMu/1.0.0": {
+ "runtime": {
+ "YwxAppWpfDanMu.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "YwxAppWpfDanMu/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..78e6300
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.pdb b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.pdb
new file mode 100644
index 0000000..3a61330
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/YwxAppWpfDanMu.pdb differ
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.deps.json b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.deps.json
new file mode 100644
index 0000000..0079ec3
--- /dev/null
+++ b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "YwxAppWpfBarrage/1.0.0": {
+ "runtime": {
+ "YwxAppWpfBarrage.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "YwxAppWpfBarrage/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.dll b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.dll
new file mode 100644
index 0000000..47f399b
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.dll differ
diff --git a/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.pdb b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.pdb
new file mode 100644
index 0000000..ee60cd3
Binary files /dev/null and b/YwxAppWpfBarrage/bin/Release/net8.0-windows/publish/YwxAppWpfBarrage.pdb differ
diff --git a/YwxAppWpfDanMu/file1.md b/YwxAppWpfBarrage/file1.md
similarity index 86%
rename from YwxAppWpfDanMu/file1.md
rename to YwxAppWpfBarrage/file1.md
index 7705669..21e28b6 100644
--- a/YwxAppWpfDanMu/file1.md
+++ b/YwxAppWpfBarrage/file1.md
@@ -1,5 +1,5 @@
我在使用net8时 想用 WPF自定义控件库 实现一个弹幕库,
- 要求:根命名空间 YwxAppWpfDanMu
+ 要求:根命名空间 YwxAppWpfBarrage
支持多行显示
支持不同颜色
支持头像
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..2217181
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageControl.g.i.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageControl.g.i.cs
new file mode 100644
index 0000000..4cd66e9
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageControl.g.i.cs
@@ -0,0 +1,89 @@
+#pragma checksum "..\..\..\..\Controls\BarrageControl.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "CA3119762CFF2900153576861D181AFFE44BE11A"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageControl
+ ///
+ public partial class BarrageControl : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 8 "..\..\..\..\Controls\BarrageControl.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Canvas BarrageCanvas;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barragecontrol.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageControl.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.BarrageCanvas = ((System.Windows.Controls.Canvas)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageItem.g.i.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageItem.g.i.cs
new file mode 100644
index 0000000..768bed5
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/BarrageItem.g.i.cs
@@ -0,0 +1,111 @@
+#pragma checksum "..\..\..\..\Controls\BarrageItem.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4FB65E2B12F03963A5C83DB261F67716B4F4C6E4"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageItem
+ ///
+ public partial class BarrageItem : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 9 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Border Border;
+
+ #line default
+ #line hidden
+
+
+ #line 18 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Media.ImageBrush AvatarBrush;
+
+ #line default
+ #line hidden
+
+
+ #line 22 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBlock ContentText;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barrageitem.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageItem.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.Border = ((System.Windows.Controls.Border)(target));
+ return;
+ case 2:
+ this.AvatarBrush = ((System.Windows.Media.ImageBrush)(target));
+ return;
+ case 3:
+ this.ContentText = ((System.Windows.Controls.TextBlock)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/Controls/DanMuControl.g.i.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/DanMuControl.g.i.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/Controls/DanMuControl.g.i.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/DanMuControl.g.i.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/Controls/DanMuItem.g.i.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/DanMuItem.g.i.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/Controls/DanMuItem.g.i.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/Controls/DanMuItem.g.i.cs
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs
new file mode 100644
index 0000000..76baedf
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyTitleAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..7675ee7
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+4fc22e85757014e722ecbfbe8e878646bf7cadf7b3bb390f8727d07a4118a6aa
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..b67b0f8
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = YwxAppWpfBarrage
+build_property.ProjectDir = D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.GlobalUsings.g.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GlobalUsings.g.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.GlobalUsings.g.cs
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.assets.cache
new file mode 100644
index 0000000..949914f
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.assets.cache differ
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.BuildWithSkipAnalyzers b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.csproj.FileListAbsolute.txt
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.BuildWithSkipAnalyzers
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage.csproj.FileListAbsolute.txt
diff --git a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1_MarkupCompile.i.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache
similarity index 52%
rename from WpfApp1/obj/Debug/net8.0-windows/WpfApp1_MarkupCompile.i.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache
index b2ce7bb..3aa8314 100644
--- a/WpfApp1/obj/Debug/net8.0-windows/WpfApp1_MarkupCompile.i.cache
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache
@@ -1,20 +1,20 @@
-WpfApp1
+YwxAppWpfBarrage
1.0.0.0
-winexe
+library
C#
.cs
-D:\repos\YwxAppWpfDanMu\WpfApp1\obj\Debug\net8.0-windows\
-WpfApp1
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\
+YwxAppWpfBarrage
none
false
TRACE;DEBUG;NET;NET8_0;NETCOREAPP;WINDOWS;WINDOWS7_0;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER;WINDOWS7_0_OR_GREATER
-D:\repos\YwxAppWpfDanMu\WpfApp1\App.xaml
-11407045341
-6-294469655
-1991235962195
-MainWindow.xaml;
+2-1417908758
+
+161408862457
+198-344842731
+Controls\BarrageControl.xaml;Controls\BarrageItem.xaml;
False
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs
new file mode 100644
index 0000000..3ef251f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyTitleAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..817487a
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+f762a7b2f0f72af0ca5331eccecc18e00fe37158686035dad7d22658ed042db7
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..b67b0f8
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = YwxAppWpfBarrage
+build_property.ProjectDir = D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GlobalUsings.g.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache
similarity index 56%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache
index a33076c..2af580b 100644
Binary files a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.assets.cache differ
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.BuildWithSkipAnalyzers
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.BuildWithSkipAnalyzers
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..de3c035
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+749d145ae0ed5af5891240b1576b3d71603ffba5e07c99f759563efcf20f8031
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..e842536
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt
@@ -0,0 +1,17 @@
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Debug\net8.0-windows\YwxAppWpfDanMu.deps.json
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Debug\net8.0-windows\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Debug\net8.0-windows\YwxAppWpfDanMu.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu_MarkupCompile.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.g.resources
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.AssemblyInfoInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.AssemblyInfo.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\refint\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\YwxAppWpfDanMu.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\ref\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\Controls\BarrageControl.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\Controls\BarrageItem.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\Controls\BarrageControl.g.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\Controls\BarrageItem.g.cs
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..aeae966
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.g.resources b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.g.resources
new file mode 100644
index 0000000..98a267b
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.g.resources differ
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.pdb b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.pdb
new file mode 100644
index 0000000..289c51f
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu.pdb differ
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfo.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfo.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfo.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfoInputs.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfoInputs.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.AssemblyInfoInputs.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GlobalUsings.g.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GlobalUsings.g.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.GlobalUsings.g.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.assets.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.assets.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.assets.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.csproj.BuildWithSkipAnalyzers b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.csproj.BuildWithSkipAnalyzers
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.csproj.BuildWithSkipAnalyzers
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_2euk4l0m_wpftmp.csproj.BuildWithSkipAnalyzers
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache
new file mode 100644
index 0000000..77ac9b7
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache
@@ -0,0 +1,20 @@
+YwxAppWpfDanMu
+
+
+library
+C#
+.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\
+YwxAppWpfBarrage
+none
+false
+TRACE;DEBUG;NET;NET8_0;NETCOREAPP
+
+2-1417908758
+
+14944866446
+198-344842731
+Controls\BarrageControl.xaml;Controls\BarrageItem.xaml;
+
+False
+
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
similarity index 77%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
index 2b43233..32859fa 100644
--- a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
@@ -5,16 +5,16 @@ library
C#
.cs
D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Debug\net8.0-windows\
-YwxAppWpfDanMu
+YwxAppWpfBarrage
none
false
TRACE;DEBUG;NET;NET8_0;NETCOREAPP;WINDOWS;WINDOWS7_0;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER;WINDOWS7_0_OR_GREATER
-2-450690804
+2-1417908758
-161121933939
+16460682059
198-344842731
-Controls\DanMuControl.xaml;Controls\DanMuItem.xaml;
+Controls\BarrageControl.xaml;Controls\BarrageItem.xaml;
False
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfo.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfo.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfo.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfoInputs.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfoInputs.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.AssemblyInfoInputs.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GlobalUsings.g.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GlobalUsings.g.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.GlobalUsings.g.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.assets.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.assets.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.assets.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.csproj.BuildWithSkipAnalyzers b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.csproj.BuildWithSkipAnalyzers
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.csproj.BuildWithSkipAnalyzers
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_blwpo1k4_wpftmp.csproj.BuildWithSkipAnalyzers
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfo.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfo.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfo.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfoInputs.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfoInputs.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.AssemblyInfoInputs.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GlobalUsings.g.cs
new file mode 100644
index 0000000..08bb19f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.GlobalUsings.g.cs
@@ -0,0 +1,6 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.assets.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.assets.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_onvkylvm_wpftmp.assets.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfo.cs
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfo.cs
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfo.cs
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfoInputs.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfoInputs.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.AssemblyInfoInputs.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GeneratedMSBuildEditorConfig.editorconfig
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GlobalUsings.g.cs
new file mode 100644
index 0000000..08bb19f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.GlobalUsings.g.cs
@@ -0,0 +1,6 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.assets.cache b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.assets.cache
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.assets.cache
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.assets.cache
diff --git a/YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.csproj.BuildWithSkipAnalyzers b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.csproj.BuildWithSkipAnalyzers
similarity index 100%
rename from YwxAppWpfDanMu/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.csproj.BuildWithSkipAnalyzers
rename to YwxAppWpfBarrage/obj/Debug/net8.0-windows/YwxAppWpfDanMu_ur1h3wcf_wpftmp.csproj.BuildWithSkipAnalyzers
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/ref/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/ref/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..071e1f1
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/ref/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/Debug/net8.0-windows/refint/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/refint/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..071e1f1
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Debug/net8.0-windows/refint/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..2217181
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.baml b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.baml
new file mode 100644
index 0000000..1412ba6
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.baml differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.cs
new file mode 100644
index 0000000..4cd66e9
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.cs
@@ -0,0 +1,89 @@
+#pragma checksum "..\..\..\..\Controls\BarrageControl.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "CA3119762CFF2900153576861D181AFFE44BE11A"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageControl
+ ///
+ public partial class BarrageControl : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 8 "..\..\..\..\Controls\BarrageControl.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Canvas BarrageCanvas;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barragecontrol.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageControl.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.BarrageCanvas = ((System.Windows.Controls.Canvas)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.i.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.i.cs
new file mode 100644
index 0000000..4cd66e9
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageControl.g.i.cs
@@ -0,0 +1,89 @@
+#pragma checksum "..\..\..\..\Controls\BarrageControl.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "CA3119762CFF2900153576861D181AFFE44BE11A"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageControl
+ ///
+ public partial class BarrageControl : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 8 "..\..\..\..\Controls\BarrageControl.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Canvas BarrageCanvas;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barragecontrol.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageControl.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.BarrageCanvas = ((System.Windows.Controls.Canvas)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.baml b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.baml
new file mode 100644
index 0000000..188042c
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.baml differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.cs
new file mode 100644
index 0000000..768bed5
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.cs
@@ -0,0 +1,111 @@
+#pragma checksum "..\..\..\..\Controls\BarrageItem.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4FB65E2B12F03963A5C83DB261F67716B4F4C6E4"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageItem
+ ///
+ public partial class BarrageItem : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 9 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Border Border;
+
+ #line default
+ #line hidden
+
+
+ #line 18 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Media.ImageBrush AvatarBrush;
+
+ #line default
+ #line hidden
+
+
+ #line 22 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBlock ContentText;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barrageitem.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageItem.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.Border = ((System.Windows.Controls.Border)(target));
+ return;
+ case 2:
+ this.AvatarBrush = ((System.Windows.Media.ImageBrush)(target));
+ return;
+ case 3:
+ this.ContentText = ((System.Windows.Controls.TextBlock)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.i.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.i.cs
new file mode 100644
index 0000000..768bed5
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/BarrageItem.g.i.cs
@@ -0,0 +1,111 @@
+#pragma checksum "..\..\..\..\Controls\BarrageItem.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4FB65E2B12F03963A5C83DB261F67716B4F4C6E4"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfBarrage.Controls {
+
+
+ ///
+ /// BarrageItem
+ ///
+ public partial class BarrageItem : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 9 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Border Border;
+
+ #line default
+ #line hidden
+
+
+ #line 18 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Media.ImageBrush AvatarBrush;
+
+ #line default
+ #line hidden
+
+
+ #line 22 "..\..\..\..\Controls\BarrageItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBlock ContentText;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfBarrage;component/controls/barrageitem.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\BarrageItem.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.Border = ((System.Windows.Controls.Border)(target));
+ return;
+ case 2:
+ this.AvatarBrush = ((System.Windows.Media.ImageBrush)(target));
+ return;
+ case 3:
+ this.ContentText = ((System.Windows.Controls.TextBlock)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.baml b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.baml
new file mode 100644
index 0000000..728fe99
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.baml differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.cs
new file mode 100644
index 0000000..a96a9ff
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.cs
@@ -0,0 +1,89 @@
+#pragma checksum "..\..\..\..\Controls\DanMuControl.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "E082544CF5C7195C2B4AAFFD01191EF13D02288E"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfDanMu.Controls {
+
+
+ ///
+ /// DanMuControl
+ ///
+ public partial class DanMuControl : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 8 "..\..\..\..\Controls\DanMuControl.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Canvas DanMuCanvas;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfDanMu;component/controls/danmucontrol.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\DanMuControl.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.DanMuCanvas = ((System.Windows.Controls.Canvas)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.i.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.i.cs
new file mode 100644
index 0000000..a96a9ff
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuControl.g.i.cs
@@ -0,0 +1,89 @@
+#pragma checksum "..\..\..\..\Controls\DanMuControl.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "E082544CF5C7195C2B4AAFFD01191EF13D02288E"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfDanMu.Controls {
+
+
+ ///
+ /// DanMuControl
+ ///
+ public partial class DanMuControl : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 8 "..\..\..\..\Controls\DanMuControl.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Canvas DanMuCanvas;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfDanMu;component/controls/danmucontrol.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\DanMuControl.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.DanMuCanvas = ((System.Windows.Controls.Canvas)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.baml b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.baml
new file mode 100644
index 0000000..20f70ee
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.baml differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.cs
new file mode 100644
index 0000000..6feb164
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.cs
@@ -0,0 +1,111 @@
+#pragma checksum "..\..\..\..\Controls\DanMuItem.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "1250D4D6E85528DBB3B568E6B712FAF3ED68A4F5"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfDanMu.Controls {
+
+
+ ///
+ /// DanMuItem
+ ///
+ public partial class DanMuItem : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 9 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Border Border;
+
+ #line default
+ #line hidden
+
+
+ #line 18 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Media.ImageBrush AvatarBrush;
+
+ #line default
+ #line hidden
+
+
+ #line 22 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBlock ContentText;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfDanMu;component/controls/danmuitem.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\DanMuItem.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.Border = ((System.Windows.Controls.Border)(target));
+ return;
+ case 2:
+ this.AvatarBrush = ((System.Windows.Media.ImageBrush)(target));
+ return;
+ case 3:
+ this.ContentText = ((System.Windows.Controls.TextBlock)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.i.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.i.cs
new file mode 100644
index 0000000..6feb164
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/Controls/DanMuItem.g.i.cs
@@ -0,0 +1,111 @@
+#pragma checksum "..\..\..\..\Controls\DanMuItem.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "1250D4D6E85528DBB3B568E6B712FAF3ED68A4F5"
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace YwxAppWpfDanMu.Controls {
+
+
+ ///
+ /// DanMuItem
+ ///
+ public partial class DanMuItem : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 9 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Border Border;
+
+ #line default
+ #line hidden
+
+
+ #line 18 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Media.ImageBrush AvatarBrush;
+
+ #line default
+ #line hidden
+
+
+ #line 22 "..\..\..\..\Controls\DanMuItem.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBlock ContentText;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/YwxAppWpfDanMu;component/controls/danmuitem.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\Controls\DanMuItem.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "9.0.3.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.Border = ((System.Windows.Controls.Border)(target));
+ return;
+ case 2:
+ this.AvatarBrush = ((System.Windows.Media.ImageBrush)(target));
+ return;
+ case 3:
+ this.ContentText = ((System.Windows.Controls.TextBlock)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/PublishOutputs.74fe91d3b8.txt b/YwxAppWpfBarrage/obj/Release/net8.0-windows/PublishOutputs.74fe91d3b8.txt
new file mode 100644
index 0000000..73e0f17
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/PublishOutputs.74fe91d3b8.txt
@@ -0,0 +1,3 @@
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\publish\YwxAppWpfBarrage.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\publish\YwxAppWpfBarrage.deps.json
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\publish\YwxAppWpfBarrage.pdb
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs
new file mode 100644
index 0000000..31a271c
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyTitleAttribute("YwxAppWpfBarrage")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..23bbf91
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+086a088e16427eb3a074a0865f42ef617030d7fa3c93b7cd7dfdd0944d03f477
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..b67b0f8
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = YwxAppWpfBarrage
+build_property.ProjectDir = D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GlobalUsings.g.cs
new file mode 100644
index 0000000..08bb19f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.GlobalUsings.g.cs
@@ -0,0 +1,6 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.assets.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.assets.cache
new file mode 100644
index 0000000..020ea2e
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.assets.cache differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.CoreCompileInputs.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..75e793f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+77eefaa5e38a18a3f3f490568a066ebc02c4bcd76f4cc64b5e910a48be303386
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.FileListAbsolute.txt b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..e8f544f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.csproj.FileListAbsolute.txt
@@ -0,0 +1,17 @@
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfBarrage.deps.json
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfBarrage.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfBarrage.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\BarrageControl.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\BarrageItem.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\BarrageControl.g.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\BarrageItem.g.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage_MarkupCompile.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.g.resources
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.GeneratedMSBuildEditorConfig.editorconfig
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.AssemblyInfoInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.AssemblyInfo.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.csproj.CoreCompileInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\refint\YwxAppWpfBarrage.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfBarrage.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\ref\YwxAppWpfBarrage.dll
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.dll
new file mode 100644
index 0000000..47f399b
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.g.resources b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.g.resources
new file mode 100644
index 0000000..09c4eee
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.g.resources differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.pdb b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.pdb
new file mode 100644
index 0000000..ee60cd3
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage.pdb differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.cache
new file mode 100644
index 0000000..6d168d6
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.cache
@@ -0,0 +1,20 @@
+YwxAppWpfBarrage
+
+
+library
+C#
+.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\
+YwxAppWpfBarrage
+none
+false
+TRACE;RELEASE;NET;NET8_0;NETCOREAPP
+
+2-1417908758
+
+14-1888994059
+198-344842731
+Controls\BarrageControl.xaml;Controls\BarrageItem.xaml;
+
+False
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache
new file mode 100644
index 0000000..534cfa3
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfBarrage_MarkupCompile.i.cache
@@ -0,0 +1,20 @@
+YwxAppWpfBarrage
+1.0.0.0
+
+library
+C#
+.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\
+YwxAppWpfBarrage
+none
+false
+TRACE;RELEASE;NET;NET8_0;NETCOREAPP;WINDOWS;WINDOWS7_0;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER;WINDOWS7_0_OR_GREATER
+
+2-1417908758
+
+16277416042
+198-344842731
+Controls\BarrageControl.xaml;Controls\BarrageItem.xaml;
+
+False
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs
new file mode 100644
index 0000000..88ba9b5
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfo.cs
@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+07479c8c6b5d1bc1a226e3f92169457cefc591c0")]
+[assembly: System.Reflection.AssemblyProductAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyTitleAttribute("YwxAppWpfDanMu")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..b7d3835
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+471372324343a9e6432de8d0a61bfb8be181da5bd7fd41d78e2e7f966934ceb6
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..3e70af4
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,16 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = YwxAppWpfDanMu
+build_property.ProjectDir = D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.CsWinRTUseWindowsUIXamlProjections = false
+build_property.EffectiveAnalysisLevelStyle = 8.0
+build_property.EnableCodeStyleSeverity =
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs
new file mode 100644
index 0000000..08bb19f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.GlobalUsings.g.cs
@@ -0,0 +1,6 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.assets.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.assets.cache
new file mode 100644
index 0000000..a0e6b79
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.assets.cache differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..d636416
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+2da8f5b355292a3d2b727ebf3efb61dd5ea15c45b5b79a746796532543e64dcd
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..4651a48
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.csproj.FileListAbsolute.txt
@@ -0,0 +1,17 @@
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfDanMu.deps.json
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\bin\Release\net8.0-windows\YwxAppWpfDanMu.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\DanMuControl.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\DanMuItem.baml
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\DanMuControl.g.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\Controls\DanMuItem.g.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu_MarkupCompile.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.g.resources
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.GeneratedMSBuildEditorConfig.editorconfig
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.AssemblyInfoInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.AssemblyInfo.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.csproj.CoreCompileInputs.cache
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\refint\YwxAppWpfDanMu.dll
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\YwxAppWpfDanMu.pdb
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\ref\YwxAppWpfDanMu.dll
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..78e6300
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.g.resources b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.g.resources
new file mode 100644
index 0000000..8b9f914
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.g.resources differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.pdb b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.pdb
new file mode 100644
index 0000000..3a61330
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu.pdb differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache
new file mode 100644
index 0000000..b11a5e2
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.cache
@@ -0,0 +1,20 @@
+YwxAppWpfDanMu
+
+
+library
+C#
+.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\
+YwxAppWpfDanMu
+none
+false
+TRACE;RELEASE;NET;NET8_0;NETCOREAPP
+
+2-450690804
+
+14-319763673
+198-344842731
+Controls\DanMuControl.xaml;Controls\DanMuItem.xaml;
+
+False
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
new file mode 100644
index 0000000..72b0dc9
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/Release/net8.0-windows/YwxAppWpfDanMu_MarkupCompile.i.cache
@@ -0,0 +1,20 @@
+YwxAppWpfDanMu
+1.0.0.0
+
+library
+C#
+.cs
+D:\repos\YwxAppWpfDanMu\YwxAppWpfDanMu\obj\Release\net8.0-windows\
+YwxAppWpfDanMu
+none
+false
+TRACE;RELEASE;NET;NET8_0;NETCOREAPP;WINDOWS;WINDOWS7_0;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER;WINDOWS7_0_OR_GREATER
+
+2-450690804
+
+16-1803139877
+198-344842731
+Controls\DanMuControl.xaml;Controls\DanMuItem.xaml;
+
+False
+
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfBarrage.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfBarrage.dll
new file mode 100644
index 0000000..f7b4a4d
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfBarrage.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..e94fb90
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/ref/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfBarrage.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfBarrage.dll
new file mode 100644
index 0000000..f7b4a4d
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfBarrage.dll differ
diff --git a/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfDanMu.dll b/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfDanMu.dll
new file mode 100644
index 0000000..e94fb90
Binary files /dev/null and b/YwxAppWpfBarrage/obj/Release/net8.0-windows/refint/YwxAppWpfDanMu.dll differ
diff --git a/YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.dgspec.json b/YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..d509406
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.dgspec.json
@@ -0,0 +1,76 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj": {}
+ },
+ "projects": {
+ "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "projectName": "YwxAppWpfBarrage",
+ "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "packagesPath": "C:\\Users\\shiy7\\.nuget\\packages\\",
+ "outputPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\shiy7\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0-windows"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0-windows7.0": {
+ "targetAlias": "net8.0-windows",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.200"
+ },
+ "frameworks": {
+ "net8.0-windows7.0": {
+ "targetAlias": "net8.0-windows",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ },
+ "Microsoft.WindowsDesktop.App.WPF": {
+ "privateAssets": "none"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.g.props b/YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.g.props
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.g.props
rename to YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.g.props
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.g.targets b/YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.g.targets
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.g.targets
rename to YwxAppWpfBarrage/obj/YwxAppWpfBarrage.csproj.nuget.g.targets
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.dgspec.json b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.dgspec.json
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu.csproj.nuget.dgspec.json
rename to YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.dgspec.json
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.props b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.g.props
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.props
rename to YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.g.props
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.targets b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.g.targets
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.targets
rename to YwxAppWpfBarrage/obj/YwxAppWpfDanMu.csproj.nuget.g.targets
diff --git a/YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.dgspec.json b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.dgspec.json
similarity index 100%
rename from YwxAppWpfDanMu/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.dgspec.json
rename to YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.dgspec.json
diff --git a/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.props b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.props
new file mode 100644
index 0000000..f1b0f28
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.props
@@ -0,0 +1,16 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\shiy7\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.13.2
+
+
+
+
+
+
\ No newline at end of file
diff --git a/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.targets b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/YwxAppWpfDanMu_onvkylvm_wpftmp.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/obj/project.assets.json b/YwxAppWpfBarrage/obj/project.assets.json
similarity index 95%
rename from YwxAppWpfDanMu/obj/project.assets.json
rename to YwxAppWpfBarrage/obj/project.assets.json
index 288960f..92cdc79 100644
--- a/YwxAppWpfDanMu/obj/project.assets.json
+++ b/YwxAppWpfBarrage/obj/project.assets.json
@@ -14,9 +14,9 @@
"project": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj",
- "projectName": "YwxAppWpfDanMu",
- "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfDanMu.csproj",
+ "projectUniqueName": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "projectName": "YwxAppWpfBarrage",
+ "projectPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
"packagesPath": "C:\\Users\\shiy7\\.nuget\\packages\\",
"outputPath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\obj\\",
"projectStyle": "PackageReference",
diff --git a/YwxAppWpfBarrage/obj/project.nuget.cache b/YwxAppWpfBarrage/obj/project.nuget.cache
new file mode 100644
index 0000000..503c02f
--- /dev/null
+++ b/YwxAppWpfBarrage/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "iNob0lIOf3A=",
+ "success": true,
+ "projectFilePath": "D:\\repos\\YwxAppWpfDanMu\\YwxAppWpfDanMu\\YwxAppWpfBarrage.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Services/DanMuPerformanceMonitor.cs b/YwxAppWpfDanMu/Services/DanMuPerformanceMonitor.cs
deleted file mode 100644
index b2d5b64..0000000
--- a/YwxAppWpfDanMu/Services/DanMuPerformanceMonitor.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-
-namespace YwxAppWpfDanMu.Services
-{
- public class DanMuPerformanceMonitor
- {
- private readonly Stopwatch _stopwatch = new Stopwatch();
- private readonly List _errors = new List();
-
- private int _totalDanMuAdded;
- private int _totalDanMuFiltered;
- private int _totalDanMuRemoved;
-
- public void Start()
- {
- _stopwatch.Start();
- }
-
- public void Stop()
- {
- _stopwatch.Stop();
- }
-
- public void RecordAddedDanMu()
- {
- _totalDanMuAdded++;
- }
-
- public void RecordFilteredDanMu()
- {
- _totalDanMuFiltered++;
- }
-
- public void RecordRemovedDanMu()
- {
- _totalDanMuRemoved++;
- }
-
- public void RecordClear()
- {
- _totalDanMuRemoved += _totalDanMuAdded - _totalDanMuRemoved;
- }
-
- public void RecordError(Exception ex)
- {
- _errors.Add(ex);
- }
-
- public PerformanceStats GetStats()
- {
- return new PerformanceStats
- {
- TotalTime = _stopwatch.Elapsed,
- TotalDanMuAdded = _totalDanMuAdded,
- TotalDanMuFiltered = _totalDanMuFiltered,
- TotalDanMuRemoved = _totalDanMuRemoved,
- Errors = _errors.ToArray(),
- DanMuPerSecond = _stopwatch.Elapsed.TotalSeconds > 0 ?
- _totalDanMuAdded / _stopwatch.Elapsed.TotalSeconds : 0
- };
- }
-
- public class PerformanceStats
- {
- public TimeSpan TotalTime { get; set; }
- public int TotalDanMuAdded { get; set; }
- public int TotalDanMuFiltered { get; set; }
- public int TotalDanMuRemoved { get; set; }
- public Exception[] Errors { get; set; }
- public double DanMuPerSecond { get; set; }
- }
- }
-}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/Services/IDanMuService.cs b/YwxAppWpfDanMu/Services/IDanMuService.cs
deleted file mode 100644
index 2c22476..0000000
--- a/YwxAppWpfDanMu/Services/IDanMuService.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using YwxAppWpfDanMu.Models;
-
-namespace YwxAppWpfDanMu.Services
-{
- public interface IDanMuService
- {
- void AddDanMu(DanMuMessage message);
- void AddDanMuBatch(IEnumerable messages);
- void ClearAll();
- void Pause();
- void Resume();
- }
-}
\ No newline at end of file
diff --git a/YwxAppWpfDanMu/YwxAppWpfDanMu.csproj.user b/YwxAppWpfDanMu/YwxAppWpfDanMu.csproj.user
deleted file mode 100644
index a84271f..0000000
--- a/YwxAppWpfDanMu/YwxAppWpfDanMu.csproj.user
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
- Code
-
-
- Code
-
-
-
\ No newline at end of file