自己写一个image控件 求思路我要求一个image控件能读常见的文件格式,比如jpeg,wmf等,并且有旋转,灰度等接口,
问题1。我自己从TGraphicControl继承,override Paint()函数,但是图片的刷新总是有问题,好象是每幅控件单独刷新的,效率很低,不知道TImage是怎么刷新的,效率高的多,
问题1。我自己从TGraphicControl继承,override Paint()函数,但是图片的刷新总是有问题,好象是每幅控件单独刷新的,效率很低,不知道TImage是怎么刷新的,效率高的多,
解决方案 »
- 如图所示,如何在焦点获得这些按钮的caption
- 一段SQL在数据库单独执行跟DELPHI里执行结果为何不同
- 好久没用D了,问各位一个问题...有关EXCEL的 .....谢谢.....
- N久N久没发过贴了,提问一下有没有delphi有没有一个类似Listbox似的可视的控件容器?
- 如果通过Activeform触发事件?
- help,算术和
- 怎样在delphi中读取xml文件中的数据?
- 急问一个关于打印多页fastreport报表.详细见内!( 各位帮忙啊!!!!);
- delphi里怎样终止一个外部程序运行啊?
- 怎样限制指定程序在屏幕的特定范围内运行?
- 已知一个文件夹的句柄,文件夹名称,怎样得到文件夹的路径?
- 鼠标由箭头变成手形,或者变成I形的时候有什么方法可以监测到吗?
做显示需要比较复杂图像处理的可视控件最好不要从TGraphicControl继承。
因为所有直接继承自TControl控件的刷新是由其Parent的WM_PAINT触发的,看源代码怎么看怎么觉得这段代码效率不高,而且哪怕是只有一个Control需要刷新,所有同级的Control都将重画(除非被完全遮挡或不可视时),大量的无效的图像处理代码将被执行,这样浪费太大了。因此如果不需要显示背景的最好直接从TWinControl或TCustomControl继承,其刷新是由windows直接触发的,而且只有变更的控件才会刷新,无效的图像处理代码运行的机会将少多了,这样不论cpu占用还是显示平滑度都处于一个比较令人满意的程度。 对我个人来说,不到万不得已(比如背景是动画)我不会从TGraphicControl继承而是直接从TWinControl继承来编写图像处理相关的控件,即使是需要显示背景的控件我也宁可用特殊方法去获取背景而不愿意将基类改成从TGraphicControl继承。
从TWinControl继承因为是窗口,如果需要多张图片重叠处理会比较麻烦,
请问下TGraphicControl的刷新机制是怎么做的,WM_PAINt消息是怎么传递过来的,怎么处理的