vb.net中抓图 vbnet抓取网页数据

vb.net的图片空间怎样获得相对路径下的图片在VB 学习中,绝对路径就是指带有盘符的固定的路径,比如“c:\windows\systems\a.exe” 而相对路径则可用APP.PATH连接文件名来表示 , 比如:App.Path"\a.exe"
以vb学习中加载图片为例,这样就容易弄明白了 。假设我们要在vb中加载一幅图片,假设我们把这个加载图片的程序保存在如下位置:"E:\aa-vbnew\加载图片讲解"而我们的图片在"D:\My Files\图画\tong.jpg"
那么情况如下:1,在代码中直接以绝对路径表示加载到form1中,如图所示:
显示结果如下:
2,换一种方式,以相对路径直接加载也可以 。程序如图:
结果如上图 。
下面分析如下:
第一种方式,我们使用的是图片的完整路径,就称之为绝对路径 , 也就是说不管我们的这个VB程序放到硬盘的任何位置 , 都完全可以显示出来这幅图片,因为图片的路径是绝对的,只要不改变图片的路径,那么就是绝对不变的 。
第二种方式,我们使用的是图片的相对路径,相对于谁呢?是相对于我们的VB这个应用程序和这幅图片自身位置的 。一旦我们的程序位置发生变化或者图片的位置发生改变,那么这个程序都不可以执行,不会显示这幅图片 。所以说这就是相对路径,是以一个参考对象而存在的 。
VB.NET当鼠标停在屏幕任意地方,得到该点的颜色我有个笨办法,先用API抓图到内存里,然后再在根据你点鼠标的屏幕工作区坐标,去那图里取色 。
-----------------------
【vb.net中抓图 vbnet抓取网页数据】'抓图所需的API
Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As Integer) As Integer
Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer
Private Declare Function BitBlt Lib "GDI32" (ByVal srchDC As Integer, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcW As Integer, ByVal srcH As Integer, ByVal desthDC As Integer, ByVal destX As Integer, ByVal destY As Integer, ByVal op As Integer) As Integer
Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As Integer) As Integer
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObj As Integer) As Integer
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer
Const SRCCOPY As Integer = HCC0020
'抓图的部分
Dim hDC, hMDC As Integer
Dim hBMP, hBMPOld As Integer
Dim sw, sh As Integer
hDC = GetDC(0)
hMDC = CreateCompatibleDC(hDC)
sw = Screen.PrimaryScreen.Bounds.Width
sh = Screen.PrimaryScreen.Bounds.Height
hBMP = CreateCompatibleBitmap(hDC, sw, sh)
hBMPOld = SelectObject(hMDC, hBMP)
BitBlt(hMDC, 0, 0, sw, sh, hDC, 0, 0, SRCCOPY)
hBMP = SelectObject(hMDC, hBMPOld)
Dim bmp As Bitmap = Image.FromHbitmap(New IntPtr(hBMP))
DeleteDC(hDC)
DeleteDC(hMDC)
DeleteObject(hBMP)
......
'取点的颜色
bmp.GetPixel(e.X, e.Y)
----------------------------
关键就是这些你自己组合吧,你分给的太少了,很麻烦,恕我不帮你改全了 。如果要仔细帮你改 , 请另开高分贴 , 不要用新马甲来
vb.net 2008 如何将指定的窗体截图并保存INTOUCH自带vb.net中抓图的就有vb.net中抓图,打印屏幕的命令
自己写个时间条件运行那命令就可以vb.net中抓图了
PRINTSCREEN这个命令 具体怎么用 看下帮助
希望vb.net中抓图我的回答对你有所帮助
如有其他问题 , 可以继续追问,您的采纳是我前进的动力vb.net中抓图!
VB如何实现DX\GDI 技术截屏?屏幕抓图至少分为3个步骤vb.net中抓图:
(1) 启用鼠标指针捕获 。
(2) 在鼠标指针所在处vb.net中抓图的窗口进行绘图vb.net中抓图,提示抓图的目标 。
(3) 选定目标窗口时vb.net中抓图,将目标窗口的画面保存为自定义的位图并终止鼠标指针捕获 。
以下是具体的编程步骤:
(1)在Visual C.NET中按照GDI 程序的框架新建一个基于对话框的项目ScreenCapture,然后准备好一个外形为相机的光标文件(*.cur),将之引入资源管理器(IDC_CAMERA) 。接着在CScreenCaptureDlg类中加入以下两个全局变量:
HWND hwndCapture;
Crect rectCapture;
(2)通过类向导加入对WM_MOUSEMOVE及WM_LBUTTONUP事件的响应函数 , 分别如下所示 。
void CScreenCaptureDlg::OnMouseMove(UINT nFlags, CPoint point)
{
//如果用户按隹鼠标左键不放,则开始抓取图片
if(nFlags==MK_LBUTTON){
//隐藏程序窗口,以免影响在抓取时的“视野”
ShowWindow(SW_HIDE);
//载入“照相机”鼠标指针 , 开始追踪鼠标指针的移动
HCURSOR cur=LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDC_CAMERA));
SetCursor(cur);
SetCapture();
//获得鼠标指针所在窗口的句柄
this-ClientToScreen(point);
hwndCapture=(HWND)::WindowFromPoint(point);
//取得屏幕的设备环境句柄,以便在屏幕的任何位置绘图
HDC hDC=::GetDC(NULL);
//建立一个红色的画笔
HPEN hPen=CreatePen(PS_INSIDEFRAME,6,RGB(255,0,0));
//将绘图模式设为R2_NOTXORPEN,在绘图时可以不破坏原有的背景
int nMode=SetROP2(hDC,R2_NOTXORPEN);
HPEN hpenOld=(HPEN)SelectObject(hDC,hPen);
//得到鼠标指针所在窗口的区域
::GetWindowRect(hwndCapture,rectCapture);
//在鼠标指针所在处的窗口四周画一红色的矩形,做为选定时的提示
POINT pt[5];
pt[0]=CPoint(rectCapture.left,rectCapture.top);
pt[1]=CPoint(rectCapture.right,rectCapture.top);
pt[2]=CPoint(rectCapture.right,rectCapture.bottom);
pt[3]=CPoint(rectCapture.left,rectCapture.bottom);
pt[4]=CPoint(rectCapture.left,rectCapture.top);
::Polyline(hDC,pt,5);
//延时后再重绘红色矩形,这样不会破坏原有的内容
Sleep(100);
::Polyline(hDC,pt,5);
::SelectObject(hDC,hpenOld);
::ReleaseDC(NULL,hDC);
}
CDialog::OnMouseMove(nFlags, point);
}
void CScreenCaptureDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// 得到鼠标指针所在窗口的区域宽、高
int nWidth=rectCapture.Width();
int nHeight=rectCapture.Height();
HDC hdcScreen,hMemDC;
HBITMAP hBitmap,hOldBitmap;
//建立一个屏幕设备环境句柄
hdcScreen=CreateDC("DISPLAY",NULL,NULL,NULL);
hMemDC=CreateCompatibleDC(hdcScreen);
//建立一个与屏幕设备环境句柄兼容、与鼠标指针所在窗口的区域等大的位图
hBitmap=CreateCompatibleBitmap(hdcScreen,nWidth,nHeight);
//把新位图选到内存设备描述表中
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
//把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC,0,0,nWidth,nHeight,hdcScreen,rectCapture.left,rectCapture.top,SRCCOPY);
DeleteDC(hdcScreen);
DeleteDC(hMemDC);
//返回位图句柄
//打开剪贴板 , 并将位图拷到剪贴板上
OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_BITMAP,hBitmap);
//关闭剪贴板
CloseClipboard();
MessageBox("屏幕内容已经拷到剪贴板vb.net中抓图!");
ReleaseCapture();
//恢复窗口显示模式
ShowWindow(SW_NORMAL);
CDialog::OnLButtonUp(nFlags, point);
}
至此,一个具有专业效果的屏幕抓图程序的核心已经搞定 。
网上下的VB.NET截屏程序,试过好用 , 哪位大侠给详细解释一下!另外,怎么把截图加载到Picturebox里?VB.NT用的是触发事件,一按就会触发,要不你加个timer控件,延迟一秒
标题的问题:你先把图片保存,再加载
vb.net中抓图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet抓取网页数据、vb.net中抓图的信息别忘了在本站进行查找喔 。

    推荐阅读