做一酒店的房态图,如何在form上绘图? 原来的办法是自己定制一个组件的方式,一个组件代表一个房间,组件和数据库相关联,但是每次打开form时,动态创建如此多组件会造成速度非常慢,有人说可以在内存中绘图,然后贴上去的办法,不知道如何去做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得内存中绘图应该是可以的,内存中绘图主要是消除窗体重绘时的闪烁问题,如下:1:新建一个TempCanvas:TCanvas对象,2:在TForm1.OnPaint事件中,完成绘制操作: begin TempCanvas.draw(...);//都绘制到TempCanvas上去 ... BitBlt(Form1.canvas.Handle,0,0,Width,Height,TempCanvas.Handle,0,0, SRCCOPY);//完成TempCanvas到Form1.canvas的拷贝 end; 你可以定义数组保存状态,然后采用最基本的form.canvas画出来就ok了! 创建太多控件的确会影响效率,我也曾深受其害啊,你可以考虑在算法上优化一下,也许速度就能接受了 www.coderpub.com 可以呀,不用动态创建,见好了把图画load下来就行了么 用ListView如何,ViewStyle设为vsIcon,就像资源管理器设成“大图标”样式那样 不要在form上创建过多的控件(从tcontrol派生的),可以从tcomponent派生,代表每个房间,然后在form的canvas上画出来,这样的速度是可以接受的。很多报表采用的就是这种技术,比如FastReport,ReportMachine,你可以参考。 有谁知道动态创建控件好的算法。我现在写的一个程序就是这样的,速度明显慢!再加上每个窗体都要加载一个图片,点一个按钮切换都下一个窗体,有时有1秒多的延迟,不知道那位兄弟有好的办法没有!email : [email protected] 我现在还没有将数据库部分加上去,速度慢的原因是因为创建控件时会有时间延迟,就是在显示时出现一个一个控件按顺序显示,就象进度条似的!感谢guanxy(guanxy) 的 指导,我正在用你的方式去试一下!大家平时有什么好办法可以解决这个问题都可以谈谈啊! 我可以证明动态创建多个控件组会慢,我做的一个房间frame里面包含5个左右的控件,如果一下子创建30来个房间会慢的,我现在采用的是分页的形式显示出来,但是分页显示的就不能一下子看酒店的所有房态了,感觉很不爽。如果要一下子看完整个酒店的所有房间,那样有一个整体的感觉,做的好,会很舒服的,如果再加上一个放大缩小的功能!那就实在太好了! 放一个表,一个主键一个状态信息用ListView,ViewStyle设为vsIcon然后双击后show一个窗体,在通过database control控件设置或查看信息。其实酒店分不同层使用treeview,显示每一层使用listview,这样我感觉速度不会太慢吧,以前我一个界面上二三十个控件,也没有1秒后显示出来的,基本点show就出来了。只是我没有动态创建控件。 为何不用VisualNet 呢?它无需编程,只要你和数据库绑定就可以了当房态数据发生变化时,它会自动在图形界面上显示出来。我们用它开发了很多比你的要求更复杂的监控系统,它的数据变化还要大、快,它都能完成。到www.ntwt.com 上可以下载。 API查找问题 dbgrid刷新。 两个字符数组的赋值问题? 欢迎大家加入我的群"华南软件技术基地",群QQ为8373474,一起提高啊 如何将几个应用程序的报表合并成一个文件? delphi的class 中能不能定义一下,在所有实例中都能访问的成员变量? 高手们过来瞧瞧! 如何实现两块硬盘的选择启动? 关于 delphi 学习中的若干问题,请求论坛各位大神们。谢谢 50分奉上,如何将DLL中的form融合到主窗体的panel中 有没有人能写个代理服务器管理软件!CCPROXY6.32的 详情进>>> 来者有分!! 求教:如何得到一个EXCEL文件的所有工作表名称?
1:新建一个TempCanvas:TCanvas对象,
2:在TForm1.OnPaint事件中,完成绘制操作:
begin
TempCanvas.draw(...);//都绘制到TempCanvas上去
...
BitBlt(Form1.canvas.Handle,0,0,Width,Height,TempCanvas.Handle,0,0,
SRCCOPY);//完成TempCanvas到Form1.canvas的拷贝
end;
ViewStyle设为vsIcon,就像资源管理器设成“大图标”样式那样
email : [email protected]
感谢guanxy(guanxy) 的 指导,我正在用你的方式去试一下!
大家平时有什么好办法可以解决这个问题都可以谈谈啊!