求MFC载入图片并让它移动的方法

一朵格桑花 2011-06-22 09:26:16
哪个大侠知道怎么在求MFC载入图片并让它移动?????
详细些
...全文
660 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
simoreg 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sj19890401 的回复:]

引用 8 楼 shenyi0106 的回复:
动过 改成 通过



我连图片都不不会载入 更不要说动过 改成 通过 能不能再详细点 我时初学者
[/Quote]
你新建个对话框程序
然后打开资源试图,导入你想绘制的bmp
打开对话框资源,拖入一个Pictuer
然后设定Picture的类型为Bitmap,Image选择你刚刚导入的bmp的资源ID
这时候,运行程序,图片就显示出来了
想要它移动,你再给这个Picture关联一个Static变量,加入是m_cStatic;
m_cStatic.MoveWindow(……) 或 m_cStatic.SetWindowPos(……)
没有比这样更容易的了吧
丹宇码农 2011-06-22
  • 打赏
  • 举报
回复
HBITMAP m_hBmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(),TEXT("c:\\test.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
BITMAP bm;
GetObject(m_hBmp ,sizeof(BITMAP),&bm);
//将位图选进内存设备
m_hOldMemBmp = (HBITMAP)SelectObject(m_hMemDC,m_m_hBmp);
//将内存设备中的位图传送到目标设备,修改下面函数的0,0为对应的起点坐标即实现了图像的移动
BitBlt(m_hDestDC,0,0,bm.bmWidth,bm.bmHeight,m_hMemDC,0,0,SRCCOPY);
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
需要重载
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 shenyi0106 的回复:]
CXXXApp::InitInstance()这是初始化
CXXXApp::ExitInstance()这是退出
[/Quote]

CXXXApp::ExitInstance()这是退出

这个没发现啊 在哪里???
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
CXXXApp::InitInstance()这是初始化
CXXXApp::ExitInstance()这是退出
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shenyi0106 的回复:]
额…………
6.0不支持GDI+

建议参照如下连接修改:
http://www.bccn.net/Article/kfyy/vc/jszl/200703/4528.html
[/Quote]

3在程序初始化部分加入

//gdi+用到的两个变量
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
//装载gdi+
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);

4在程序退出部分前加入

程序初始部分和退出部分指的是哪里???
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
额…………
6.0不支持GDI+

建议参照如下连接修改:
http://www.bccn.net/Article/kfyy/vc/jszl/200703/4528.html
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shenyi0106 的回复:]
C/C++ code

//GDI+类库
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken;




C/C++ code

GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken……
[/Quote]


fatal error C1083: Cannot open include file: 'GdiPlus.h': No such file or directory

时这个错误 右版本要求吗啊
还有就是GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken;都放在哪里啊 我用的是6.0
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复

//GDI+类库
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")



GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken;

//GDI+初始化
GdiplusStartup(&m_GdiplusToken, &m_GdiplusStartupInput, NULL);



Bitmap * pBitMap = new Bitmap(你的图片路径);
graphics.DrawImage(pBitmap,rect);
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
//GDI+类库
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")


[code=C/C]
GdiplusStartupInput m_GdiplusStartupInput;
ULONG_PTR m_GdiplusToken;

//GDI+初始化
GdiplusStartup(&m_GdiplusToken, &m_GdiplusStartupInput, NULL);
[/code]

[code=C/C]
Bitmap * pBitMap = new Bitmap(你的图片路径);
graphics.DrawImage(pBitmap,rect);
[/code]
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shenyi0106 的回复:]
动过 改成 通过
[/Quote]


我连图片都不不会载入 更不要说动过 改成 通过 能不能再详细点 我时初学者
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
动过 改成 通过
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sj19890401 的回复:]
移动式相对于表现(DC)来的,如果没有那个表现,你在怎么移动都是徒劳的。
对于表现来讲,用GDI+的DrawImage函数可以完成你对图片的移动要求



这话是什么意思 、
可以具体点吗
[/Quote]
移动与否,是要展现到你眼前你才能够看到的,也就是说,你载入一副位图,移动是动过画到展现区域的方法来实现移动的。
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
移动式相对于表现(DC)来的,如果没有那个表现,你在怎么移动都是徒劳的。
对于表现来讲,用GDI+的DrawImage函数可以完成你对图片的移动要求



这话是什么意思 、
可以具体点吗
一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
#include <atlimage.h>
我用了这个头文件
可是找不到这个头文件
时我用的本本低吗??
kyotrue 2011-06-22
  • 打赏
  • 举报
回复
#include <atlimage.h>

Note
When you create a project using CImage, you must define CString before you include atlimage.h. If your project uses ATL without MFC, include atlstr.h before you include atlimage.h. If your project uses MFC (or if it is an ATL project with MFC support), include afxstr.h before you include atlimage.h.

Likewise, you must include atlimage.h before you include atlimpl.cpp. To accomplish this easily, include atlimage.h in your stdafx.h.

一朵格桑花 2011-06-22
  • 打赏
  • 举报
回复
CImage image;
image.Load(_T("C:\\test.bmp"));
image.Draw(dc, rect);

不能被发现啊
zyrr159487 2011-06-22
  • 打赏
  • 举报
回复
贴图的时候,比如BITBLT,有参数可以设置贴图的位置,这样,你自然可以移动它了
shenyi0106 2011-06-22
  • 打赏
  • 举报
回复
移动式相对于表现(DC)来的,如果没有那个表现,你在怎么移动都是徒劳的。
对于表现来讲,用GDI+的DrawImage函数可以完成你对图片的移动要求
simoreg 2011-06-22
  • 打赏
  • 举报
回复
贴出来后 如何改变它连续移动它??

定时器,定时移动它

如果你想像游戏一样连续的移动图片,GDI做不了
加载更多回复(8)

19,468

社区成员

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

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