社区
界面
帖子详情
@@高手去那里了,如何截取局部屏幕保存@@
toxyboy
2006-04-25 10:07:10
全屏截图好截取,现在是不知道如何让程序等待鼠标在屏幕拉框局部截取保存。。。
最好有案例,实在不行,给个思路也行。。。
...全文
264
11
打赏
收藏
@@高手去那里了,如何截取局部屏幕保存@@
全屏截图好截取,现在是不知道如何让程序等待鼠标在屏幕拉框局部截取保存。。。 最好有案例,实在不行,给个思路也行。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
吹雪
2006-04-26
打赏
举报
回复
关于那个矩形框,可以这样解决。
OnLButtonDown:
ptStart = ptEnd = point;
yangxingkuan
2006-04-26
打赏
举报
回复
看了下,基本能看懂,下次自己试试,up
toxyboy
2006-04-25
打赏
举报
回复
就是我鼠标在拉框选择的时候,对角就会出现一个和顶点对称的矩形框。和用鼠标拉的框一样。你那边没有吗?有点奇怪,我换台机器试试
pomelowu
2006-04-25
打赏
举报
回复
你说的是什么样的矩形框?
toxyboy
2006-04-25
打赏
举报
回复
呵呵,仔细看了看也明白了。。谢谢兄台!!不过,好像有点瑕疵,不知道兄台发现没,就是每次鼠标选取的时候在屏幕左上角也会出现个矩形框。这有办法去掉吗??
pomelowu
2006-04-25
打赏
举报
回复
tigDlg你不用管了。。。我只是在别人取消了选取操作的时候给了一个提示而已。:)
toxyboy
2006-04-25
打赏
举报
回复
楼上老兄,那个tigDlg是什么dlg。能再细点吗?
pomelowu
2006-04-25
打赏
举报
回复
全屏截图贴到一个全屏的对话框上,然后想怎么截局部还不随便你?^_^
这是我以前写的,可以参考一下:
void CSCRDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
ptStart = point;
SetCapture();
}
CRect MakeRect(CPoint pt1, CPoint pt2)
{
POINT ptLeftUp, ptRightDown;
if (pt2.x == 0 && pt2.y == 0)
return CRect(0, 0, 0, 0);
ptLeftUp.x = (pt1.x < pt2.x) ? pt1.x : pt2.x;
ptLeftUp.y = (pt1.y < pt2.y) ? pt1.y : pt2.y;
ptRightDown.x = (pt1.x > pt2.x) ? pt1.x : pt2.x;
ptRightDown.y = (pt1.y > pt2.y) ? pt1.y : pt2.y;
return CRect(ptLeftUp, ptRightDown);
}
void CSCRDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags==MK_LBUTTON)
{
CDC *pDC = GetDC();
pDC->DrawFocusRect(MakeRect(ptStart, ptEnd));
pDC->DrawFocusRect(MakeRect(ptStart, point));
ptEnd = point;
ReleaseDC(pDC);
}
CDialog::OnMouseMove(nFlags, point);
}
BOOL CSCRDlg::OnInitDialog()
{
CDialog::OnInitDialog();
GetDesktopWindow()->GetWindowRect(crDesktop);
CDC dc;
CBitmap *pBmp = NULL;
dc.CreateDC("DISPLAY", NULL, NULL, NULL);
pMemDC = new CDC;
if (!pMemDC)
return FALSE;
pMemDC->CreateCompatibleDC(&dc);
pBmp = new CBitmap;
if (!pBmp)
return FALSE;
pBmp->CreateCompatibleBitmap(&dc, crDesktop.Width(), crDesktop.Height());
pMemDC->SelectObject(pBmp);
ShowWindow(SW_HIDE);
pMemDC->BitBlt(0, 0, crDesktop.Width(), crDesktop.Height(), &dc, 0, 0, SRCCOPY);
dc.DeleteDC();
delete pBmp;
ShowWindow(SW_MAXIMIZE);
POINT point;
GetCursorPos(&point);
return TRUE;
}
void CSCRDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
ReleaseCapture();
CRect rcCopy = MakeRect(ptStart, point);
if (MessageBox("Press \'OK\' to copy the region to clip board & return to main window.\nPress \'Cancel\' button to reselect.",
"CaptureAny Confirmation", MB_OKCANCEL) == IDOK)
{
CDC dcCopy;
CBitmap bmpCopy;
dcCopy.CreateCompatibleDC(pMemDC);
bmpCopy.CreateCompatibleBitmap(pMemDC, rcCopy.Width(), rcCopy.Height());
dcCopy.SelectObject(&bmpCopy);
dcCopy.BitBlt(0, 0, rcCopy.Width(), rcCopy.Height(),
pMemDC, rcCopy.left, rcCopy.top, SRCCOPY);
OpenClipboard() ;
EmptyClipboard();
SetClipboardData(CF_BITMAP, (HBITMAP)bmpCopy.m_hObject);
CloseClipboard();
dcCopy.DeleteDC();
CDC *pDC = GetDC();
pDC->DrawFocusRect(MakeRect(ptStart, point));
ReleaseDC(pDC);
ptEnd = (0, 0);
OnCancel();
return;
}
CDC *pDC = GetDC();
pDC->DrawFocusRect(MakeRect(ptStart, point));
ReleaseDC(pDC);
tipDlg.SetWindowPos(&wndTopMost, point.x + 15, point.y, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE);
tipDlg.SetScrDlg(this);
ptEnd = (0, 0);
}
void CSCRDlg::OnPaint()
{
CPaintDC dc(this);
dc.BitBlt(0,0,crDesktop.Width(), crDesktop.Height(), pMemDC, 0, 0, SRCCOPY);
}
baibai1983
2006-04-25
打赏
举报
回复
先全屏截图,然后在指定要截取得子图的位置成么?
QuickGo
2006-04-25
打赏
举报
回复
我编写绘图软件的时候,都是把整个图像保存在内存中,所以,所以截图的时候没有困难。
hifan
2006-04-25
打赏
举报
回复
关于那个矩形框,可以这样解决。
再加一个变量 CPoint ptLast;
ptLast.x = -1;
ptLast.y = -1;
以上为初始化。
将下面
CDC *pDC = GetDC();
pDC->DrawFocusRect(MakeRect(ptStart, ptEnd));
pDC->DrawFocusRect(MakeRect(ptStart, point));
ptEnd = point;
改为
ptEnd = point;
CDC *pDC = GetDC();
if(!(ptLast.x==-1 && ptLast.y==-1))
pDC->DrawFocusRect(MakeRect(ptStart, ptLast));
pDC->DrawFocusRect(MakeRect(ptStart, ptEnd));
ptLast = ptEnd;
然后在MouseUp的时候,再将
ptLast.x = -1;
ptLast.y = -1;
易语言快照和
截取
屏幕
区域
本教程详细介绍了使用易语言进行截图的方法,包括窗口快照、全屏快照及
保存
快照等实用技巧,同时演示了如何
截取
屏幕
特定区域并
保存
为图片。
Unity3D编写脚本从
屏幕
截取
一个子区域
保存
为Texture2D,用于
保存
图片和当贴图都可以
本文介绍了一个Unity脚本,该脚本可以实现全屏截图及根据GameObject定义的范围进行
局部
屏幕
截取
。通过使用ScreenCapture和Texture2D组件,脚本能够捕捉
屏幕
画面并将其
保存
为纹理数据。
Android截
屏幕
实现,
截取
屏幕
为bitmap,并
保存
进手机图库,activity之间传递bitmap对象
本文探讨了Android中三种截屏场景:超过一
屏幕
的长图、当前
屏幕
截图、
局部
截图,详细分析了遇到的黑背景问题及其解决办法。同时,文章介绍了如何将截图的bitmap
保存
到本地图库,以及如何在activity间传递bitmap数据的创新方法。
截取
屏幕
中
局部
图片
本文详细介绍了使用Objective-C语言在iOS设备上通过Core Graphics框架
截取
指定区域的
屏幕
截图,并将其
保存
至本地文件夹及相册的操作步骤。包括使用UIGraphics上下文进行图像渲染,调整截图区域,以及将获取到的CGImage转换为UIImage对象,最后通过UIImageWriteToSavedPhotosAlbum方法将截图
保存
到用户相册。
C#
截取
屏幕
局部
本文介绍了一个使用C#实现的全屏截图功能,并提供了完整的代码示例。该方法通过创建位图并利用Graphics对象从
屏幕
复制图像,然后将
截取
的图像
保存
为.jpg或.bmp格式。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章