我有一个关于使用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:
感谢您的回答。但我不知道这是如何运作的。
我的班级测试,在这个课程中有Draw方法:
private void Draw()
{
Graphics g = PictureBox1.CreateGraphics();
g.DrawLine(Pens.Black, x1, y1, x2, y2);
}
现在我想在我的MainBox中的PictureBox中绘制这个方法 FormMain
如何在我的另一个类别的picturbox中绘制test.Draw()?
我希望现在很清楚,抱歉我的经验不足 祝福
答案 0 :(得分:2)
每次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);
}
答案 1 :(得分:0)
您必须从Graphics
对象创建Control
对象。
例如:
override void myControl OnPaint (PaintEventArgs e)
{
Graphics g = e.Graphics
//do something with g
}
我可以提供更好的信息,并提供一些关于您希望自定义类Test
完成的指导。
答案 2 :(得分:0)
有几种方法可以做到这一点:
答案 3 :(得分:0)
PictureBox控件用于在内部保存图像。你需要做的是在这张图片上画画,然后你就不必搞乱油漆事件了。像那样:
var img = new Bitmap();
using (Graphics g = Graphics.FromImage(img)) {
g.DrawLine(Pens.Black, x1, y1, x2, y2);
}
pictureBox1.Image = img;