0
私はthis解決策を見つけたので、WinFormsボタンにテキストとして2行を挿入する必要があります。私は上記の最初の行を黒色で印刷する必要があり、2行目は最初の行を赤色で印刷する必要があります。私の問題は、背景の矩形は透明ではないということです。透明になるためには背景の矩形が必要なので、私はいくつかの改善を行ったが、成功しなかった。また、最初の行は中央ではなく(垂直)上に印刷され、2行の間の距離(行間)はあまりにも離れています。私もそれを減らし、ボタン内の2つの線を垂直に配置したいと思います。コードの下に。WinForms:2つの行が1つずつあるボタン
private void TextButton(Button btn, string line1, string line2)
{
btn.Text = String.Empty;
Bitmap bmp = new Bitmap(btn.ClientRectangle.Width, btn.ClientRectangle.Height);
using (Graphics G = Graphics.FromImage(bmp))
{
G.Clear(btn.BackColor);
StringFormat SF = new StringFormat();
SF.Alignment = StringAlignment.Center;
SF.LineAlignment = StringAlignment.Near;
using (Font tahoma = new Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold))
{
Rectangle RC = btn.ClientRectangle;
RC.Inflate(-5, -5);
G.FillRectangle(Brushes.Transparent,RC.X,RC.Y,RC.Width,RC.Height);
G.DrawString(line1, tahoma, Brushes.Black, RC, SF);
}
using (Font tahoma2 = new Font("Tahoma", 12))
{
SF.LineAlignment = StringAlignment.Center;
G.FillRectangle(Brushes.Transparent,btn.ClientRectangle.X,btn.ClientRectangle.Y,btn.ClientRectangle.Width,btn.ClientRectangle.Height);
G.DrawString(line2, tahoma2, Brushes.Red, btn.ClientRectangle, SF);
}
}
btn.Image = bmp;
btn.ImageAlign = ContentAlignment.MiddleCenter;
}
なぜカスタムコントロールを作成しませんか? –
@LeiYangこれはレガシーなプロジェクトなので、ユーザーコントロールを作成すると、このタイプのプロジェクトでは意味がないと思います。このプロジェクトでは、ボタンのDotNetSkin.SkinControlsスタイルが使用されています。 – user1624552
これは試しましたか? http://dotnetrix.co.uk/button.htm – vasek