Skip to content

Commit 16f1774

Browse files
update: Readme.md,explain the projects usages
1 parent 21737a0 commit 16f1774

File tree

1 file changed

+50
-43
lines changed

1 file changed

+50
-43
lines changed

README.md

Lines changed: 50 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,91 @@
11
# WindowImagePlayer API 文档
22

3-
![1234566](https://github.com/user-attachments/assets/5dde0031-80de-49d4-a1e9-812d30fb3c93)
3+
**GIF 演示(请等待加载)**
44

5+
![1234566](https://github.com/user-attachments/assets/5dde0031-80de-49d4-a1e9-812d30fb3c93)
56

67
`WindowImagePlayerHost` 是一个基于 WinForms 的组件,通过在桌面上动态控制大量原生窗口的位置和尺寸来复现图像序列。它支持增量渲染、性能优化配置以及自动化运行模式。
78

8-
这个工具可以用于创作视觉效果或者音乐卡点,使用数个Windows窗口渲染指定文件夹内所有黑白图片。
9+
该工具主要用于创作视觉效果(如:Bad Apple 窗口版)或音乐卡点,利用多个 Windows 窗口渲染指定文件夹内的所有图像(支持黑白及灰度判定)。
10+
11+
---
12+
13+
## 1. 解决方案项目说明
14+
15+
本仓库包含两个主要项目,以便于开发者集成和测试:
16+
17+
| 项目名称 | 类型 | 说明 |
18+
| :--- | :--- | :--- |
19+
| **`WindowsDraw.API`** | 类库 (Library) | **核心项目**。包含播放器核心逻辑和 `WindowImagePlayerHost` 类。集成开发时请引用此项目。 |
20+
| **`WindowsDraw.Test`** | 启动项 (App) | **演示项目**。展示了如何调用 API 进行播放,可作为参考 Demo 直接运行。 |
21+
22+
> **调用建议**:在你的生产项目中,请添加对 `WindowsDraw.API` 项目的引用,并确保引入 `using WindowImagePlayer;` 命名空间。
23+
24+
---
925

10-
## 1. 快速入门
26+
## 2. 快速入门
1127

12-
`Program.cs` 中直接初始化并运行
28+
在你的项目(建议为 Windows 窗体应用或控制台应用)中调用
1329

1430
```csharp
31+
using WindowImagePlayer; // 引用 API 项目命名空间
32+
1533
static void Main()
1634
{
1735
Application.EnableVisualStyles();
1836
Application.SetCompatibleTextRenderingDefault(false);
1937

38+
// 实例化 API 项目中的宿主类
2039
var player = new WindowImagePlayerHost(@"C:\PathToImages")
2140
{
2241
AutoStart = true, // 启动后立即播放
2342
AutoCloseWhenFinished = true, // 播放完自动退出
2443
StepSize = 30, // 采样步长
25-
FrameInterval = 50 // 50ms 一帧
44+
FrameInterval = 50, // 50ms 一帧
45+
WindowColor = Color.White // 窗口颜色
2646
};
2747

2848
Application.Run(player);
2949
}
3050
```
3151

32-
## 2. 构造函数
52+
---
3353

34-
### `WindowImagePlayerHost(string targetFolderPath)`
35-
初始化播放器宿主。
36-
* **参数**: `targetFolderPath` (string) - 包含图像文件(.jpg, .png, .bmp)的文件夹路径。文件将按文件名排序播放。
54+
## 3. API 详细规格
3755

38-
---
56+
### 构造函数:`WindowImagePlayerHost(string targetFolderPath)`
57+
* **参数**: `targetFolderPath` (string) - 包含图像文件(.jpg, .png, .bmp)的文件夹路径。
3958

40-
## 3. 公开配置属性
59+
### 公开配置属性
4160

4261
| 属性名 | 类型 | 默认值 | 说明 |
4362
| :--- | :--- | :--- | :--- |
44-
| `AutoStart` | `bool` | `false` |`true` 时,启动程序不显示控制面板,直接开始播放。 |
45-
| `AutoCloseWhenFinished` | `bool` | `true` |`true` 时,播放完最后一帧会自动关闭宿主程序。 |
46-
| `StepSize` | `int` | `25` | 采样步长(单位:像素)。值越小画面越精细,但生成的窗口数量越多。建议范围 20-50。 |
47-
| `BrightnessThreshold` | `float` | `0.4f` | 黑色判定阈值(0.0-1.0)。亮度低于此值的区域会生成窗口。 |
48-
| `FrameInterval` | `int` | `200` | 帧间隔(单位:毫秒)。控制播放速度。 |
49-
| `ResetRatio` | `double` | `1.9` | 重刷阈值。新一帧窗口数超过当前池 `N` 倍时,会销毁所有窗口重建以提高性能。 |
50-
| `WindowColor` | `Color` | `White` | 像素窗口的背景颜色。 |
51-
| `WindowTitle` | `string` | `" "` | 像素窗口的标题栏文字。 |
52-
| `CurrentIndex` | `int` | `0` | (只读) 当前正在播放的图像索引。 |
53-
54-
---
55-
56-
## 4. 公开方法
57-
58-
### `StartPlayback()`
59-
手动开始播放。如果 `AutoStart``false`,可调用此方法启动逻辑。
60-
61-
### `StopPlayback()`
62-
停止播放并销毁当前桌面上所有的像素窗口。
63+
| **`AutoStart`** | `bool` | `false` |`true` 时,不显示控制面板,运行即播放(静默模式)。 |
64+
| **`AutoCloseWhenFinished`** | `bool` | `true` |`true` 时,播放完最后一帧会自动结束进程。 |
65+
| **`StepSize`** | `int` | `25` | 采样步长(像素)。值越小画面越细但窗口越多,建议 20-50。 |
66+
| **`BrightnessThreshold`** | `float` | `0.4f` | 亮度阈值(0.0-1.0)。低于此值的颜色将被绘制为窗口。 |
67+
| **`FrameInterval`** | `int` | `200` | 帧率控制(毫秒)。 |
68+
| **`ResetRatio`** | `double` | `1.9` | 窗口池重刷比例。用于处理画面剧烈闪烁时的性能平衡。 |
69+
| **`WindowColor`** | `Color` | `White` | 生成的像素窗口背景色。 |
70+
| **`WindowTitle`** | `string` | `" "` | 像素窗口的标题栏文本。 |
6371

6472
---
6573

66-
## 5. 运行模式说明
74+
## 4. 运行模式说明
6775

68-
1. **控制台模式 (`AutoStart = false`)**:
69-
* 程序启动后会显示一个中心窗口,点击“开始播放”按钮后触发
70-
* 适合手动调试或选择播放时机
76+
1. **控制台交互模式 (`AutoStart = false`)**:
77+
* 启动后显示一个 300x150 的控制窗口,点击“开始播放”按钮后触发渲染
78+
* 适合调试参数或手动触发效果
7179

72-
2. **静默模式 (`AutoStart = true`)**:
73-
* 宿主窗口将完全透明且不显示在任务栏。
74-
* 程序启动后直接根据图片序列在屏幕上绘制窗口。
75-
* 配合 `AutoCloseWhenFinished = true` 可以实现完全自动化的视觉效果演示。
80+
2. **静默执行模式 (`AutoStart = true`)**:
81+
* 控制窗体完全透明且不显示在任务栏,用户直接看到桌面窗口跳动效果。
82+
* 适合配合脚本或自动化演示。
7683

7784
---
7885

79-
## 6. 注意事项
86+
## 5. 重要注意事项
8087

81-
* **性能消耗**: `StepSize` 设置得过小(如 < 15)会导致系统瞬间产生数千个窗口,可能造成系统卡顿或图形驱动响应缓慢
82-
* **资源清理**: 类内部已实现 `OnFormClosing` 逻辑,关闭宿主窗口时会自动释放并销毁所有池中的子窗口
83-
* **排序依赖**: 图像文件必须具有可排序的文件名(如 `frame_001.jpg`, `frame_002.jpg`
84-
* **如果使用静默模式,请务必提供关闭方法(比如应用程序为“控制台应用程序”而不是“Windows应用程序”)或者指定 `AutoCloseWhenFinished``True`否则将会死循环!**
88+
* **性能消耗**: `StepSize` 设置得过小(如 < 15)会导致系统瞬间产生数千个窗口,可能造成桌面窗口管理器 (DWM) 卡顿
89+
* **文件依赖**: 图像文件必须按顺序命名(如 `001.jpg`, `002.jpg`),API 内部会按名称进行升序排列
90+
* **进程残留警告**: **如果使用静默模式 (`AutoStart = true`),请务必将 `AutoCloseWhenFinished` 设为 `true`**。否则在播放结束后,由于主窗口隐藏,用户很难手动关闭进程,可能导致内存残留
91+
* **资源清理**: 类内部已封装 `OnFormClosing` 逻辑,关闭主程序时会强制销毁所有创建的子窗口。

0 commit comments

Comments
 (0)