请问各位大神,c++ MFC 如何 在图片上再截图

lwjunz 2013-06-04 10:23:37
首先截取桌面图片保存成bmp文件,再读取bmp图片文件到CBitmap bmp,最后在bmp上截取图片 如 该bmp 是800 * 600 我需要(截图)截取里面一小块图片 假如 定义函数CBitmap GetImageItem(CBitmap parentImage,int x,int y,int w,int h);

输入一个大图片 坐标 X 300,Y 200 , width 50 height 60
返回一个小图片块

本人是新手,究竟要怎么做,请大神指教,给出现成代码更好。。不够再加分,谢谢
...全文
174 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaynaviee 2013-06-05
  • 打赏
  • 举报
回复
BitBlt(不能缩放) StretchBlt(只能放大) TransparentBlt(透明) StretchDIBits(可以缩放) 这几个都可以实现裁剪
lwjunz 2013-06-04
  • 打赏
  • 举报
回复
引用 4 楼 liuli7786 的回复:
#include <atlimage.h>
    CImage image;
	CImage image1;
	int pointX = 300;
	int pointY = 200;
	int width = 50;
	int height = 60;

	image.Load(L"D:\\1.bmp");
	image1.Create(width,height,image.GetBPP());
	image.Draw(image1.GetDC(),0,0,width,height,pointX,pointY,width,height);
	image1.Save(L"D:\\2.bmp");
以上代码放在方法里,当方法结束时,报错【我的是VS2010 】: ~CImage() inline HBITMAP CImage::Detach() throw() ATLASSUME( m_hDC == NULL );
liuli7786 2013-06-04
  • 打赏
  • 举报
回复
#include <atlimage.h>
    CImage image;
	CImage image1;
	int pointX = 300;
	int pointY = 200;
	int width = 50;
	int height = 60;

	image.Load(L"D:\\1.bmp");
	image1.Create(width,height,image.GetBPP());
	image.Draw(image1.GetDC(),0,0,width,height,pointX,pointY,width,height);
	image1.Save(L"D:\\2.bmp");
曾有一个人 2013-06-04
  • 打赏
  • 举报
回复
CDC::BitBlt Copies a bitmap from the source device context to this current device context. 然后再保存为bmp文件就可以了
yaozhiyong110 2013-06-04
  • 打赏
  • 举报
回复
GDI+ Bitmap* pbitmap = ::new Bitmap(...);//需要的size Graphics gph(pbitmap); gph->DrawImage(...); DrawImage就可以选择从原图哪里画多少 就画到pbitmap 里面去了
yaozhiyong110 2013-06-04
  • 打赏
  • 举报
回复
读取源图像,得到这张图像的数据。 按照你要生成的图像的大小,创建1个新的图像 可以借助CxImage和OpenCv这些库
liuli7786 2013-06-04
  • 打赏
  • 举报
回复
代码后面加一句:image1.ReleaseDC();

19,469

社区成员

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

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