Как определить, что объект Drawing.Graphics связан с данным объектом Bitmap? - PullRequest
1 голос
/ 20 февраля 2012

У меня есть массив растровых изображений и массив графики.Первоначально каждый объект Bitmap имеет наш соответствующий объект Graphics в этих массивах.Но при работе растровые изображения в массиве могут заменяться новыми экземплярами или менять их позиции в массиве.Поэтому мне нужен способ найти правильный объект Graphics, соответствующий данному объекту Bitmap (или убедиться, что в графическом массиве нет соответствующего объекта 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 голосов
/ 20 февраля 2012

Если графика создается в центральном месте, вы можете вести таблицу поиска, используя словарь, Dictionary<Bitmap, Graphics>.

В качестве альтернативы, вы также можете использовать свойство 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;

В любом случае, убедитесь, что вы правильно утилизируете свои графические объекты, когда они вам больше не нужны.

...