アイデアは、データベース(テキストと画像)から日付を取得し、これらのデータをIDフォームのような別の画像に追加して、新しい画像を保存します。Delphi:イメージにテキストを追加して新しいイメージを保存する方法
これはどのようにデルファイで行うことができますか?
THX
アイデアは、データベース(テキストと画像)から日付を取得し、これらのデータをIDフォームのような別の画像に追加して、新しい画像を保存します。Delphi:イメージにテキストを追加して新しいイメージを保存する方法
これはどのようにデルファイで行うことができますか?
THX
試してみてください。
uses
GraphUtil, PNGImage;
procedure CreateCard(const AFileFile: string; AImage: TPNGImage;
const AName, ASurname: string);
begin
with TPNGImage.CreateBlank(COLOR_RGB, 8, 330, 160) do
try
GradientFillCanvas(Canvas, clWhite, $000080FF,
Canvas.ClipRect, gdVertical);
Canvas.StretchDraw(Rect(18, 18, 108, 108), AImage);
Canvas.Pen.Width := 2;
Canvas.Brush.Style := bsClear;
Canvas.Rectangle(5, 5, Width - 4, Height - 4);
Canvas.Font.Size := 12;
Canvas.Font.Style := [fsBold];
Canvas.TextOut(110, 30, 'Form: ' + AName + ' :.');
Canvas.TextOut(125, 60, 'Genus: ' + ASurname + ' :.');
SaveToFile(AFileFile);
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
PNGImage: TPNGImage;
begin
PNGImage := TPNGImage.Create;
try
// here you will load the image blob (by using LoadFromStream)
// instead of LoadFromFile
PNGImage.LoadFromFile('d:\llamas.png');
CreateCard('d:\visit-card.png', PNGImage, 'Alpaca', 'Lama');
finally
PNGImage.Free;
end;
end;
:ここ
uses
PNGImage;
procedure TForm1.Button1Click(Sender: TObject);
var
PNGImage: TPNGImage;
BlobStream: TMemoryStream;
begin
// create the PNG image instance
PNGImage := TPNGImage.Create;
try
// assuming you have in the BlobStream variable the image from a DB loaded
PNGImage.LoadFromStream(BlobStream);
// setup the text background to be transparent
PNGImage.Canvas.Brush.Style := bsClear;
// optionally configure the font
PNGImage.Canvas.Font.Size := 11;
PNGImage.Canvas.Font.Color := clRed;
PNGImage.Canvas.Font.Style := [fsBold];
// and render it to the image's canvas
PNGImage.Canvas.TextOut(5, 5, 'SomeText');
// save this modified image to the file
PNGImage.SaveToFile('c:\picture.png');
finally
// and finally free the PNG image instance
PNGImage.Free;
end;
end;
は、私は私の訪問カードを作成します(
d:\llamas.png
として
necessary image
ファイルを保存することを忘れないでください)方法の例であります
このようになります。
:Dはうまくいきます 助けてくれてありがとう –
@TLama背景を扱う慣用的なDelphiの方法は、 'Canvas.Brush.Style:= bsClear'を設定することです。あなたのやり方はうまくいきますが、VCLがうまくそれを包み込むときに、生のGDIを使う必要はありません。 –
@David、絶対に!私はどこでこれを仮定したのか分からない。それは私がずっと前に見たいくつかの古い例からでなければならない。今私は(GDIベースの)フレームワークを使用しています。このフレームワークはラップされているので、それについて考えることさえしませんでした。ヒントありがとう! – TLama
イメージをTBitmapにロードします。 TBitmap.Canvas.TextOutを呼び出します。ビットマップを保存します。 –
ようこそStackOverflowへ!あなたの質問を言い換えてみてください。それは完全な宿題のように私に聞こえる、あなたは何か試したことがありますか?あなたの質問に:1)* DBから画像をロードする* - インターネット上にたくさんの例があります。ただ一つだけを検索してみてください。2)これらのデータを別の画像に追加してください。どうやって ? DBから画像を読み込んでテキストを読み込み、画像の説明をして、この説明を画像に描画してどこかに保存することを意味しましたか? IDフォームは何ですか? – TLama
@TLamaはい、私はDBから画像をロードしました。ここに私のIDフォーム:http://i891.photobucket.com/albums/ac114/evilkidaz/ID.png私は、DBから名前、姓と画像をロードし、フォームの場所に置く必要があります。それを保存します。画像にこれらのデータを挿入する際に問題が発生する場合があります。 DavidHeffernan返信いただきありがとうございます。テキストは灰色の背景で表示されます。私はフォントを変更できますか?それを大きくするか色を変える? 編集:画像を挿入する方法を見つけました:[code] Image1.Canvas.Draw(1,1、graphic); [/ code] –