// _ _ //| | _____ _ __| |_ __ _ _ __ _ __ ____ //| |/ / _ \| '__| __/ _` | '_ \| '_ \ ____|_ / //| | (_) | | | || (_| | |_) | |_) |_____/ / //|_|\_\___/|_| \__\__,_| .__/| .__/ /___| // |_| |_| #include #include #include #include #include // 高性能边框路径生成 void GenerateBorderPath(int width, int height, int radius, const char* outputPath) { std::ofstream out(outputPath); const float pi = 3.1415926f; const int segments = 24; // 高分段数确保平滑 std::vector points; // 优化后的圆角路径生成 auto addArc = [&](float startAngle, float endAngle, float cx, float cy) { for (int i = 0; i <= segments; ++i) { float angle = startAngle + (endAngle - startAngle) * i / segments; points.push_back({ cx + radius * cosf(angle), cy + radius * sinf(angle) }); } }; // 左上角 addArc(pi, 3*pi/2, radius, radius); // 右上角 addArc(3*pi/2, 2*pi, width - radius, radius); // 右下角 addArc(0, pi/2, width - radius, height - radius); // 左下角 addArc(pi/2, pi, radius, height - radius); // 闭合路径 points.push_back(points[0]); // 写入优化格式 if (out.is_open()) { for (const auto& p : points) { out << p.x << "," << p.y << "\n"; } } } int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { int argc; LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); if (argc != 5) return 1; int width = _wtoi(argv[1]); int height = _wtoi(argv[2]); int radius = _wtoi(argv[3]); char outputPath[MAX_PATH]; wcstombs(outputPath, argv[4], MAX_PATH); GenerateBorderPath(width, height, radius, outputPath); return 0; }