一个我不知道怎样下手的问题,请各位帮帮忙看一下,谢谢啦~~~~~~~~~~~~~~~~~~~
怎样取得数据库中的数据,并转变为图片,大小固定为320*204的BMP中显示?其实就是模拟液晶屏显示啦!例如:从数据库中取得年,月,日,星期几,然后按指定的位置显示出来!!这样的过程怎么做呢??欢迎大家给我意见和方法,有点代码提示更好,能解决再高分表示谢意~~~~~~~~~!!
__________________________________
| |
| XXXX年XX月XX日 星期X |
| |
| 当前时间:XX:XX |
| |
| [未读信息提示] |
| |
----------------------------------
问题点数:100、回复次数:10Top
1 楼kingcaiyao(aking)回复于 2003-09-04 12:37:00 得分 10
1.取得数据库中的数据很简单啊,用ADO或用BDE就可以啊。
2.将数据从数据表取出来后,用::DrawText显示就可以。或你在窗体上放一Image控件,在Image控件的画布上画出也可以。
Top
2 楼kingcaiyao(aking)回复于 2003-09-04 12:37:35 得分 5
你可以先用ImageTop
3 楼mikesome()回复于 2003-09-04 12:40:02 得分 10
只能给一些你可能早就知道的意见:
分为两步
一步是取数据,这步与显示无关,应该是好实现的
下一步负责显示,这可能对图形编程有些要求,不过可以找些资料看看也是比较简单的。Top
4 楼kingcaiyao(aking)回复于 2003-09-04 12:42:01 得分 5
不好意思,笔误。
你可以用Image控件将320*240的BMP图片显示出来,然后将从数据库中取得的数据写在Image的画布上
代码片段:
//从数据库中取数据
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("select * from yourtable");
Query->Open();
Query->First();
while(!Query->Eof)
{
String m_strDateTime;
m_strDateTime=Query->FieldByName("DateTime")->AsString;
...........................
...........................
Image1->Canvas->TextOut(Your Position,Your Position,m_strDateTime);
Query->Next();
}
.............................
....................................
Top
5 楼zy1028(颖)回复于 2003-09-04 16:01:41 得分 0
问题关键还是显示的位置问题啊!
对不同长度的数据,我举例的是定长了,可我实际要显示的不是固定长度的数据啊!!Top
6 楼zy1028(颖)回复于 2003-09-09 15:32:32 得分 0
还有就是,怎么保存出来的图片不是320*204BYTE呢??而是一个很大的BMP??Top
7 楼huoniao1976(火鸟1976)回复于 2003-09-09 15:50:00 得分 10
1.关于数据不定长的问题,其实好解决,编写个类,根据屏幕大小和要显示的字的大小,编写一个显示算法,比如一行显示几个字等等。把数据读出来后,进行长度计算,这样就可以根据你的要求显示了。
2.保存图片的时候,进行图片压缩处理。不过如果处理不好,可能失真的Top
8 楼zy1028(颖)回复于 2003-10-08 20:44:56 得分 0
我生成的图片是320*204*24bit;现在我只需要四级灰度(320*204*2bit),该怎样实现??
只要内容,不要文件头!!!请求高手支援啊!!!谢谢~~~~~~~~~~~~~~~~~~
Top
9 楼jishiping(JSP 季世平)回复于 2003-10-09 20:31:29 得分 50
前面的我就不说了(也没有完全看懂楼主的意思),我只说最后的问题。你说只要四级灰度
(2Bit),可是Bmp没有2Bit的格式。Bitmap只有1,4,8,16,24,32bit,并没有楼主要的
2bit。对于文字来说,你要显示的,可能只有2个颜色,一个是背景色,一个是文字的颜色,
此时只要1bit就可以了。也许你的液晶屏支持四级灰度,你要的就是将1bit的数据转换成2
bit而已。整个过程就是:首先生成一个1bit的Bitmap(设定Bitmap的属性Monochrome为true
就可以了),指定Bitmap的大小,然后在Bitmap的Canvas上用DrawText输出文字。然后根据
Bitmap->ScanLine[nRow]得到每行的像素数据,再将1bit的数据转换为你要的2bit的数据就
可以了。不知道我说的,是不是你的意思?如果还不会的话,我再贴代码给你(希望你自己
先动手)。
Top
10 楼easyxu(Bryan)回复于 2003-10-09 21:57:06 得分 10
你放一个TImage ,名字:Image1; width =200, height = 200
然后你试试这个:
Image1->Canvas->MoveTo(1,1);
Image1->Canvas->LineTo(1,199);
Image1->Canvas->LineTo(199,199);
Image1->Canvas->LineTo(199,1);
Image1->Canvas->LineTo(1,1);
Image1->Canvas->TextOutA(50,50,Date());
Image1->Canvas->TextOutA(50,100,Time());
看看感觉如何?保甜!Top




