MFC分块绘图

zhuoxuan216 2013-01-24 09:59:42
想在MFC中创建一个窗口,可以利用数据(1堆数据点)绘图。并且可以将这个窗口分成4块,显示不同数据来源产生的图形,并且互不影响,有没有什么好方法呢?包括怎么窗口分块和数据绘图,谢谢
...全文
233 19 点赞 打赏 收藏 举报
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zsyouxi 2013-01-27
dc.IntersectClipRect();
dc.ExcludeClipRect();
用这两个函数锁定对应的块分别画图,就可以相互不会越界了
  • 打赏
  • 举报
回复
gz_qmc 2013-01-25
引用 16 楼 yuanqun 的回复:
学习了,后面四条是虚函数吗,我怎么没这些函数
啥都是别人准备好的,要你干嘛 你要连那些是系统响应涵数,那些是自建函数都分不清 那只能说明你还没熟悉到需要写这些程序的时候 明明是来讨论地怎么种的,你确要从使用锄头开始学 谁吃多了在这浪费时间
  • 打赏
  • 举报
回复
youngwolf 2013-01-25
www.st-curve.cn
  • 打赏
  • 举报
回复
yuanqun 2013-01-25
引用 12 楼 gz_qmc 的回复:
C/C++ code ? 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 //以9楼的样子为例. //假设你的窗口是 宽=1000,高=800; // 上窗口: 宽=1000,高=80;……
学习了,后面四条是虚函数吗,我怎么没这些函数
  • 打赏
  • 举报
回复
dzy198239 2013-01-24
CDC bufferDC[4]; .... .... CRect rectClient; GetClientRect(rectClient); dc.BitBlt(0,0, rectClient.Width()/2, rectClient.Height()/2, &bufferDC[0], 0,0, SRCCOPY); dc.BitBlt(rectClient.Width()/2,0, rectClient.Width()-rectClient.Width()/2, rectClient.Height()/2, &bufferDC[1], 0,0,SRCCOPY); .... .... ....
  • 打赏
  • 举报
回复
rxguoblp 2013-01-24
楼主可以先建立一个单文档程序,然后将你的View窗口用CSplitterWnd类进行4分割,最后在每个区域里面绘图。跟在主窗口的画法一样。
  • 打赏
  • 举报
回复
baita96 2013-01-24

http://bbs.csdn.net/topics/390244975
  • 打赏
  • 举报
回复
LZ困惑的是,一个窗口是一个DC是吧:) 在指定的Rect内绘图对于LZ应该不是问题,提醒一下记得设置裁剪区域(SelectClipRgn)。 一个DC如何控制4个Rect?只要绘制每个Rect前正确移动DC原点就可以了(MoveTo)。
  • 打赏
  • 举报
回复
schlafenhamster 2013-01-24
也可以 sdi 分割为 2*2
  • 打赏
  • 举报
回复
zhuoxuan216 2013-01-24
能不能更详细的说下呀,谢谢
引用 1 楼 gz_qmc 的回复:
一个窗口就够了,4个双缓冲,各画各的
  • 打赏
  • 举报
回复
jimette 2013-01-24
引用 4 楼 zhuoxuan216 的回复:
引用 2 楼 pig357 的回复:也可以4个绘图控件,数据作为控件的成员函数,这样写代码方便,以后改为N个窗口都快的很 用4个绘图控件也是在一个窗口显示吧
嗯 要不然你用多个view!
  • 打赏
  • 举报
回复
zhuoxuan216 2013-01-24
引用 2 楼 pig357 的回复:
也可以4个绘图控件,数据作为控件的成员函数,这样写代码方便,以后改为N个窗口都快的很
用4个绘图控件也是在一个窗口显示吧
  • 打赏
  • 举报
回复
schlafenhamster 2013-01-24
定义 4个 CRect 变量
  • 打赏
  • 举报
回复
pig357 2013-01-24
也可以4个绘图控件,数据作为控件的成员函数,这样写代码方便,以后改为N个窗口都快的很
  • 打赏
  • 举报
回复
gz_qmc 2013-01-24
一个窗口就够了,4个双缓冲,各画各的
  • 打赏
  • 举报
回复
zhuoxuan216 2013-01-24
引用 12 楼 gz_qmc 的回复:
C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162//以9楼的样子为例.//假设你的窗口是 宽=1000,高=800; // 上窗口: 宽=1000,高=80;// ……
建立了一个基类为CFormView的对话框类,在这个类里添加之后为什么运行没有错误,但是却不显示啊
  • 打赏
  • 举报
回复
zhuoxuan216 2013-01-24
引用 10 楼 rxguoblp 的回复:
楼主可以先建立一个单文档程序,然后将你的View窗口用CSplitterWnd类进行4分割,最后在每个区域里面绘图。跟在主窗口的画法一样。
用了CSplitterWnd类之后实现了分割,为什么我自己之前添加的菜单项都变灰了,不能用了啊
  • 打赏
  • 举报
回复
searching999 2013-01-24
引用 1 楼 gz_qmc 的回复:
一个窗口就够了,4个双缓冲,各画各的
同意,就是把窗口分成4个部分,然后分别贴图一样
  • 打赏
  • 举报
回复
gz_qmc 2013-01-24
//以9楼的样子为例.
//假设你的窗口是 宽=1000,高=800;
 
//  上窗口: 宽=1000,高=80;
//  左窗口: 宽=600, 高=720;

//右上窗口: 宽=400,高=360;
//右下窗口: 宽=400,高=360;

//那么:
void CXXXX::OnPain()
{
    CPaintDC dc(this);
    CDC     xDC;
    xDC.CreateCompatibleDC(&dc); //双缓冲	

    CBitmap xTOP,xLEFT,xRU,xRD;//四个图
    xTOP.CreateCompatibleBitmap(&dc,1000,80);
    xLEFT.CreateCompatibleBitmap(&dc,600,720);
    xRU.CreateCompatibleBitmap(&dc,400,360);
    xRD.CreateCompatibleBitmap(&dc,400,360);	

    xDC.SelectObject(&xTOP); //画第一个图
    OnDrawTop(&xDC);         //自定义画标题的函数
    dc.BitBlt(0,0,1000,80,&xDC,0,0,SRCCOPY);//把画好的图贴到窗口

    xDC.SelectObject(&xLEFT); //画第二个图
    OnDrawLeft(&xDC);         //自定义画抛物线的函数
    dc.BitBlt(0,80,600,720,&xDC,0,0,SRCCOPY);//把画好的图贴到窗口

    xDC.SelectObject(&xRU); //画第三个图
    OnDrawRU(&xDC);         //自定义画正弦曲线的函数
    dc.BitBlt(600,80,400,360,&xDC,0,0,SRCCOPY);//把画好的图贴到窗口

    xDC.SelectObject(&xRD); //画第四个图
    OnDrawRD(&xDC);         //自定义画普通曲线的函数
    dc.BitBlt(600,80,400,360,&xDC,0,0,SRCCOPY);//把画好的图贴到窗口

    
    xTOP.DeleteObject();
    xLEFT.DeleteObject();
    xRU.DeleteObject();
    xRD.DeleteObject();
    xDC.DeleteDC();
}

void CXXXX::OnDrawTop(CDC *pDC)
{
   pDC->......//画吧,想画啥就画啥
}
void CXXXX::OnDrawLeft(CDC *pDC)
{
   pDC->......//画吧,想画啥就画啥
}
void CXXXX::OnDrawRU(CDC *pDC)
{
   pDC->......//画吧,想画啥就画啥
}
void CXXXX::OnDrawRD(CDC *pDC)
{
   pDC->......//画吧,想画啥就画啥
}
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-01-24 09:59
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……