Rzutowanie Bitmap na Image

0

Cześć wszystkim,

Mam kawałek kodu sprawdzający rozdzielczość oryginalnego image, jeśli jest mniejsza niż 300 powinien podnieść do 300 dpi co przy dalszej obróbce zapewnia przyzwoitą jakość.

            var fs = Directory.GetCurrentDirectory() + "\\img\\" + filename + ".jpg";
            Image img;

            img = Image.FromFile(fs);
            
            if(img.HorizontalResolution < 300 & img.VerticalResolution < 300)
            {
                using (Bitmap b = new Bitmap(img))
                {
                    b.SetResolution(300.0F, 300.0F);
                    img = (Image)b;
                    MessageBox.Show(img.HorizontalResolution.ToString()); // << tu jest ok
                }
            }
            MessageBox.Show(img.HorizontalResolution.ToString()); // << Tu już rzuca wyjątkiem

Dopóki nie będzie wykonane Dispose() na obiekcie b jest ok, po wyjściu z using praca na obiekcie img jest niemożliwa.
Jeśli wszystko wyrzucę z klauzury using i ręcznie nie wykonam metody Dispose() na obiekcie b wszystko jest ok.
I tu właśnie pytanie, dlaczego nie mogę zwolnić zasobów skoro wcześniej dokonałem rzutowania Bitmap na Image ?

0

bo nie rozumiesz co robi rzutowanie - to nie jest kopiowanie obiektu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1