C# winform 在外部调用画布绘制图形
时间: 2024-10-25 14:03:15 浏览: 21
在C# Windows Forms中,如果想从外部(比如另一个类或方法)调用Form上的PictureBox或Graphics对象来绘制图形,你可以按照以下步骤操作:
1. 首先,在Windows Form上,添加一个PictureBox控件,设置其SizeMode属性为StretchImage以便调整大小,或者使用Graphics对象直接绘制。
```csharp
PictureBox pictureBox1;
pictureBox1 = new PictureBox();
pictureBox1.Size = new Size(400, 400);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; // 或者手动创建Graphics对象
// 或者直接在Form上:
private Graphics formGraphics;
public MyForm()
{
InitializeComponent();
this.formGraphics = this.CreateGraphics(); // 获取Form的Graphics对象
}
```
2. 如果你想通过一个公共方法接受外部绘图请求,可以在Form上创建一个公开的绘制方法:
```csharp
public void DrawOnPictureBox(Bitmap image)
{
pictureBox1.Image = image; // 设置PictureBox显示图片
// 或者
pictureBox1.Invoke(new Action(() => pictureBox1.Image = image)); // 异步更新,防止UI线程阻塞
}
public void DrawCustomShape(Graphics g, Point[] points)
{
// 在g上绘制自定义形状
using (Pen pen = new Pen(Color.Black, 2))
{
g.DrawPolygon(pen, points);
}
}
```
3. 现在外部类可以像这样调用上述方法:
```csharp
MyForm myForm = new MyForm();
Bitmap customImage = GenerateCustomImage();
myForm.DrawOnPictureBox(customImage);
List<Point> shapePoints = ...;
myForm.DrawCustomShape(myForm.formGraphics, shapePoints);
```
阅读全文