2010-10-07 8 views
5

Về cơ bản tôi muốn kéo dài hình ảnh nhỏ hơn (nghĩa là 300x300 thành hình lớn hơn tức là 500x500) mà không có khoảng trống hoặc nền đen.vẽ hình ảnh lên bitmap lớn hơn

Tôi có bitmap (giả sử chiều rộng 500px và chiều cao 500px). Làm thế nào để vẽ một hình ảnh (nhỏ hơn) trên bitmap đó để nó có toàn bộ bitmap?

Tôi đã biết cách tạo bitmap (ví dụ: var bitmap = new Bitmap(500, 500);) và tải hình ảnh - nó có thể được tải từ tệp (ví dụ: var image = Image.FromFile(...);) hoặc lấy từ một số nguồn khác.

+0

Câu hỏi hay và câu trả lời hay! – Bitterblue

Trả lời

14

Xem tài liệu cho Graphics.DrawImage. Bạn có thể chỉ định hình chữ nhật nguồn và đích.

Ví dụ mã:

Image i = Image.FromFile(fileName); // This is 300x300 
Bitmap b = new Bitmap(500, 500); 

using(Graphics g = Graphics.FromImage(b)) 
{ 
    g.DrawImage(i, 0, 0, 500, 500); 
} 

Để sử dụng mã chắc chắn để thêm tài liệu tham khảo để lắp ráp System.Drawing và thêm using System.Drawing đến tập tin.

+0

nó không hoạt động – yasink

+1

bất kỳ lý do cụ thể nào mà bạn thấy vì sao nó không hoạt động? một lỗi? điều gì sẽ xảy ra khi bạn chạy mã? – WildCrustacean

1

Bạn có thể thử bằng cách sử dụng sau đây:

public Image ImageZoom(Image image, Size newSize) 
{ 
    var bitmap = new Bitmap(image, newSize.Width, newSize.Height); 
    using (var g = Graphics.FromImage(bitmap)) 
    { 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    } 

    return bitmap; 
} 

Và chọn từ một trong những sẵn InterpolationModes.