使用C#中的内联图像替换标签中的文本

时间:2016-01-20 21:14:43

标签: c# image label controls paint

我的程序有几个Label控件,每隔一段时间就会更新为不同的文本。我想在文本中引用一些图标。我认为不是只显示" (E)"在Label中,应该有一种方法可以用我看到的相应图像替换它:e http://web.mta.info/nyct/service/images/e.png。我想我需要覆盖Label.Paint事件,但我不太清楚如何正确地做到这一点。每次出现" (E)"需要用内嵌图像替换。

实施例

查找顶部的(E)图标。查找顶部的e http://web.mta.info/nyct/service/images/e.png图标。

1 个答案:

答案 0 :(得分:0)

这不是一项微不足道的工作。

  1. 您必须在派生的标签类上提供一个属性,以将图像附加到文本中。
  2. 在文本中嵌入某种令牌以表示图像。
  3. 在OnPaint中,您必须解析令牌的文本
  4. 为令牌之间的每个文本位执行graphics.MeasureString()。然后使用graphics.DrawString()向右移动文本的宽度,使用众多graphics.DrawImage()覆盖中的一个基于令牌渲染图像 - 向右移动图像的宽度并重复。