[英]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
完成的指导。
有几种方法可以做到这一点:
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.