Edit保存成图片

guozhixin 2009-06-25 09:45:13
加精
有谁能把edit连同里面的内容保存成bmp图像吗?有时edit很小,字符却很长,需要按照字符的长短保存,要求图像完整,谁做过类似的东西,帮帮忙吧
...全文
207 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
nbzip 2009-07-03
  • 打赏
  • 举报
回复
很痛苦啊,好歹给一分啊.

:>

大家都很强啊.要努力了.
qym1985 2009-06-26
  • 打赏
  • 举报
回复
顶下
naziace 2009-06-26
  • 打赏
  • 举报
回复
学习了
benlqian 2009-06-26
  • 打赏
  • 举报
回复
学习了 谢
Kyle_Chenxr 2009-06-26
  • 打赏
  • 举报
回复
高手 学习了
jjm1227 2009-06-26
  • 打赏
  • 举报
回复
学习中。。真是不错的代码。
张志峰 2009-06-26
  • 打赏
  • 举报
回复
xuexi
djfengyi 2009-06-25
  • 打赏
  • 举报
回复
汗,没做过. 不过想到怎么做的
jiujiu45 2009-06-25
  • 打赏
  • 举报
回复
不错了,学习了!
nbzip 2009-06-25
  • 打赏
  • 举报
回复
汗.BCB用习惯了.在DELPHI块.
包含一个Jpeg头文件.在DELPHI中,可能是JPEG.PAS.

=============================================
Var
JPEG:TJPEGImage;
str:String;
begin
str:=Edit1.Text.Trim; //假设一个字长16,宽16
//=========================
JPEG:=TJPEGImage.Create;
JPEG.Width=(16*str.Length)+30;
JPEG.Height=20;
JPEG.Canvas.Font.Name=Edit1.Font.Name; //把两者的字体统一下,
JPEG.Canvas.Font.Color=clBlack; //
JPEG.Canvas.Font.Size=Edit1.Font.Size; //
JPEG.Canvas.TextOutA(10,2,str);
JPEG.SaveFromFile('c:\aaa.jpeg');
delete JPEG;
JPEG:=nil;
end;
nbzip 2009-06-25
  • 打赏
  • 举报
回复
不给,代码,可能你心里会说,不地道.直接默写,有错别怪我.
头中包含这二个文件.
#include <graphics.hpp>
=========================================================
AnsiString str;
Graphics::TBitmap *BMP = new Graphics::TBitmap;
//==============
str=Edit1->Text.Trim(); //假设一个字长16,宽16
//==============
BMP->Width=(16*str.Length())+30;
BMP->Height=20;
BMP->Canvas->Font->Name=Edit1->Font->Name; //把两者的字体统一下,
BMP->Canvas->Font->Color=clBlack; //
BMP->Canvas->Font->Size=Edit1->Font->Size; //
BMP->Canvas->TextOutA(10,2,str);
BMP->SaveFromFile("c:\aaa.bmp"); //输出BMP 最好还是用JPEG呵呵,这个小.BMP生成太大了.这里就不写了.
delete BMP; //#include <Jpeg.hpp> //JPEG图片头文件
BMP=NULL;
nbzip 2009-06-25
  • 打赏
  • 举报
回复
汗,没做过. 不过想到怎么做的.

在EDIT这块按保存时,在程序中新建一个BMP文件,长和宽,按你录入的字符的字体来(经过调试得到一个字的长宽,算到EDIT有几个字符得到整个BMP的长宽).
做完BMP长宽后,就在BMP的画布上,按EDIT的字体和字写入.然后保存到一个BMP文件.

OK了...呵呵.
guozhixin 2009-06-25
  • 打赏
  • 举报
回复
没人做过吗?
dinoalex 2009-06-25
  • 打赏
  • 举报
回复
[Code=Delphi(Pascal)]
procedure TForm1.Button20Click(Sender: TObject);
var
b1: TBitmap;
begin
b1:= TBitmap.Create;
b1.Canvas.Font.Assign(edit1.Font); // <-- 要放在Set Rect 之前
b1.Width:= b1.Canvas.TextWidth(edit1.Text);
b1.Height:= b1.Canvas.TextHeight(edit1.Text);
b1.Canvas.TextOut(0,0,edit1.Text);
b1.SaveToFile('d:\edit.bmp');
b1.Free;
end;
[/Code]
luoyan611 2009-06-25
  • 打赏
  • 举报
回复
gao
dinoalex 2009-06-25
  • 打赏
  • 举报
回复
b1.Canvas.Font.Assign(edit1.Font); 对,就是这样
winstonbonaparte 2009-06-25
  • 打赏
  • 举报
回复
强,学习了。
还有呢,问下,怎么要在Edit里面输入法文呢?我输不进去。[size={1}]{2}Français être [/size]
亮剑_ 2009-06-25
  • 打赏
  • 举报
回复
这里的关键是计算文本长度
SmallHand 的方法在英文字体时可以,甚至超过Edit框长度的文本的也截下来,但在中文字体下长度计算偏短
火龙岛主 2009-06-25
  • 打赏
  • 举报
回复
procedure TForm1.Button20Click(Sender: TObject);
var
b1: TBitmap;
begin
b1:= TBitmap.Create;
b1.Canvas.font.Assign(edit1.font);
b1.Width:= b1.Canvas.TextWidth(edit1.Text);
b1.Height:= b1.Canvas.TextHeight(edit1.Text);
b1.Canvas.TextOut(0,0,edit1.Text);
b1.SaveToFile('d:\edit.bmp');
b1.Free;
end;
火龙岛主 2009-06-25
  • 打赏
  • 举报
回复
借用8楼的
procedure TForm1.Button20Click(Sender: TObject);
var
b1: TBitmap;
begin
b1:= TBitmap.Create;
b1.Width:= b1.Canvas.TextWidth(edit1.Text);
b1.Height:= b1.Canvas.TextHeight(edit1.Text);
b1.Canvas.font.Assign(edit1.font);
b1.Canvas.TextOut(0,0,edit1.Text);
b1.SaveToFile('d:\edit.bmp');
b1.Free;
end;
加载更多回复(5)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧