2012-11-05 12 views
5

Questo è ciò di cui ho bisogno: programma per creare poster più divertenti e divertenti per la pagina facebook. I poster hanno testo, immagine e cornice (linea bianca e sfondo nero). In questo caso, voglio inserire il logo sul poster (immagine png).Come aggiungere una cornice e inserire il testo nell'immagine?

A seconda delle dimensioni dell'immagine, le dimensioni del telaio (che in questo caso sono costituite da due forme) devono essere automaticamente ridimensionate per l'immagine.

enter image description here

come salvare poster da quell'immagine da collegamento (componenti 2 forma, componenti dell'immagine 2, 2 etichette) come immagine?

Come realizzare questo? Cosa usare, da dove cominciare?

Spero che questa domanda non venga rimossa.

+0

Quale versione di Delphi si usa? –

+2

IMHO non deve utilizzare forme, pannelli, etichette, ecc. Puoi utilizzare la tela, ad es. di Bitmap o HDC con GDI + per opinioni illimitate. Non è difficile e sarai illimitato. – bummi

risposta

9

Se mettete tutte le cornici, forme e immagini all'interno di un nuovo TPanel (chiamato MainPanel nel mio esempio), allora si potrebbe utilizzare:

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; 

Usage:

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

Note:

  • Questo è un campione basato su VCL;
  • Per salvare l'immagine in un altro formato (piuttosto in BMP) utilizzare: TPngImage (Vcl.Imaging.pngImage) o TJPEGImage (Vcl.Imaging.jpeg);
  • Se si utilizza FireMonkey (> = Delphi XE2) è possibile usufruire di someParentComponent.MakeScreenShot();
  • L'immagine risultante avrà le stesse dimensioni del tPanel.

Per risultati migliori/flessibilità suggerirei di utilizzare la libreria Graphics32 per Delphi (supporta i livelli, ridimensionamento immagine ecc.).

Example form

Resulting image

+0

Bella risposta. Punti bonus per fornire un esempio funzionante con screenshot e suggerire alternative –

+0

Io uso Delphi XE3. Grazie per la risposta, @WoutervanNifterik ha detto tutto. :) –

Problemi correlati