2012-11-05 113 views
5

這就是我需要的:程序爲更快地製作Facebook頁面的樂趣海報。 海報有文字,圖片和框架(白線和黑色背景)。 在這種情況下,我想在海報上插入徽標(png圖片)。如何添加圖片框並在圖片中插入文字?

根據圖片尺寸的不同,圖片的尺寸必須自動調整爲圖片的尺寸(在這種情況下,圖片由兩種形狀組成)。

enter image description here

如何從鏈接(2形狀的部件,2圖像分量,2個標籤)的圖片保存該圖像的海報?

如何做到這一點?使用什麼,從哪裏開始?

我希望這個問題不會被刪除。

+0

什麼德爾福版本您使用? –

+2

您恕我直言,不應使用形狀,面板,標籤等。 您可以使用Canvas例如的位圖或HDC與GDI +的無限意見。這不是困難的,你會是無限的。 – bummi

回答

9

如果你把一個新的TPanel(我的樣本在一個名爲mainPanel中)內的所有幀,形狀和圖片,那麼你可以使用:

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; 

用法:

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

備註:

  • 這是基於VCL的示例;
  • 要保存圖像的其他格式(而不是BMP)使用:TPngImage(Vcl.Imaging.pngImage)或TJPEGImage(Vcl.Imaging.jpeg);
  • 如果您使用FireMonkey(> = Delphi XE2),您可以利用someParentComponent.MakeScreenShot();
  • 生成的圖像將與tPanel具有相同的尺寸。

爲了更好的結果/靈活性我建議使用Delphi的Graphics32庫(它支持圖層,圖像大小調整等)。

Example form

Resulting image

+0

很好的答案。用於提供截圖並提供替代方案的工作示例的獎勵積分 –

+0

我使用Delphi XE3。謝謝你的回答,@WoutervanNifterik已經說過了。 :) –