Как создать прозрачное растровое изображение? Это дает черный фон, когда я устанавливаю свойство Graphics.clear (color.Transparent).) - PullRequest
1 голос
/ 27 июля 2011

Я использую тег на странице aspx с именем displayImage.aspx и назначаю ему значение атрибута src, которое является другой страницей aspx с именем getImageFromText.aspx

** src = "getImageFromText.aspx". **

Я написал код для создания растрового изображения в getImageFromText.aspx.cs и сохранения его в памяти, но я не могу сделать это изображение прозрачным . Когда я устанавливаю Graphics.clear (color.Прозрачный), затем он дает черные фоновые метки, которые нужно установить Graphics.clear (color.ANYCOLOR), чтобы удалить этот черный фон.Пожалуйста, дайте мне совет или любой код, из которого я могу сделать прозрачный фон для растрового изображения.
Код ниже

защищенный void Page_Load (отправитель объекта, EventArgs e) {

    if (Request.QueryString["phone"] != null)
    {
        CreateBitmapImage(Request.QueryString["phone"]);
    }

    //  CreateBitmapImage("Call Now 123-457-1222");

}
private void CreateBitmapImage(string phonenumber)
{

    string message = "Call Now " + phonenumber.ToString();
    Bitmap objBmpImage = new Bitmap(1, 1);



    int intWidth = 0;

    int intHeight = 0;


    // Create the Font object for the image text drawing.
    FontFamily[] fontFamilies;
    PrivateFontCollection fontCollection = new PrivateFontCollection();
    fontCollection.AddFontFile(Server.MapPath("Futura-Condensed-Bold.ttf"));
    fontFamilies = fontCollection.Families;
    string familyName = "";
    familyName = fontFamilies[0].Name;
    Font objFont = new Font(familyName, 19, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);




    // Create a graphics object to measure the text's width and height.

    Graphics objGraphics = Graphics.FromImage(objBmpImage);



    // This is where the bitmap size is determined.

    intWidth = (int)objGraphics.MeasureString(message, objFont).Width;

    intHeight = (int)objGraphics.MeasureString(message, objFont).Height;



    // Create the bmpImage again with the correct size for the text and font.

    objBmpImage = new Bitmap(objBmpImage, new Size(intWidth, intHeight));



    // Add the colors to the new bitmap.

    objGraphics = Graphics.FromImage(objBmpImage);



    // Set Background color "#5496CA"
    string xCol = "#5496CA";
    Color clearClr = System.Drawing.ColorTranslator.FromHtml(xCol);
    objGraphics.Clear(clearClr);

    objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
    objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
    objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;

    objGraphics.DrawString(message, objFont, new SolidBrush(Color.White), 0, 0);



    MemoryStream memoryStream = new MemoryStream();
    objBmpImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);

    // Write the MemoryStream to the Response stream, and set content type to image/gif.
    memoryStream.WriteTo(Response.OutputStream);
    Response.ContentType = "image/gif";
    Response.End();

    // Clean up.
    memoryStream.Close();
    objGraphics.Flush();




}

1 Ответ

3 голосов
/ 27 июля 2011

Использование:

Bitmap.MakeTransparent , используя в качестве параметра цвет, который вы хотите сделать прозрачным.

С уважением.

...