簡體   English   中英

C#繪圖問題

[英]C# drawing issue

我有一個關於使用C#繪圖的一般性問題。 在類Test我有一個方法Draw:

public void Draw(Graphics g)
    {
        g.DrawLine(Pens.Black, x1, y1, x2, y2);
    }

現在我想在一個名為PictureBox1的Picturebox中的主窗體中繪制它

但是我怎么畫呢?

通常你可以在這樣的圖片框中畫畫:

private void Draw()
{
   Graphics g = PictureBox1.CreateGraphics();
   g.DrawLine(Pens.Black, x1, y1, x2, y2);
}

我知道這是一個愚蠢的問題,但我是初學者,想要獲得基礎知識;)

最好的祝願 :)

編輯:

對不起,我根本不了解你的帖子,你能再次向我解釋一下

編輯2:

謝謝你的回答。 但我不知道這是如何運作的。

有我的類Test ,在這個類中有Draw方法:

private void Draw()
{
   Graphics g = PictureBox1.CreateGraphics();
   g.DrawLine(Pens.Black, x1, y1, x2, y2);
}

現在我想在我的MainClass FormMain中的 PictureBox中繪制這個方法

我怎么能在我的picturbox中繪制test.Draw()?

我希望現在對我缺乏經驗的最良好祝願表示清楚和抱歉

每次paint事件被觸發時,picturebox控件都會覆蓋它上面的任何內容(這幾乎是所有時間)。 所以你需要連接到那個事件:

this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);

然后在事件中做你的繪圖:

void pictureBox1_Paint(object sender, PaintEventArgs e)
{
     // Assuming your constructor takes coordinates as parameters
     var t = new Test(0, 0, 100, 100);
     t.Draw(e.Graphics);
}

您必須從Control對象創建Graphics對象。

例如:

override void myControl OnPaint (PaintEventArgs e)
{
    Graphics g = e.Graphics

    //do something with g
}

我可以提供更好的信息,並提供一些關於您希望自定義類Test完成的指導。

有幾種方法可以做到這一點:

  1. 您可以在Test類中創建一個事件,並在表單中訂閱該事件。 然后,您可以毫無問題地調用PictureBox1.CreateGraphics()。
  2. 您可以將表單的當前實例傳遞給Test類中的方法,並通過傳入方法的實例引用PictureBox。

PictureBox控件用於在內部保存圖像。 你需要做的是在這張圖片上畫畫,然后你就不必搞亂油漆事件了。 像那樣:

var img = new Bitmap();
using (Graphics g = Graphics.FromImage(img)) {
    g.DrawLine(Pens.Black, x1, y1, x2, y2);
}
pictureBox1.Image = img;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM