MFC如如实现类似画图工具里的画布

漂云GG 2013-04-15 01:54:04
这是网上打到的别人的实现效果:


int CHDPaintPView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
m_tracker.m_rect.SetRect(0,0,GetDocument()->m_cavasW,GetDocument()->m_cavasH);
m_tracker.m_nStyle = CRectTracker::resizeOutside;

// 此外必须为指针,如果为变量程序会崩溃

m_drawView = new CHDPaintView();

if (!m_drawView->CreateEx(WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,LoadCursor(NULL,IDC_CROSS),
(HBRUSH)GetStockObject(WHITE_BRUSH),NULL),
"",WS_CHILDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
m_tracker.m_rect.left,m_tracker.m_rect.top,
m_tracker.m_rect.right-1,m_tracker.m_rect.bottom-1,
this->m_hWnd,NULL))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_drawView->SetDocument((CHDPaintDoc*)m_pDocument);
m_drawView->ShowWindow(SW_NORMAL);
m_drawView->UpdateWindow();

SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(GRAY_BRUSH));

return 0;
}

原来的作者是自己实现了一个类,用来实现画布,但我在自己的程序中用了他的代码,却没有效果。
区别是,他的程序是一个单文档程序,我的是多文档的。我不清楚还需要在哪里修改?
程序是的ChildFrame、View、MainFrame中的哪一个?或者是Doc类。。
...全文
365 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不能在对话框上实现吗?
菜牛 2013-04-16
  • 打赏
  • 举报
回复
引用 8 楼 yanxijian 的回复:
引用 7 楼 Mackz 的回复:我写了个简单的 用双缓冲效果更佳,CRectTracker纯粹用来实现拉伸效果。 多谢了啊,学习一下。不知道你这个方法对于实现图形重绘复杂吗?
有啥复杂啊,把我绘直线的代码换成其他画图代码即可,当然换成函数或者对象去代理更方便。
漂云GG 2013-04-16
  • 打赏
  • 举报
回复
引用 7 楼 Mackz 的回复:
我写了个简单的 用双缓冲效果更佳,CRectTracker纯粹用来实现拉伸效果。
多谢了啊,学习一下。不知道你这个方法对于实现图形重绘复杂吗?
菜牛 2013-04-15
  • 打赏
  • 举报
回复
我写了个简单的 用双缓冲效果更佳,CRectTracker纯粹用来实现拉伸效果。
Yun__ 2013-04-15
  • 打赏
  • 举报
回复
虚拟一个画布出来就好了 用缓存DC
漂云GG 2013-04-15
  • 打赏
  • 举报
回复
引用 4 楼 Mackz 的回复:
复杂了,他是用一个子窗口去做画布,没必要。直接用CRectTracker实现拖放效果和作为剪裁矩形,自己绘制个白色矩形就是了。
嗯,这个办法不错啊,我试试看~~
菜牛 2013-04-15
  • 打赏
  • 举报
回复
复杂了,他是用一个子窗口去做画布,没必要。直接用CRectTracker实现拖放效果和作为剪裁矩形,自己绘制个白色矩形就是了。
漂云GG 2013-04-15
  • 打赏
  • 举报
回复
引用 2 楼 yfqvip 的回复:
那就用单文档的好了。
毕设要求是多文档的。。。
满衣兄 2013-04-15
  • 打赏
  • 举报
回复
那就用单文档的好了。
漂云GG 2013-04-15
  • 打赏
  • 举报
回复
呃,有没有人帮回答下啊。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧