Mam problemy ze zrozumieniem różnic między klasą Image
a klasą Bitmap
. Teraz wiem, że Bitmap
dziedziczy po Image
, ale z tego, co rozumiem, oba są bardzo podobne. Czy ktoś może rzucić trochę światła na to?Image vs Bitmap class
Odpowiedz
Klasa Bitmap jest implementacją klasy Obraz. Klasa Obraz jest klasą abstrakcyjną;
Klasa Bitmap zawiera 12 konstruktorów, które konstruują obiekt Bitmap z różnych parametrów. Może tworzyć bitmapę z innej bitmapy i adres ciągów obrazu.
Zobacz więcej in this comprehensive sample.
Myślę, że masz na myśli implementację abstrakcyjnego obrazu klasa. – kenny
Obraz zapewnia abstrakcyjny dostęp do dowolnego obrazu, definiuje zestaw metod, które można logicznie zastosować przy każdej implementacji obrazu. Nie jest związany z żadnym konkretnym formatem lub implementacją obrazu. Bitmap to specyficzna implementacja klasy abstrakcji obrazu, która zawiera obiekt bitmapowy Windows GDI. Bitmapa to specyficzna implementacja klasy abstrakcji obrazu, która jest przekazywana na obiekcie bitmapowym GDI.
Można na przykład utworzyć własną implementację do abstrakcji obrazu, dziedzicząc z klasy obrazu i wdrażając metody abstrakcyjne.
W każdym razie, jest to proste proste użycie OOP, nie powinno być trudne do złapania.
To jest wyjaśnienie, ponieważ widziałem rzeczy wykonane w kodzie, które są naprawdę mylące - myślę, że poniższy przykład może pomóc innym.
Jak mówili inni wcześniej - Bitmap dziedziczy po Streszczenie obrazu klasy
Streszczenie efektywnie oznacza, że nie można utworzyć nowy() instancji niego.
Image imgBad1 = new Image(); // Bad - won't compile
Image imgBad2 = new Image(200,200); // Bad - won't compile
Ale można wykonać następujące czynności:
Image imgGood; // Not instantiated object!
// Now you can do this
imgGood = new Bitmap(200, 200);
Można teraz używać imgGood jak byś ten sam obiekt bitmapy jeśli zrobił, co następuje:
Bitmap bmpGood = new Bitmap(200,200);
fajną rzeczą jest to, że możesz narysować obiekt imgGood przy użyciu obiektu Graphics obiektu
Graphics gr = default(Graphics);
gr = Graphics.FromImage(new Bitmap(1000, 1000));
Rectangle rect = new Rectangle(50, 50, imgGood.Width, imgGood.Height); // where to draw
gr.DrawImage(imgGood, rect);
Tutaj imgGood może być dowolny obiekt Image - bitmapy, Metafile, lub cokolwiek innego, co dziedziczy z obrazka!
Passersby: jest lepsza odpowiedź w prawo [tutaj] (http://stackoverflow.com/a/19678330/3367144) – kdbanman
Możliwy duplikat [Jaka jest różnica między System.Drawing.Image i System.Drawing.Bitmap ?] (http://stackoverflow.com/questions/19678195/what-is-the-difference-between-system-drawing-image-and-system-drawing-bitmap) –