2012-11-05 44 views
5

Đây là những gì tôi cần: Chương trình để tạo áp phích vui nhộn cho trang facebook nhanh hơn. Áp phích có văn bản, hình ảnh và khung (đường trắng và nền đen). Trong trường hợp này, tôi muốn chèn logo lên poster (hình png).Cách thêm khung hình và chèn văn bản vào hình ảnh?

Tùy thuộc vào kích thước hình ảnh, kích thước của khung hình (trong trường hợp này bao gồm hai hình dạng) phải được tự động thay đổi kích thước cho hình ảnh.

enter image description here

Làm thế nào để tiết kiệm tấm áp phích từ hình ảnh mà từ liên kết (phần 2 hình dạng, linh kiện 2 hình ảnh, 2 nhãn) như hình ảnh?

Làm cách nào để thực hiện việc này? Những gì để sử dụng, bắt đầu từ đâu?

Tôi hy vọng rằng câu hỏi này sẽ không bị xóa.

+0

gì Delphi phiên bản nào bạn sử dụng? –

+2

Bạn IMHO không được sử dụng Hình dạng, Bảng, Nhãn, v.v. Bạn có thể sử dụng Canvas, ví dụ: của Bitmap hoặc HDC với GDI + cho các ý kiến ​​không giới hạn. Nó không phải là khó khăn và bạn sẽ không giới hạn. – bummi

Trả lời

9

Nếu bạn đặt tất cả các khung hình, hình dạng và hình ảnh bên trong một TPanel mới (đặt tên MainPanel trong mẫu của tôi), sau đó bạn có thể sử dụng:

procedure savePanelAsImage(fpPanel: tPanel; fpFileName: string); 
var 
    img: TBitmap; 
begin 
    img := TBitmap.Create; 
    try 
    img.Width := fpPanel.Width; 
    img.Height := fpPanel.Height; 
    fpPanel.PaintTo(img.Canvas, 0, 0); 
    img.SaveToFile(fpFileName); 
    finally 
    img.Free; 
    end 
end; 

Cách sử dụng:

savePanelAsImage(MainPanel, 'd:\someFolder\image001.bmp'); 

Ghi chú:

  • Đây là mẫu dựa trên VCL;
  • Để lưu hình ảnh ở định dạng khác (thay vì BMP) sử dụng: TPngImage (Vcl.Imaging.pngImage) hoặc TJPEGImage (Vcl.Imaging.jpeg);
  • Nếu bạn sử dụng FireMonkey (> = Delphi XE2), bạn có thể tận dụng lợi thế của someParentComponent.MakeScreenShot();
  • Hình ảnh kết quả sẽ có cùng kích thước với tPanel.

Để có kết quả/tính linh hoạt tốt hơn, tôi khuyên bạn nên sử dụng thư viện Graphics32 cho Delphi (nó hỗ trợ lớp, định cỡ lại hình ảnh, v.v.).

Example form

Resulting image

+0

Câu trả lời hay. Điểm thưởng để cung cấp ví dụ làm việc với ảnh chụp màn hình và đề xuất các phương án thay thế –

+0

Tôi sử dụng Delphi XE3. Cảm ơn bạn đã trả lời, @WoutervanNifterik đã nói tất cả. :) –

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