1 回答

TA貢獻1906條經(jīng)驗 獲得超3個贊
開始很簡單:通過執(zhí)行 a 創(chuàng)建一個透明位圖g.Clear(Color.Transparent),然后用一種顏色繪制/填充一個圓圈。
下一步有點棘手:接下來你想用透明度繪制孔。
為此,您需要將 Graphics 對象切換到右側(cè)CompositingMode;默認是SourceOver但是你想要的SourceCopy。前者覆蓋了創(chuàng)建混合顏色的 alpha 值。后者將做我們想做的事:通過將繪制的顏色(包括 alpha)復制到舊的顏色上來繪制洞。
這是一個例子:
Bitmap bmp = new Bitmap(500, 500);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.Transparent);
//g.SmoothingMode = SmoothingMode.AntiAlias;
g.CompositingMode = CompositingMode.SourceCopy;
g.FillEllipse(Brushes.DarkGreen, 100, 100, 300, 300);
g.FillEllipse(Brushes.Transparent, 200, 200, 100, 100);
}
pictureBox1.Image = bmp;
這是 a PictureBoxwith a 的樣子BackgroundImage:
幾點注意事項:
您還可以使用半透明畫筆創(chuàng)建一個“著色”孔;但是不要為此使用抗鋸齒,因為它會引入彩色邊緣。
我們在這里使用了簡單的圓圈,但
GraphicsPath
您可以創(chuàng)建和填充幾乎任何形狀和復雜性的形狀。并且使用 a
GraphicsPath
也可以作為填充透明度的替代方法:首先添加大橢圓,然后添加較小的內(nèi)橢圓,路徑將創(chuàng)建一個帶有孔的路徑,填充它會得到完全相同的結(jié)果!但我發(fā)現(xiàn)上面的解決方案更有指導意義..最后說明:正如 clarkitect 所指出的,要保存,請使用支持透明度的格式。
Png
總是推薦..
- 1 回答
- 0 關(guān)注
- 279 瀏覽
添加回答
舉報