開發者希望在 MFC 專案中對特定文字繪製「霧化/模糊」效果,類似毛玻璃或景深模糊視覺效果。
GDI+ 原生不支援直接模糊文字,需採用「離屏繪製 → 位元圖模糊 → 繪製至螢幕」流程:
CreateCompatibleDC/CreateCompatibleBitmap)。Graphics::DrawString 將文字繪製至位元圖。BitBlt 或 AlphaBlend 至目標視窗 DC。// 1. 離屏繪製文字
CMemDC memDC(pDC, rect);
Graphics g(memDC.GetSafeHdc());
FontFamily ff(L"微軟正黑體");
Font font(&ff, 24, FontStyleRegular, UnitPixel);
SolidBrush brush(Color(255, 0, 0, 0));
g.DrawString(L"示範文字", -1, &font, PointF(10,10), &brush);
// 2. 取得位元圖像素並模糊(略,參考高斯卷積實作)
// GaussianBlur(memDC.GetBitmap(), radius);
// 3. 繪回螢幕
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
ID2D1Effect::GaussianBlur,效能優於 GDI+,適合高幀率動畫。WS_EX_LAYERED + UpdateLayeredWindow 配合 Alpha 通道漸變,可實現簡易淡入淡出模糊感。高斯模糊為 O(N×R²) 複雜度(N=像素數,R=模糊半徑),建議:
OnPaint 重複運算。選擇適合專案技術棧的方案,即可在 MFC 中實現專業級文字霧化效果。