MFC绘制摇摆的分形树时图像重叠怎么办

ZZZZ_wj 2022-04-28 15:59:55

用VS中的MFC绘制摇摆的分形树,实现方法是定义IFSCode(CDC *pDC,double k)函数绘制图形,然后利用双缓存技术和定义定时器实现摇摆。

双缓冲函数定义如下:

void CTestView::DoubleBuffer()
{
    CDC memdc,picture;
    CDC *pDC;
    CBitmap mem_bmp;
    pDC = GetDC();
    memdc.CreateCompatibleDC(pDC);
    CBitmap NewBitmap,*OldBitmap;
    NewBitmap.LoadBitmap(IDB_BITMAP2);
    OldBitmap = memdc.SelectObject(&NewBitmap);
    memdc.BitBlt(0,0,MaxX,MaxY,&picture,0,0,SRCCOPY);
    memdc.SelectObject(&mem_bmp);
    if (m_dir)
    {
        IFSCode(&memdc,k+=0.1);
        if (k>=2) m_dir = FALSE;
    }
    else
    {
        IFSCode(&memdc,k-=0.1);
        if (k<=-2) m_dir = TRUE;
    }
    pDC->BitBlt(0,0,MaxX,MaxY,&memdc,0,0,SRCCOPY);
    ReleaseDC(pDC);
    memdc.SelectObject(OldBitmap);
    NewBitmap.DeleteObject();
    memdc.DeleteDC();
}

菜单函数定义如下:

void CTestView::OnMENUMaple() 
{
    // TODO: Add your command handler code here
    AfxGetMainWnd()->SetWindowText("IFS模型:蕨叶");
    RedrawWindow();
    GetMaxX();GetMaxY();
    SetTimer(1, 500, NULL);
}

定时器函数定义如下:

void CTestView::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    DoubleBuffer();
    CView::OnTimer(nIDEvent);
}
但是运行后动画不连续而且图像重叠,要怎么解决啊5555

 

...全文
320 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-微软技术 发布问题, 以便更快地解决您的疑问
内容概要:本文档是2025年全国广播电视技术能手竞赛IPTV专业的竞赛内容大纲,旨在指导参赛选手准备比赛。竞赛分为理论和实操两大部分。理论部分涵盖基本知识、基础理论和专业知识,包括法律法规、技术标准、IPTV技术基础、信号传输与分发、网络和数据安全等。实操部分则涉及IPTV系统设备、仪器设备的操作使用和指标测量。具体内容包括IPTV系统架构、传输技术与指标、设备配置及维护、专业技能如测量工具使用、视音频指标测量、直播点播协议分析、播出网络性能测量、网络安全数据分析以及系统故障排查等。 适合人群:从事或有意从事IPTV相关工作的技术人员,尤其是有志于参加全国广播电视技术能手竞赛的专业人士。 使用场景及目标:①帮助参赛选手全面了解并掌握IPTV相关的法规文件和技术标准;②提升选手对IPTV系统架构、传输技术和设备配置的理解;③增强选手在实际操作中的测量、分析和故障排查能力;④确保选手能够熟练运用各种测量工具和分析软件进行视音频指标测量和网络安全数据分析。 阅读建议:由于文档内容详尽且专业性强,建议读者在学习过程中结合实际案例和操作练习,同时参考相关技术文献,以便更好地理解和掌握竞赛所需的知识和技能。

15,980

社区成员

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

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