本系列第十二篇,實作「積木效果」:將圖像像素按平均亮度二值化為黑/白,呈現類積木塊視覺風格。
avg = (R+G+B)/3。avg >= 128 → 白 (255),否則 黑 (0)。
private void btnBlockEffect_Click(object sender, EventArgs e)
{
try
{
using (var g = panel1.CreateGraphics())
using (var src = MyBitmap)
{
int w = src.Width, h = src.Height;
using (var bmp = src.Clone(new RectangleF(0, 0, w, h), PixelFormat.DontCare))
{
for (int x = 0; x < w - 1; x++)
{
for (int y = 0; y < h - 1; y++)
{
Color c = bmp.GetPixel(x, y);
int avg = (c.R + c.G + c.B) / 3;
int v = avg >= 128 ? 255 : 0;
bmp.SetPixel(x, y, Color.FromArgb(255, v, v, v));
}
}
g.Clear(Color.WhiteSmoke);
g.DrawImage(bmp, new Rectangle(0, 0, w, h));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示");
}
}

GetPixel/SetPixel,速度提升 100 倍以上。Parallel.For 分行處理。本系列展示 12 種靜態圖像特效(底片、浮雕、黑白、柔化、銳化、霧化、光照、百葉窗、馬賽克、油畫、積木),核心類別:Bitmap、Graphics、Color、Rectangle。關鍵方法:Graphics.DrawImage (30 種多載),習慣用 DrawImage(Image, Rectangle) ——「把特定效果的圖裝進特定效果的框」。
靜態特效是基礎,後續可擴充動態效果(分塊合成、四周擴散、上下對接)。原理相通,掌握像素級操作與 Graphics 繪圖管線,即可實作豐富視覺應用。