ASP.NET MVC程序中如何用DrawString实现图片文本黄色高亮?
实现文本黄色高亮效果的解决方案
嘿,我明白你现在的困扰——用DrawString确实没法直接给文本加高亮背景,不过咱们换个思路就能搞定:先画一个黄色的背景矩形,再在上面绘制文本,这样就能完美模拟出高亮效果啦!
具体实现步骤:
- 测量文本尺寸:先用
Graphics.MeasureString算出目标文本在指定字体下的宽高,这样才能精准确定高亮矩形的大小。 - 绘制黄色背景:根据测量出的文本尺寸,画一个比文本稍大一圈的黄色矩形(可以调整边距,让高亮看起来更自然)。
- 叠加绘制文本:最后把文本画在黄色矩形上方,注意坐标要和矩形对应上,保证文本刚好落在高亮区域里。
完整代码示例:
// 假设你已拥有Graphics对象g,以及text、fontSize、fontColor、textAlign这些变量 Font textFont = new Font("Arial", fontSize); // 替换为你实际使用的字体 StringFormat textFormat = new StringFormat(); textFormat.Alignment = textAlign; // 对齐方式和文本保持一致 // 第一步:测量文本的实际尺寸 SizeF textSize = g.MeasureString(text, textFont, int.MaxValue, textFormat); // 第二步:绘制黄色高亮背景(调整padding值可改变高亮边距) int padding = 3; RectangleF highlightArea = new RectangleF( 200 - padding, // X坐标,减去padding让左侧也有高亮 320 - padding, // Y坐标,减去padding让顶部也有高亮 textSize.Width + padding * 2, // 宽度加上左右padding textSize.Height + padding * 2 // 高度加上上下padding ); g.FillRectangle(Brushes.Yellow, highlightArea); // 第三步:在高亮背景上绘制文本 g.DrawString(text, textFont, fontColor, 200, 320, textFormat);
额外小技巧:
- 如果是多行文本,
MeasureString会自动计算整体高度,高亮矩形也能完美适配多行内容。 - 要是想要圆角高亮效果,可以用
GraphicsPath绘制自定义圆角矩形,再填充黄色即可。
内容的提问来源于stack exchange,提问作者luca bogani
相关产品推荐
相关产品推荐

