在窗口中绘制Windows窗体

时间:2014-06-06 04:39:18

标签: c# windows drawing

在某些环境中,如Office宏环境或Visual Studio,有些设计人员可以显示预览,您可以将项目拖放到预览中。它们使用与操作系统其余部分相同的主题进行渲染。我不是要创建一个MDI,而是以相同的形式绘制一个窗体。

示例:

VBA drawing form

在C#中,我将如何实现类似的功能?

2 个答案:

答案 0 :(得分:3)

也许你应该看一下这篇文章:http://msdn.microsoft.com/en-us/magazine/cc163871.aspx

文章讨论了:

  1. 设计时环境基础
  2. 表单设计器架构
  3. Visual Studio .NET中表单设计器的实现
  4. 为您自己的应用程序编写表单设计器所需实现的服务

答案 1 :(得分:1)

您可以使用这个漂亮的方法将form2绘制到目标位图上:

form2.DrawToBitmap(tagetBmp, new Rectangle(0, 0, form2.Size.Width, form2.Size.Height));

要使其工作,您将创建一个表单来显示并在其上调用此方法。它将包括其所有控件等,但如果你想要它是空的,你只需要一个正确比例的空形式。

这是一个测试,它自己绘制一个窗口:

private void button1_Click(object sender, EventArgs e)
{
    Size oldSize = this.Size;
    Size newSize = new Size(this.Width / 4,  this.Height / 4);
    Bitmap targetBmp = new Bitmap(newSize.Width, newSize.Height);
    this.Size = newSize;
    button1.Hide();
    this.DrawToBitmap(targetBmp, new Rectangle(Point.Empty, newSize));
    this.Size = oldSize;
    using (Graphics G = this.CreateGraphics()) 
    { 
        G.DrawImage(targetBmp, 0, 0); 
    }
    button1.Show();
}