2009-06-03 18 views
57

Image sınıfı ve Bitmap sınıfı arasındaki farkları anlamakta zorlanıyorum. Şimdi, Bitmap'un Image'dan miras aldığını, ancak her ikisinin de anladığımdan çok benzer olduğunu biliyorum. Bu konuda biraz ışık tutabilir mi lütfen?Resim vs Bitmap sınıfı

+2

Passersby: daha iyi bir yanıt var burada [burada] (http://stackoverflow.com/a/19678330/3367144) – kdbanman

+2

Olası çoğaltılabilir [System.Drawing.Image ve System.Drawing.Bitmap arasındaki fark nedir? ?] (http://stackoverflow.com/questions/19678195/what-is-the-difference-between-system-drawing-image-and-system-drawing-bitmap) –

cevap

57

Bitmap sınıfı, Resim sınıfının bir uygulamasıdır. İmaj sınıfı soyut bir sınıftır;

Bitmap sınıfı, Bitmap nesnesini farklı parametrelerden oluşturan 12 kurucu içerir. Bitmap'i başka bir bitmap'ten ve görüntünün dize adresini oluşturabilir.

Daha fazla bilgi edinin in this comprehensive sample.

+5

Bence soyut görüntünün uygulanmasını kastediyorsunuz sınıf. – kenny

11

Görüntü, rastgele bir görüntünün soyut bir erişimini sağlar; bu, İmajın herhangi bir uygulamasına mantıksal olarak uygulanabilecek bir dizi yöntemi tanımlar. Herhangi bir belirli görüntü formatına veya uygulamaya sınırlı değildir. Bitmap, Windows GDI bitmap nesnesini kaplayan görüntü özet sınıfına özel bir uygulamadır. Bitmap, GDI bitmap Nesnesindeki röle olan Görüntü özet sınıfının sadece belirli bir uygulamasıdır. Örneğin, Görüntü sınıfından miras alarak ve soyut yöntemleri uygulayarak kendi uygulamanızı Görüntü özeti için oluşturabilirsiniz.

Her neyse, bu sadece basit bir OOP kullanımıdır, yakalamak zor olmamalıdır.

32

Bu bir açıklamadır çünkü dürüst bir şekilde kafa karıştıran kodlarda yapılan işleri gördüm - bence aşağıdaki örnek başkalarına yardımcı olabilir. Diğerleri söylediler

önce - Bitmap Özet Image

Özet etkili bir bunun bir Yeni() örneği oluşturmak anlamına gelir sınıf den devralır.

Image imgBad1 = new Image();  // Bad - won't compile 
    Image imgBad2 = new Image(200,200); // Bad - won't compile 

Ama yapabileceğiniz aşağıdaki:

Bitmap bmpGood = new Bitmap(200,200); 

:

Image imgGood; // Not instantiated object! 
    // Now you can do this 
    imgGood = new Bitmap(200, 200); 

Artık aşağıdaki aynı bitmap nesnesi yapmış olur sanki imgGood kullanabilirsiniz Burada güzel bir şey, bir Grafik nesnesini kullanarak imgGood nesnesini çizebilirsiniz

Bitmap, Meta, veya başka bir şey Image devraldığı -
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); 

İşte imgGoodherhangi Görüntü nesnesi olabilir!