gpt4 book ai didi

.net - 如何给button.text 添加文本轮廓?

转载 作者:行者123 更新时间:2023-12-01 06:06:23 24 4
gpt4 key购买 nike

button with backgroundimage and text

enter image description here

由于图像颜色的问题,文本不可读,我能想到的解决问题的唯一方法是在按钮文本中添加文本轮廓,但我不知道如何添加轮廓

或者也许有人可以提出任何其他好主意来解决将背景图像添加到按钮后文本的可读性问题?

最佳答案

正如其他人所提到的,没有一个简单的属性可以将文本呈现为轮廓。您需要绘制文本或执行其他操作。

一个很简单的方法是一个“空心”的轮廓字体:

Dim bmp As New Bitmap("C:\Temp\BigHead_thumb1.jpg")
Dim txt = "I AM BIGHEAD"
Using g = Graphics.FromImage(bmp)
Using fnt = New Font("OutLined", 20)

Dim sz = g.MeasureString(txt, fnt)

Dim x = (bmp.Width - sz.Width) / 2
Dim y = (bmp.Height - sz.Height) - 10

g.DrawString(txt, fnt, Brushes.AntiqueWhite, x, y)
pb1.Image = bmp

End Using
End Using

结果:

enter image description here

我不认为结果是那么膨胀。如果你想让文本脱颖而出,让图像显示文本的一部分并不能很好地达到这个目的。图片越小,效果越差。

如果您必须寻找轮廓样式字体,您可能需要考虑从某个地方购买/许可它。许多免费软件看起来都不对劲。

为了使其更加突出,您可以在文本后面使用黑色。它有点粗糙,但允许最大的可读性,尤其是当图像很小的时候:

Using g = Graphics.FromImage(bmp)
Using fnt = New Font("VERDANA", 18)

Dim sz = g.MeasureString(txt, fnt).ToSize()
Dim x = (bmp.Width - sz.Width) \ 2
Dim y = (bmp.Height - sz.Height) - 10

Dim r = New Rectangle(x, y, sz.Width + 8, sz.Height + 2)
g.FillRectangle(Brushes.Black, r)
g.DrawString(txt, fnt, Brushes.AntiqueWhite, r)
pb1.Image = bmp

End Using
End Using

结果:

enter image description here

在这两个极端之间,您可以使用 GraphicsPath 绘制超大文本图像作为背面部分,然后在其上绘制不同颜色的实际文本。

Using g = Graphics.FromImage(bmp)
Using fnt = New Font("VERDANA", 18)
Dim sz = g.MeasureString(txt, fnt).ToSize()
Dim x = (bmp.Width - sz.Width) \ 2
Dim y = (bmp.Height - sz.Height) - 10

Using gp As New GraphicsPath,
br As New SolidBrush(Color.DimGray),
p As New Pen(Color.WhiteSmoke, 6)

gp.AddString(" " & txt, fnt.FontFamily, 1,
22, New Point(x, y),
StringFormat.GenericTypographic)
g.DrawPath(p, gp)
g.FillPath(br, gp)

End Using
End Using
End Using
pb1.Image = bmp

它有点复杂,但结果相当不错:

enter image description here

左边的图片使用了上面的代码。中心图像对两种颜色都使用 WhiteSmoke,外部 Pen 颜色使用较低的 Alpha 值,从而产生更柔和的外观。右边的那支笔使用接近黑色的颜色来充当一种遮光效果。

最好多用几个计算变量。例如,轮廓不是 22,而应该是一些基于字体大小的值,例如 +25%,因此结果会根据使用的字体大小进行缩放。

关于.net - 如何给button.text 添加文本轮廓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com