2016-05-15 100 views
0

我有一种方法来绘制一些东西,我想改变方法中有Graphics对象的Control的大小。如何知道图形对象属于哪个控件?

我的意思是类似的东西:

class Drawer 
    { 
     public Drawer() 
     { 

     } 
     public void Draw(Graphics grp) 
     { 
      grp.Owner.Width = 100; 
      grp.Owner.Height = 200; 
      //... 
      //Draw something 
      //... 
     } 
    } 

但你也知道Graphics.Owner不存在。我怎样才能做到这一点?

+1

你将不得不通过控制。 – LarsTech

回答

1

不幸的是,这不是一个选项。如果可以的话,最好通过控制。并确保处置图形对象:

public void Draw(Control ctrl) 
{ 
    ctrl.Width = 100; 
    ctrl.Height = 200; 

    using(Graphic g = ctrl.CreateGraphics()) 
    { 
     //... 
     //Draw something 
     //... 
    } 
} 

或者与图形通过控制:

public void Draw(Graphics grp, Control ctrl) 
{ 
    ctrl.Width = 100; 
    ctrl.Height = 200; 
    //... 
    //Draw something 
    //... 

} 
+1

您的绘图方法应该永远不会处理图形对象,因为它已被*传递给它。这是来电者的责任。 CreateGraphics适用于非常特定的场景,因为它不会使用DoubleBuffer,并且通过最小化表单容易擦除。 – LarsTech

+0

@LarsTech好点。更新了我的答案。 – jwatts1980

相关问题