我希望能够在C#中的横幅图像上应用一些文本。到目前为止,我有一个类控件,通过标题,href和图像src,但我想在不保存的情况下添加文本。
所以我想使用我提到的标题并将其应用于顶部。
下面是我试图应用的图形。我只想在其上叠加文字,而不是创建新图像。
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来完成,或者可以有一种方法来改变我现在所拥有的只是将其应用于顶部。
目前我正在翻阅图像。它只是应用我需要理解并开始工作的文本。
答案 0 :(得分: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"/>