2013-10-07 41 views
0

我试图画一个思维下划线underneith我的头约10-15像素厚。我试过添加一个图片框,然后绘制图片,但它并没有被绘制到屏幕上。有没有更好的方法来做到这一点,或使我的方法工作?如何做粗线下划线或绘制矩形?

谢谢!

using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent();    
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Graphics g = pictureBox1.CreateGraphics(); 
      Pen selPen = new Pen(Color.Black); 
      g.DrawRectangle(selPen, 0, 0, 700, 15); 
      g.Dispose(); 
     } 
    } 
} 
+0

我搜索了更多的工具箱,我发现了一个RectangleShape事物,它正是我想要的。 – Nathan

回答

0

在的WinForms具有厚线A常用的技巧是创建一个LabelBorderStyle设置为FixedSingleHeight = 1和(Width适当时)(可以与其他边界实验)。您可以在设计人员中绘制所有这些图像,或尝试使用其他一些“退化”控件 - Panel以及适当的视觉设置。

其他选项当然使用custrom UserControl或处理/重写OnPaint事件以及由Control.CreateGraphics方法(没有必要把PictureBox窗体上)所提供的图形绘制。

+0

我尝试了BorderStyle设置为FixedSingle和Height = 1的标签,但它给了我1或2px的粗线,而不是我需要的10-15px粗线。如果我要使用CreateGraphics方法,我会在哪里放这个代码?我尝试过使用我在不同帖子中发现的代码,但它从未做过任何事情...... – Nathan

+0

尝试使用“面板” - 然后 - 它可以尽可能厚。至于绘制 - 将代码放在'OnPaint'事件中。 – BartoszKP

+0

@ user2856410我已经更新了“OnPaint”事件描述链接的答案。那里有一个绘图例子。第一个直接在'Form'上绘制,没有'PictureBox'。 – BartoszKP

0

您的代码无法正常工作的原因是因为您可以从1个加载事件中抽取。将你的代码放入另一个事件或按钮中,它会正常工作。

+0

我会在程序启动时将代码放到哪里? – Nathan

0

不要使用CreateGraphics(),因为它是临时表面,当表单刷新时会被擦除。

取而代之的是,处理Form/Control的Paint()事件并使用提供的e.Graphics来绘制。