MFC做连连看,生成地图并显示到窗口的问题!!!懂MFC的帮忙答一下哈
如上图,左图点击按钮后显示成右图的样子我已经在窗口的类里面加了按钮的事件函数OnBnClickedStart()如何在这个函数里写代码实现上面的功能,我的意思是地图的生成...
如上图,左图点击按钮后显示成右图的样子
我已经在窗口的类里面加了按钮的事件函数OnBnClickedStart()
如何在这个函数里写代码实现上面的功能,我的意思是地图的生成和显示的代码都写在OnBnClickedStart()函数里,求帮忙啊
地图的元素用上面的图片 展开
我已经在窗口的类里面加了按钮的事件函数OnBnClickedStart()
如何在这个函数里写代码实现上面的功能,我的意思是地图的生成和显示的代码都写在OnBnClickedStart()函数里,求帮忙啊
地图的元素用上面的图片 展开
2个回答
展开全部
主要还是贴图。
首先你右边得有个控件,pictureBox或者group都行。
1、用GDI+贴图,下面是GDI+读取硬盘图片文件的函数。
void CMainDlg::LoadmyImg(CDC *pDC, CRect &rect, CString c_path)
{
CDC szMemDC;
szMemDC.CreateCompatibleDC(pDC);
CBitmap btScreen;
btScreen.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height());
szMemDC.SelectObject(&btScreen);
Graphics graphics(szMemDC);
Image* image=Image::FromFile(c_path.AllocSysString());//c_path为图像的路径
graphics.DrawImage(image,2,8,rect.Width(),rect.Height());
pDC->BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &szMemDC, 0, 0,rect.Width(),rect.Height(), SRCCOPY);
szMemDC.DeleteDC();
delete pDC;
}
2、在OnPaint()中调用。
//加载图片
CWnd *pWnd = GetDlgItem(IDC_GROUP);//获取控件的句柄
CClientDC *pDC = new CClientDC(pWnd);//GDI+绘图DC
CRect imgRect = CRect(0,0,50,50);//根据自己需要调整
LoadmyImg(pDC, imgRect, "img.png");//调用以上函数加载图片
pWnd->ShowWindow(SW_HIDE);
3、根据自己的实际情况修改。GDI+的初始化网上很多资料。
4、按钮事件函数里加入以下代码:
CWnd *pWnd = GetDlgItem(IDC_GROUP);
pWnd->ShowWindow(SW_SHOW);
这样就可以实现点击按钮显示有点的图了。
追问
LoadmyImg这个函数是怎么创建的啊
追答
把这个作为成员函数就行啊,比如类名位CMainDlg;
在头文件public中定义:
void LoadmyImg(CDC *pDC, CRect &rect, CString c_path);
在源文件中把LoadmyImg函数体粘贴进去,就可以调用了。
前提是先初始化GDI+。
GDI+配置步骤:
(1)、在stdafx.h文件中加入下面3行代码
#pragma comment( lib, "gdiplus.lib" )
#include "gdiplus.h"
using namespace Gdiplus;
(2)、在App类中,添加一个成员变量,如下列代码:
ULONG_PTR m_gdiplusToken;
其中,ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: GdiplusShutdown来关闭GDI+。
(3)、在应用类的InitInstance函数中添加GDI+的初始化代码:
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
(4)、在应用类中添加ExitInstance的重载,并添加下列代码用来关闭GDI+:
Gdiplus::GdiplusShutdown(m_gdiplusToken);
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
地图的生成可以写在 OnBnClickedStart()中,
显示应该写在 OnDraw函数中
显示应该写在 OnDraw函数中
更多追问追答
追问
怎么写啊,我是新手,OnDraw函数是什么时候调用的?点击按钮前还是点击按钮后?
追答
OnDraw函数在每当窗口需要刷新的时候由系统自动调用。
例如你的窗口本来被其余窗口盖住,现在变成最前面窗口就需要刷新。
我觉得你先找本书看一下MFC的 文档与视图分离 的知识,然后再来动手做这个程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询