回答
嘗試以下操作:
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;
下面是一個例子,如何我會創造我的訪問卡(不要忘記將necessary image
文件保存爲d:\llamas.png
):
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;
下面是它的外觀:
:D工程很好 感謝您的幫助 –
@TLama處理背景的習慣Delphi方式是設置'Canvas.Brush.Style:= bsClear'。你的方式可行,但當VCL將它包裝得很好時,我並不認爲需要使用原始GDI。 –
@大衛,絕對!我甚至不知道我在哪裏設想的。它必須來自我很久以前見過的一些老例子。現在我使用我的(基於GDI的)框架來處理這樣的事情,所以我甚至都沒有考慮過。感謝提示! – TLama
- 1. 加載圖片到圖像德爾福
- 2. 圖像查看德爾福
- 3. 圖像處理德爾福
- 4. 德爾福:從圖像創建一個字符串並添加到備忘錄
- 5. 我如何加載圖像到德爾福XE8的一個apk
- 6. 如何繪製一個數字到圖像德爾福7
- 7. 德爾福 - 將圖像合併到新的單個文件並讀取數據
- 8. 德爾福保存到文本文件
- 9. 德爾福圖像運動故障
- 10. 減少德爾福圖像質量
- 11. 德爾福的絲帶瑕疵圖像
- 12. 德爾福彈出框與圖像
- 13. 德爾福7:將圖像附加到鼠標
- 14. 德爾福7從另一個圖像的圖像限制
- 15. 德爾福的圖像列表:從.res中加載ResourceLoad圖標
- 16. 將文字添加到圖像並保存
- 17. 將字符串添加到位圖圖像並保存vb
- 18. 德爾福加載圖像保存爲一個SQL數據庫blob
- 19. 如何保存圖像添加文本後爲圖像
- 20. OpenGL與德爾福:離線渲染圖像到文件
- 21. 將標籤合併到圖像上並保存爲新圖像?
- 22. 如何將文字添加到圖像
- 23. 如何添加文字到圖像?
- 24. 如何保存提取的圖標德爾福
- 25. Pascal或德爾福的動畫圖像像Gifs
- 26. 德爾福v.Word - 如何從德爾福
- 27. 如何打開圖像並使用ImageMagick重新保存圖像?
- 28. 保存/重新加載圖像並刪除舊圖像
- 29. 如何保存附加到圖像視圖的圖像?
- 30. 德爾福5 - XE5 - 保存圖片到的Nexus 7設備
將圖像加載到TBitmap中。調用TBitmap.Canvas.TextOut。保存位圖。 –
歡迎來到StackOverflow!請嘗試重新提出您的問題;這聽起來像是一個完整的家庭作業,你嘗試過什麼嗎?對你的問題:1)*從DB加載圖像* - 在互聯網上有很多例子,只是嘗試搜索一個2)*在另一張圖片中添加這些數據* - 你想添加什麼數據到另一張圖片和怎麼樣 ?你的意思是從數據庫加載圖片和一些文字,讓我們說圖片描述,並在圖片上繪製這個描述並保存在某個地方?什麼是身份證表格? – TLama
@TLama是的,我從數據庫加載圖像,並且是這樣的東西。這裏是身份證的形式:http://i891.photobucket.com/albums/ac114/evilkidaz/ID.png我必須從數據庫中加載名稱,姓氏和圖像,並將它們放在窗體中的位置,然後保存它。我只在插入圖片中的這些數據時遇到困難 DavidHeffernan感謝您的回覆,但文字帶有灰色背景。我可以更改字體嗎?讓它變大還是改變顏色?編輯:我發現如何插入圖像:[code] Image1.Canvas.Draw(1,1,graphic); [/ code] –