首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

给文档窗口加滚动条.(50++),该如何解决

2014-06-12 
给文档窗口加滚动条...........(50++)工程基于单文档,程序功能完成电路图的绘制,问题有2个:1.当我画一幅复

给文档窗口加滚动条...........(50++)
工程基于单文档,程序功能完成电路图的绘制,问题有2个:
1.当我画一幅复杂点的电路图当前窗口不够用如何加滚动条实现拖动
2.图片保存时,我通过抓图截取当前窗口的图形保存,当加了滚动条之后画出一个实际图形大于当前显示图形时用什么方法可以把图形完整的得到而不只是得到客户区窗口大小的图.

高手帮帮忙,先谢过!

[解决办法]
1)你的CXXXView基类是:CScrollView
2)CSize sizeTotal;
// TODO: 计算此视图的合计大小
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
这个就是设置滚动条大小的,根据LZ图的大小需要改变。
3)可以提供图片的缩放功能,让其可以在一屏中显示,然后再抓图。当用的时候,放大看这样也可以。
4)看能不能使用剪贴板的功能,把生成的图片保存到剪贴板上,然后保存在画板上,再保存。
[解决办法]
你可以试一试用IPicture这个类,里面提供了多个接口可以方便地进行显示上的缩放还有保存为位图

添加滚动条的话,你可以手动将你的CXXXView改为从CScrollView继承(原来是从CView)的.再添加滚动条的功能即可.
[解决办法]
1.也不需要新建

改变下继承关系即可:

.h文件中:
CYourView:public CScrollView

响应的.cpp文件中:

IMPLEMENT_DYNCREATE(CDoc_viewproView, CScrollView)

BEGIN_MESSAGE_MAP(CDoc_viewproView,CScrollView)


2.这就是个重绘的问题
包图形保存后 //这个是关键
在OnDraw()里面做相应的重绘处理即可..
可以自己写个绘图函数
调用之

[解决办法]
在你绘图的DC的时候进行设置..dc.setmapmode();最好设置成ANISOTROPIC或者ISOTROPIC..这两种可以自己选择缩放比例..但是记得不要在滚动条设置的那个dc上设置这两个模式..因为会造成滚动条无效的..在设置了模式过后..记得绘图完成过后把dc以前的模式选回来...

热点排行