2012-01-14 34 views
5

khai báo một bitmap đó làthể không mặc nhiên chuyển đổi loại 'System.Drawing.Image' thành 'System.Drawing.Bitmap'`

private Bitmap img1 = null; 
private Bitmap img2 = null; 

hình ảnh sẽ được putted sau khi chọn nó từ OpenFileDialog.
các hình ảnh đã chọn được đặt trong một mảng.

imgName = openFD.FileNames; 

rồi nhấn1 để hiển thị các hình ảnh này.

pictureBox1.Image = Image.FromFile(imgName[0]); 
pictureBox2.Image = Image.FromFile(imgName[1]); 

i thay thế mã button1 với điều này

img1 = Image.FromFile(imgName[0]); 
img2 = Image.FromFile(imgName[1]); 

nhưng một lỗi xảy ra

Không thể ngầm chuyển đổi loại 'System.Drawing.Image' thành 'System.Drawing.Bitmap'

Tôi muốn thay đổi mã thành img1 = Bitmap.FromFile(imgName[0]);. nhưng vẫn có lỗi tương tự.
Bất kỳ đề xuất nào về cách sửa hoặc thực hiện quyền này?

+1

Trong khi Bitmap luôn được coi là Hình ảnh, một Hình ảnh không nhất thiết là một Bitmap. Nó cung cấp hỗ trợ trong tương lai cho các loại hình ảnh khác. Do đó, bạn không nên cố ép buộc một Hình ảnh thành một Bitmap. –

Trả lời

7
img1 = new Bitmap(imgName[0]); 
img2 = new Bitmap(imgName[1]); 
2
img1 = (Bitmap) Image.FromFile(imgName[0]); 
img2 = (Bitmap) Image.FromFile(imgName[1]); 

Như thông báo lỗi nói rằng bạn không thể mặc nhiên làm điều này bạn cần phải cast một cách rõ ràng để Bitmap

Sửa

Dựa trên các ý kiến ​​dưới đây tôi xin đề nghị một trong hai đi với Câu trả lời của icktoofay tức là sử dụng hàm tạo bitmap hoặc nếu bạn có thể sử dụng lớp Hình ảnh trực tiếp thay vì sử dụng Bitmap, bạn cũng có thể đi theo đó

+3

Bạn không thể chỉ truyền mọi thứ đến bất cứ điều gì bạn muốn. Đây là lập trình, không phải ma thuật. 'Bitmap' kế thừa từ' Hình ảnh', nhưng không phải là cách khác. Điều đó có nghĩa là bạn không thể chuyển đổi hoàn toàn đối tượng 'Image' sang đối tượng' Bitmap'. Casting chỉ yêu cầu trình biên dịch tắt, nó không giải quyết được vấn đề. –

+0

Vì vậy, điều gì sẽ là đúng cách ở đây. Sử dụng Constructor Bitmap hoặc sử dụng lớp Image trực tiếp? Tôi đoán đúng cách sẽ được sử dụng hình ảnh, trừ khi bạn chắc chắn rằng tập tin tải lên là một Bitmap. Bạn nghĩ sao? –

+0

Khó nói. Nếu bạn cần một 'Bitmap', thì bạn sẽ cần phải tạo một thể hiện của lớp' Bitmap', có thể sử dụng hàm tạo. Nếu không, khai báo biến mà bạn đang gán cho ('img1' và' img2') làm đối tượng của lớp 'Image' và các vấn đề của bạn biến mất. Vấn đề là các phôi hiếm khi là câu trả lời đúng. Trình biên dịch đang cố gắng cảnh báo bạn về một vấn đề tiềm năng: bạn nên chú ý đến các đề xuất của nó. –

Các vấn đề liên quan