如何确定Drawing.Graphics对象与给定的Bitmap对象有关?

时间:2012-02-20 13:01:05

标签: c# graphics bitmap drawing

我有一个Bitmaps数组和一个Graphics数组。最初,每个Bitmap对象在这些数组中都有相应的Graphics对象。但在工作期间,数组中的位图可能会被新实例替换或更改其在数组中的位置。 所以我需要一种方法来找到对应于给定Bitmap对象的正确Graphics对象(或者确保图形数组中没有对应的Graphics对象)。

请在C#中查看此示例代码:

void Main()
{
   // make some bitmaps
   Bitmap b1 = new Bitmap(100,100);
   Bitmap b2 = new Bitmap(100,100);

   // make graphics of our bitmaps
   Graphics g1 = Graphics.FromImage(b1);
   Graphics g2 = Graphics.FromImage(b2);

   bool result = Test(b1, g2);
}

bool Test(Bitmap b, Graphics g)
{
   // how can I check that given "g" is really created from given "b"?
   // ???
}

1 个答案:

答案 0 :(得分:0)

如果在中心位置创建图形,则可以使用字典Dictionary<Bitmap, Graphics>维护查找表。

或者,您也可以使用Bitmap的Tag属性来存储对Graphics对象的引用。

   Bitmap b1 = new Bitmap(100,100); 
   Bitmap b2 = new Bitmap(100,100); 

   // make graphics of our bitmaps 
   Graphics g1 = Graphics.FromImage(b1); 
   Graphics g2 = Graphics.FromImage(b2); 

   // Track the graphics object for each bitmaps
   // NOTE: be sure to dispose the Graphics when you're done with the Bitmap.
   b1.Tag = g1;
   b2.Tag = g2;

在任何情况下,请确保在不再需要图形对象时正确处理它们。