C#表单按钮填充

时间:2016-04-19 03:23:01

标签: c# winforms button text padding

在C#表单中,我正在尝试使用漂亮的按钮但是我无法克服文本"填充"问题

Problematic Button

Desired Button

我已经开始考虑它应该如何看待,但我无法实现它。 它应该是带有黑色边框的平面按钮和"选项"其中的文字(如第二张图片)。 但某种"填充"隐藏了很大一部分内容。

更改字体大小有点帮助,但我想坚持按钮的~16px高度和字体小,所以它适合在那里是不可读的。

我已经尝试将Button的Padding属性设置为0。 我已经在考虑一些解决方法,比如重写OnPaint事件/制作多个控件(比如,将它与标签结合),但我担心性能影响。

2 个答案:

答案 0 :(得分:1)

是的,我拍了一下,这是我能做的最好的。

Here

我使用带有平面按钮的图像,边框提供黑色边框以外的灰色区域。一种变通方法。不管。

以下是按钮背景background的图片。

按钮的代码:

{{1}}

答案 1 :(得分:0)

所以我用

解决了这个问题
case class A(id: Int)
case class B(id: Int)
case class C(id: Int)
case class Merged(as: List[A], bs: List[B], cs: List[C])

import akka.stream._
import akka.stream.scaladsl._

val as = Source(List(A(1), A(2), A(3), A(4), A(5)))
val bs = Source(List(B(1), B(2), B(3), B(4), B(5)))
val cs = Source(List(C(1), C(1), C(3), C(4)))

val merged = ???
// value 1: Merged(List(A(1)), List(B(1)), List(C(1), C(1)))
// value 2: Merged(List(A(2)), List(B(2)), Nil)
// value 3: Merged(List(A(3)), List(B(3)), List(C(3)))
// value 4: Merged(List(A(4)), List(B(4)), List(C(4)))
// value 5: Merged(List(A(5)), List(B(5)), Nil)
// (end of stream)

编辑:我发现我需要在DrawString / DrawText中使用TextOffset而不是FixedTextLocation(也可以使用它来代替DrawString)。