我有一個應用程序,允許用戶創建不超過帶有所需背景色的文本的簡單圖像。用戶可以從System.Windows.Forms.ColorDialog
中選擇一種顏色,並用它來設置文本顏色和背景顏色。如何保存帶有透明背景的gif?
背景顏色可以設置爲透明(我使用Color.Transparent
作爲透明度的參考),選擇之後,我更新預覽圖像,以正確顯示文本和透明度。但是,當我去保存圖像時,我無法獲得用圖像作爲gif保存的透明度。
我發現this article其中規定我應該使用MakeTransparent
方法來設置透明度顏色。
在我調用保存操作之前,我將內存中的圖像作爲背景/透明顏色使用黑色重新繪製,然後在保存圖像之前,在內存圖像上調用MakeTransperent
方法。儘管如此,圖像仍以黑色作爲背景進行保存。
我會做什麼錯?
編輯:這裏是相關的代碼。
這是創建圖像的方法。 overrideBG
變量用於指定是否應將透明度顏色設置爲gif的非alpha顏色。
void ReDrawImage(bool overrideBG = false) //My method that draws the image in memory.
{
//My In Memory Image creation
img = new Bitmap(sz.Width, sz.Height);
Graphics gfx = Graphics.FromImage(img);
...
//This portion of code sets the BG color to what should be the transparency color, if the BG is transparent
if (overrideBG)
{
gfx.Clear(TransparentColor); //TransparentColor = Black, unless Text Color is Black. If so, it equals White.
}
else
{
gfx.Clear(BackColorPreview.BackColor);
}
//Followed by code that writes the text.
}
//This is the save method (Assume we are always drawing a transparent background.)
Save()
{
ReDrawImage(true);
img.MakeTransparent(TransparentColor); //I've also tried moving this line before the ReDrawImage call
img.Save(SaveFile.FileName, ImageFormat.Gif);
ReDrawImage();
}
發佈您的代碼。 – lincolnk