圆形按钮控制-揭开DrawArc的神秘面纱

介绍

Image 1

VS2017的圆形按钮控件的更新版本,经过重构和样式选择。

V 1.3

改进了绘制程序DrawBorderGraphic(),粗糙的边缘现在更平滑了:

Image 2

在GraphicsBuffer类中,“旧样式”属性被更现代的一行等价替换。

根据VS2017编辑器在页边距中显示的提示,可以很容易地做到这一点:

public Bitmap BitmapX { get; set; }

public int WidthG { get; set; }

public int HeightG { get; set; }

public string NameG { get; set; }

/// <summary>
/// returns the current Graphic Graphics object
/// </summary>
public Graphics Graphic => (graphic);

/// <summary>
/// returns true if the graphics object exists; false otherwise
/// </summary>
public bool GraphicsBufferExists => (graphic != null);

背景

由于按钮和控件重叠导致测试表单不能正确显示,所以我决定修改代码,这样就不会发生这种情况,奇怪的是,作者似乎没有这个问题。

因此,当roundedbutton被设置为一个非常大的高度并将与下面的groupbox中的其他控件重叠时,groupbox button_GB和border_GB被向下移动,并且表单大小在RecalculateSizes()方法中被重新计算:

/// <summary>
/// Recalculate the form and groupbox positions.
/// </summary>
private void RecalculateSizes()
{
    if (this.button_GB.Top < this.rounded_button_RB.Bottom)
    {
        this.button_GB.Top = this.rounded_button_RB.Bottom;
        this.border_GB.Top = this.button_GB.Bottom + 5;
    }
    
    if (this.Height < this.border_GB.Bottom + 100)
    {
        this.Height = this.border_GB.Bottom + 100;
    }
    
    this.Invalidate();
}

我还添加了一个按钮,允许使用高分辨率监视器的用户缩放表单。这个工作的方式是惊人的简单,不像大多数复杂/不工作的建议,我发现时搜索互联网。

注意,表单的AutoScaleMode属性必须设置为默认字体,这样才能工作:

private void Button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    string tag = button.Tag.ToString().ToUpper().Trim();
    
    switch (tag)
    {
        case "ENLARGE":
            // Scale form, AutoScaleMode.Font must be set for this to work.
            this.Font = new Font(this.Font.Name, this.Font.Size + 2);
            break;

警告:这种缩放方法适用于大多数控件,但不适用于像FlowLayoutPanel这样复杂的控件。

我还添加了新的属性:

  • RotatedText
  • RotatedTextAngle

它们允许以角度旋转文本,对于垂直方向的文本,通常是-90或90度。

使用的代码

不要忘记在加载解决方案后设置RoundedButtonDialog作为启动项目。

历史

  • v 1.2 固定改变宽度或高度时尺寸错误,按钮太大固定缺少底部和厚度为1的右侧线
  • V 1.3 改进了绘图例程DrawBorderGraphic()

本文转载于:http://www.diyabc.com/frontweb/news14536.html

posted @ 2020-08-12 01:49  Dincat  阅读(159)  评论(0编辑  收藏  举报