在 400×400 視窗中,以 25 等分圓周節點兩兩連線,形成密集幾何紋理,視覺酷似金剛石切面折射光輝。
(ClientSize.Width/2, ClientSize.Height/2) 與半徑 Width/2.2。2π/25。circleX[], circleY[]。for i=0..23, for j=i+1..24 畫線連接所有節點對(共 C(25,2)=300 條線)。using System;
using System.Drawing;
using System.Windows.Forms;
public class DrawDiamond : Form {
public static void Main() {
Application.Run(new DrawDiamond());
}
public DrawDiamond() {
Text = "金剛石圖案";
BackColor = Color.Black;
ForeColor = Color.White;
ResizeRedraw = true; // 視窗縮放自動重繪
Width = 400; Height = 400;
}
protected override void OnPaint(PaintEventArgs e) {
var g = e.Graphics;
var pen = new Pen(ForeColor, 2);
float radius = Width / 2.2f;
const int partitions = 25;
float angleStep = (float)(2 * Math.PI / partitions);
float[] xs = new float[partitions];
float[] ys = new float[partitions];
float cx = ClientSize.Width / 2f;
float cy = ClientSize.Height / 2f;
for (int i = 0; i < partitions; i++) {
double angle = i * angleStep;
xs[i] = (float)(radius * Math.Cos(angle)) + cx;
ys[i] = (float)(radius * Math.Sin(angle)) + cy;
}
for (int i = 0; i < partitions - 1; i++)
for (int j = i + 1; j < partitions; j++)
g.DrawLine(pen, xs[i], ys[i], xs[j], ys[j]);
pen.Dispose(); // 釋放非託管資源
}
}
PointF[],OnPaint 僅遍歷畫線;Resize 時重算。Timer 旋轉相位角 angleOffset,每幀 Invalidate() 產生旋轉效果。LinearGradientBrush 或 HSB 漸變為每條線著色,增強立體感。MouseMove 取得滑鼠極座標,動態調整 partitions 或半徑。此圖形本質是 完全圖 K25 的圓周佈局。若將節點數改為 n,線條數為 n(n-1)/2。n > 50 時線條過密失去美感,建議 12~36 之間。更進階可嘗試 玫瑰線、李薩如曲線 等參數方程生成節點,創造更豐富幾何藝術。