2016-10-14 40 views
1

我希望能夠在C#中的橫幅圖像上應用一些文本。到目前爲止,我有一個類控制,通過標題,href和圖像src,但我想添加文本而不保存它。將文本添加到圖像而不保存

所以我想使用標題我拉過並應用ontop。

下面是我嘗試應用到它的圖形。我只是想疊加文字,而不是創建一個新的圖像。

private void GenerateBannerTitle() 
{ 
    Bitmap bannerSource = new Bitmap(PhysicalBannerPath); 
    //bannerSource.Save(PhysicalBannerPath); 
    RectangleF rectf = new RectangleF(430, 50, 650, 50); 

    using (Graphics g = Graphics.FromImage(bannerSource)) 
    { 
     g.SmoothingMode = SmoothingMode.AntiAlias; 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
     g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; 
     g.DrawString("hfsdfdsfds", new Font("courier sans", 100, FontStyle.Bold), Brushes.White, rectf); 
    } 
} 

任何幫助或想法。這可以通過c#中的內聯css來完成,或者可以有一種方法來改變我現在將它應用到ontop上。

目前我只是通過圖像。它只是應用文本,我需要了解和工作。

+2

看一看的MemoryStream的圖像和返回類型看看文件流內容 –

+0

爲什麼你不只是申請一個標籤? –

+0

@CiroCorvino我該怎麼做?你可以幫忙 –

回答

1

使用內存流的圖像返回爲Base64字符串

private string GenerateBannerTitle() 
    { 
     var bitmap = new Bitmap(PhysicalBannerPath); 
     RectangleF rectf = new RectangleF(430, 50, 650, 50); 

     using (var g = Graphics.FromImage(bitmap)) 
     { 
      using (var arialFont = new Font("Arial", 10)) 
      { 
       g.SmoothingMode = SmoothingMode.AntiAlias; 
       g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
       g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
       g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; 
       g.DrawString("hfsdfdsfds", new Font("courier sans", 100, FontStyle.Bold), Brushes.White, rectf); 
      } 
     } 


     var ms = new MemoryStream(); 

     bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 

     var arr = new byte[ms.Length]; 

     ms.Position = 0; 
     ms.Read(arr, 0, (int)ms.Length); 
     ms.Close(); 

     var strBase64 = Convert.ToBase64String(arr); 

     return strBase64; 

    } 

而且顯示在HTML中,如:

<img src="data:image/jpg;base64,the returned data"/> 
相關問題