【问题标题】:How can I draw legible text on a bitmap (Winforms)?如何在位图(Winforms)上绘制清晰的文本?
【发布时间】:2014-09-23 03:38:51
【问题描述】:

我编写了一个照片查看器,我想在照片上叠加文字。无论底层位图是什么样子,我都希望字体或字体颜色使位图顶部的文本尽可能清晰。

我目前的想法是取位图的文本将出现的区域,对该区域进行某种“整体颜色”计算,然后将字体颜色设置为相应的对比。

但是,这个数学计算方式超出了我的想象。有没有人见过一种方法来进行这种“所有这些像素的平均颜色是多少”计算?或者这甚至不是最好的方法?

编辑:我将第二部分移至另一个问题。

【问题讨论】:

    标签: c# winforms text bitmap


    【解决方案1】:

    您可以使用它来计算位图区域的平均颜色: How to calculate the average rgb color values of a bitmap 您是否将图像存储为Bitmap

    您还可以绘制轮廓文本。例如,带有黑色轮廓的白色文本。这将使文本在大多数背景上可见: How to Drawing Text with Outline onto Images?

    【讨论】:

    • 我可能应该提到文本不会很大;它本质上是图像元数据。所以我怀疑轮廓字体不起作用。不过,这是一篇非常有用的帖子,我已将其添加为书签 :-)
    • 至于“我是否将图像存储为位图”,我很灵活。我从文件中读取图像并将其分配给 PictureBox 图像。如果我能算好的话,我就在图片框上扔一个透明标签,并设置相应的字体颜色。
    • 这太棒了!我从stackoverflow.com/a/6185448/3784949 窃取了 Till 的代码。看起来这正是我需要的。现在......呃,我如何抓取原始位图的一个区域并将其转换为我可以提供给 Till 代码的位图?我有坐标……只是不知道如何用它们制作另一个位图……
    • 我认为您可以稍微修改一下该代码。只需将Rectangle 作为CalculateAverageColor 函数的参数传递并修改xy 循环以从Rectangle.LeftRectangle.Top 相应地循环到Rectangle.RightRectangle.Bottom
    猜你喜欢
    • 2015-08-27
    • 1970-01-01
    • 2013-07-29
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多