2017-04-17 8 views
2

私はMainFormクラスを持っています。ここで私はこのようなものを作ることができます。別のクラスからどのように描画できますか?

private void MainForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = this.CreateGraphics(); 
    Rectangle rectangle = new Rectangle(50, 100, 150, 150); 
    graphics.DrawEllipse(Pens.Black, rectangle); 
    graphics.DrawRectangle(Pens.Red, rectangle); 
} 

私のフォームに結果が表示されます。

しかし、別のクラスImageがあります。そして私はここから引き出したい。どうしたらいいですか?

+2

ような何かをするだろうように、質問を明確にしてください、ピクチャボックスのイベントハンドラを必要とします。すでにSystem.Drawing.Imageのインスタンスを持っていて、長方形と楕円の代わりにそれを描画したいのですか? – Crowcoder

+0

Imageは自分のクラスで、MainFormに図形を描画するためのメソッドをいくつか配置したいと考えています。 – hivokas

+0

あなたはグラフィックオブジェクトをクラスに渡して、クラスメソッド内で描画プロセスを処理することができます。 – Franck

答えて

3

あなたも(ちょうどあなたのオブジェクトを送信することができるはずです(私が使ってきたものから来以下)

GetRectangleは長方形

を定義するための別の方法だろう

class Draw 
{ 
    public void Paint(PaintEventArgs e) 
    { 
      e.Graphics.DrawRectangles(Pens.Blue, GetRectangle());       
    } 
} 

をPaintEventArgsのを送りますあなたのケースのMainFormのインスタンス)に

class Draw 
{ 
    public void Paint(MainForm main) 
    { 
     Graphics graphics = main.CreateGraphics(); 
    } 
} 

またはグラフィックスが

オブジェクト
class Draw 
{ 
    public void Paint(Graphics graphics) 
    { 
     Rectangle rectangle = new Rectangle(50, 100, 150, 150); 
     graphics.DrawEllipse(Pens.Black, rectangle); 
     graphics.DrawRectangle(Pens.Red, rectangle); 
    } 
} 

あなたはまだあなたが

private void MainForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = this.CreateGraphics(); 
    Draw image = new Draw(); 
    image.Paint(graphics); 
} 
+0

最後のバリアントを使用する場合、** private void PictureBox_Paint(オブジェクト送信者、PaintEventArgs e){...} **の内部には何を書き込む必要がありますか? – hivokas

+0

固定回答(例: – ferday

+0

)OKです。絵をPictureBoxの中に表示するにはどうすればよいですか? – hivokas

関連する問題