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

相關問題