设计Client
最近设计了一个工作良好的图像处理客户区。

当客户区移动缩放时,图像都能居中显示。
软件的下载地址:https://files.cnblogs.com/charles_lznix/Zooly.rar
主要解决了几个问题:
1、快
2、操作方式多样,能适应客户区尺寸改变、客户区位置移动甚至超出屏幕也能工作良好。
图像的缩放、角度变换,滚动条的配合等事情,将在此基础上进一步设计出来。
--------------------------------------------------------------------------------------------------
进一步的改进
上次的设计还缺少一些功能,这次增加缩放、移动、滚动条。
图1

图2

图1、2是效果图,可以看到已经有了客户区、画布、图片、滚动条,
操作自定义了几个简单的功能:
上、下、左、右:移动图像。
Ctrl+上、下:放大、缩小图像。
LButton:在图像中点击处绘制一个小矩形。
我希望这个工作区比PS的效果要好,主要是绘图快、操作稳定。
下载地址:https://files.cnblogs.com/charles_lznix/Zooly1.rar
好像可以用的,我已经把资源装到Exe中了,大概测了一下可以用,如果不能用就看不到了,要告诉我。
还有一些小问题,比如图像移到接近顶部时,他娘的不刷新,显的被卡了一下。等今天再改。
设计好上面这些后,在WinApp的OnIdle中进行渲染,就能形成动画了。
BOOL CZoolyApp::OnIdle(LONG lCount)
{
if(CWinApp::OnIdle(lCount)) return TRUE;
...
MyRender();
...
}
如此设计,客户区基本成型,工作良好,能绘制各种动画。
工作这么些年,我已经习惯打开"任务管理器"检查软件性能,发觉该程序始终占据50%CPU,消耗很多CUP count
这是什么原因呢?
为此设计了D3D类型的客户区,使用BackSurface进行绘图,消耗依然如故...
将OnIdle程序移入Thread中执行,还是消耗如故...
减少程序渲染层,还是如此...
这是个大问题,长时间高负载工作,会时CPU呼呼怪叫,在多开时更会卡的不成样。
后来解决了,怎么解决的呢?
很简单 在MyRender()中加入一句Sleep(20)
CPU消耗立刻降低到0-8% CPU count也在0-1之间
原因是什么呢?我分析是Sleep能挂起程序,给其他工作让路,也就是说,我们原先是堵塞了CPU造成了高消耗。
只要你Sleep了,谦虚的对其他程序说,请你先做吧,你的程序就会工作的更平和。
好了经过接近2个月的设计,Client基本成型,各个图层层次良好,基本的类也都建立起来了。软件的基础部分基本完成。
下来是扩展工作,脚本设计、资源管理都是他们的主题。有了成果再继续发心得。
浙公网安备 33010602011771号