2013-10-07 38 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來繪製。