GreenOpenPaint的实现(二)打开显示图片
1、DOC中添加,核心图片文件保存在这里。之所以不用Mat,是因为CVVImage有更好的输入输出函数。
我这里直接使用了public
public:
CvvImage m_image;
2、重载打开
//将文件的处理集中在DOC中是非常正确的方法
BOOL CGreenOpenPaintDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
m_image.Load(CT2CA(lpszPathName));
//计算m_fScaleFactor
m_fScaleFactor = ZOOM_NORMAL;
return TRUE;
}
3、view中添加变量。主要添加头文件。
private:
CMainFrame* m_pParent;
CGreenOpenPaintDoc* m_pDoc;
CRect rectBackground;
4、重构oninitupdate ,onupdate ,onDraw
//初始化
void CGreenOpenPaintView::OnInitialUpdate()
{
m_pParent = ((CMainFrame*)GetParentFrame());
m_pDoc =((CGreenOpenPaintDoc*) GetDocument());
OnUpdate(NULL, 0, NULL);
CScrollView::OnInitialUpdate();
}
void CGreenOpenPaintView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
SetScrollSizes(MM_TEXT,
CSize(int(m_pDoc->m_image.Width()*m_pDoc->m_fScaleFactor),
int(m_pDoc->m_image.Height()*m_pDoc->m_fScaleFactor)));
Invalidate();
}
现在已经可以打开图片,并且默认就是支持缩放的。而且支持滚动。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!