核心類:Bitmap(像素操作)、Graphics(繪圖)、Color(顏色結構)、Rectangle(區域)。關鍵方法:GetPixel/SetPixel、DrawImage。
for (int x = 0; x < w; x++)
for (int y = 0; y < h; y++)
{
Color p = src.GetPixel(x, y);
dst.SetPixel(x, y, Color.FromArgb(255 - p.R, 255 - p.G, 255 - p.B));
}
Color p1 = src.GetPixel(x, y), p2 = src.GetPixel(x+1, y+1);
int r = Math.Abs(p1.R - p2.R + 128).Clamp(0, 255);
// 同理 G,B
dst.SetPixel(x, y, Color.FromArgb(r, g, b));
(R+G+B)/3Max(R,G,B)0.7*R + 0.2*G + 0.1*B
int[] Gauss = {1,2,1, 2,4,2, 1,2,1}; // 權重和 16
for (int dx=-1; dx<=1; dx++)
for (int dy=-1; dy<=1; dy++)
{
Color p = src.GetPixel(x+dx, y+dy);
r += p.R * Gauss[idx]; // 同理 G,B
idx++;
}
r /= 16; dst.SetPixel(x, y, Color.FromArgb(r.Clamp(), g.Clamp(), b.Clamp()));
int[] Laplacian = {-1,-1,-1, -1,9,-1, -1,-1,-1};
// 同高斯卷積,無需除法,直接 Clamp
Random rnd = new Random();
int dx = x + rnd.Next(19), dy = y + rnd.Next(19);
dst.SetPixel(x, y, src.GetPixel(dx.Clamp(w), dy.Clamp(h)));
Point center = new Point(w/2, h/2);
int radius = Math.Min(w, h) / 2;
for (int x=0; x
垂直/水平分割圖像為等寬條帶,按序繪製並 Thread.Sleep 產生動畫。
將圖像分為 N×M 塊,隨機順序繪製塊,最後恢復原圖。
int model = 2; // 鄰域半徑
Color c = src.GetPixel(x + rnd.Next(model), y + rnd.Next(model));
dst.SetPixel(x, y, c);
Point[] pts = {
new Point(offset, offset),
new Point(w, offset),
new Point(0, h - offset)
};
g.DrawImage(src, pts); // 平行四邊形映射
int avg = (p.R + p.G + p.B) / 3;
int val = avg >= 128 ? 255 : 0;
dst.SetPixel(x, y, Color.FromArgb(val, val, val));
LockBits 直接操作內存,避免 GetPixel/SetPixel 巨大開銷Parallel.For 分行處理這 12 種特效涵蓋了圖像處理的核心類別:點運算、鄰域卷積、幾何變換、隨機采樣。理解其數學原理,可輕松擴展更多濾鏡。實際項目中建議使用 GPU 加速庫(如 OpenCV、SkiaSharp)獲得實時性能。
