您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页利用VB6.0和Windows API函数制作屏幕抓取程序

利用VB6.0和Windows API函数制作屏幕抓取程序

来源:五一七教育网
维普资讯 http://www.cqvip.com

第8卷第2期 2 006年6月 辽宁师专学报 Journal of Liaoning Teachers College V0I.8 No.2 Jun.2 0 06 【学术研究】 利用VB6.0和Windows API函数制作屏幕抓取程序 肖 宁 (铁岭师专,辽宁铁岭112000) 摘要:介绍利用VB6.0制作屏幕抓取程序的方法, 并给出完整的程序代码及程序的运行结果. 关键词:抓取;Windows API;外接函数 中图分类号:TP311.52 文献标识码:A 文章编号:1008—5688(2006)02—0045—0l 在win9x及以上的操作系统中,屏幕抓取的方法为:按下Print Screen键,接着打开画图程序(paint),选取编辑(edit)/粘贴 (paste),即可将抓取的屏幕图像插入到空白的绘图区域中. 这一操作方法的原理是:当按下Print Screen键时,屏幕图像被拷贝到剪贴板(clipboard)中.剪贴板中可以承载多种格式的文件,当 然包括位图文件(*.bmp).因此可以利用画图程序读取.除了上述方法之外,利用VB6.0和Windows API函数同样可以完成屏幕图像的 抓取,所需的API外接函数为:BitBlt、GetI ̄、ReleaseDC. 1设计 1.1窗体设计 利用VB6.0创建如图1所示的窗体,窗体的属性如表1所示,其中PicCopy较特殊,它被Picturel覆盖住了,在图1中看不见 裹1 蠢 邈 蠡 一 拥翻攥存 :::圃 ●{ i l 图1 1.2标准模块(ScrCap) 在VB6.0主菜单中选取工程(Project)/添加模块 (Add Module),Name赋值为ScrCap.选取主菜单“外接程序”(Add—Ins)/API查 看器(API Viewer),声明三个API外接程序如下: Option Explicit oLng,ByVal dwRopAsLong)AsLong Declare Function BitBlt Lib gdi32 (ByVal hDestDC As Long。ByVal x Declare Function GetDC Lib user32 (ByVal hWnd As Long)As Long sALong,ByVal YAsLong,ByVal nWidthAsLong,ByVa1 nHeightAs Declare Function ReleaseDC Lib user32 (ByVal hWnd As oLng,ByVal Long,ByVal hSrcDC As Long,ByVa1 xSrc As Long,ByVal ySre As hDCAsLong)AsLong 1,3主界面frmCopyScreen程序代码 Sub SetPicture() VScroU1.LargeChange=VScroU1,Max/10 picCopy.Visible=True EndIf If picCopy,Width<:Picturel,ScaleWidth Then End Sub picCopy.Left:(Picturel,ScaleWidth—picCopy,width)/2 Private Sub F0nTL Resize() Else On Error Resume Next picCopy.Left=0 Picturel,Width:Me,ScaleWidth—VScrolll,Width HScroU1.Min:0 Picture1.Height=Me.ScaleHeight—HScroUl,Height HScroU1.Value=0 VScroU1.Left=Picture1.Width HScroU1.Max:picCopy.Width—Picturel,ScaleWidth HScroU1.Top=Picture1.Height HScroU1.SmallChange=HScroll1.Max/100 VScroU1.Height=Picture1.Height HScroUl,LargeChange=HScroU1.Max/10 HScroU1.Width:Picture1.Width EndIf SetPicture If picCopy.Height<:Picture1.cSaleHeight Then End Sub picCopy,Top=(Picture1.ScaleHeight—picCopy.Height)/2 Private Sub HScroUl_Change() Else picCopy.Left:一HScroU1.Value picCopy.Top:0 End Sub VScroU1.Min:0 Private Sub mCopyScren—Click() VScroU1.Value=0 Dim hDC As Long,SX sA Integer,sy As Integer VScroU1.Max=picCopy.Height—Picturel,ScaleHeight Me.Hide VScroUl,SmallChange:VScrolll,Max/100 DoEvents (下转87页) 收稿日期:2005—12—20 作者简介:肖宁(1963一),女,辽宁铁岭市人,讲师,主要从事计算机教学研究 维普资讯 http://www.cqvip.com

田凤斌 灯光照明技术的发展与实践研究 87 3现代灯光照明技术与影视质量 实践证明,运用现代灯光照明技术是保证影视质量的关键.比如,辽宁电视台新闻演播室灯光系统包括:调光系统:1 个48路数字调光台(DMX512协议信号),56路调光立柜.吊挂系统:可滑动手动插控设备.灯具是冷、热光源混和使用 的.热光源为1 kW聚光灯20台,1.25 kW散光灯10台.6×36 W三基色冷光灯12台,用以保证新闻节目演播室部分的 录制.多种灯具配合使用满足了布光效果的需求.辽宁电视台利用现有数字灯光控制系统对演播室灯光进行了编组、分 场.可以根据需要调节设定灯光在一定需求时让哪一组或哪几组灯点亮,并可以设定每一台灯按百分比提供亮度以构成良 好的照明效果.在辽宁电视台的11号新闻演播室内,利用有效空间和灯光设备共设置了三个景区,为此,就必须对现有灯 光设备进行编组.有的灯具要在几个景区中反复应用,并对每个景区所需灯光进行先期调整布光后在DMX512信号控制调 光台上进行了编组与设定,这样在每档节目间只要再进行微调后就可以得到新的光区所需的光效. 在辽宁电视台新闻节目中心,有较多的栏目是利用抠像技术来实现的.因为背景版的制作需要大量的经费,而抠像技 术可以实现虚拟化的演播室效果,还可以减少背景制作的经费,节省演播室空间.这样一来就对灯光照明提出了较高的要 求.抠像中,灯光照明采用的是2台1 kW散光照射蓝底光源,使蓝底照度在1 200~1 500 Lx.主持人的逆光采用1 kW聚 光灯两台,照度在2 000~2 500 Lx.一台1 kW聚光灯在机位的左倾45。角的位置为人物的主光,照度在1 800~2 200 Lx, 三基色冷光灯6×56 W三台作副光照明.这样一来演播室整体光照度,达到摄像机的最佳效果,突出了人物的美. 抠蓝在电视台应用的是比较多的一种手段. 在节目改版期间,辽宁电视台中心领导决定把抠蓝改为抠绿,<辽宁新闻》是两个主持人,三台摄像机,同时用抠像技术 来完成的.应用的切换台是SONY的DVS一7150,相当于用一个键抠三个键源,这对灯光照明提出了很高的要求.绿背景对 照度要求较高,而且要求非常均匀,长5 m、高2.5 m的背景,用热光源灯能很好地解决问题,但是由于离墙近,防火不允 许,所以只能用三基色冷光灯照亮背景.采用上方两台4×36 W,下面三台4×36 W三基色冷光灯照射背景,但照度不均, 亮度不够,最后采用上边四台,下面六台,这样绿背景照度达到2000~2500 Lx,解决了背景问题.但主持人又有了新问题, 如果按主持人脸曝光,男女明暗不一致,所需照度也不一致,女主持人亮,男主持人暗,色彩还原不好,主持人脸发黄,没 有层次.为了解决这个问题,试用灰调白平衡,用测试卡调整摄像机,但都不能达到满意的效果.由于演播室灯光色温要求 3200 K,如果提高色温,则突增了人物蓝色彩,最后把灯具加上雷登82B滤色片,调机时还用3200 K色温调,调好后把加滤 色片的灯光开关打开,主持人的脸部效果就出来了,色彩还原好了,主持人也不用为衣服的颜色苦恼了. 在用光上,打破常规,用两台1 kW聚光灯用做主持人的逆光,灯的焦聚调到最小,离主持人的距离很近,以增强逆光 的强度.面光用6×36W三基色冷光灯半弧型平均照明,主光机位的45。角位置下布灯,聚焦在白色反光板上把主持人颈部的 阴影打亮,收到了很好的效果.现在在辽宁电视台新闻演播室内,主持人的衣服颜色受到较少,可以达到很好的效果. 随着电视事业的发展,电视技术的不断更新,对电视灯光技术人员的工作将会提出更新更高的要求,还会有更新的问题出 现,需要我们去解决.电视工作者只有不断学习总结经验,才能适应未来电视事业发展的需要. (责任编辑 王立俊,王巍) (上接45页) picCopy.Width=Screen.Width With CommonDi ̄og1 picCopy.Height=Screen.Height .Di ̄ogTitle= 保存文件 picCopy.AutoRedraw=True .Filter= 位图文件(*.bmp)l*.bm hDC=GetDC(0) .CancelError=True sx=Screen Width t Screen.TwipsPerPixe1X .ShowSave sy=Screen.Height\Screen.TwipsPerPixelY If Err.Number<>cdlCancel Then BitBlt picCopy.hDC,0,0,SX,sy,hDC,0,0,vbSrcCopy SavePicture picCopy.Picture,.FileName ReleaseDC 0,hDC EndIf picCopy.AutoRedraw=False EndWith SetPicture End Sub Me.Show Private Sub VScrolll_Change() End Sub picCopy.Top=一VScr0U1.Value Private Sub mSaveFile_Click() End Sub On Error Resume Next 2程序运行 (1)抓图程序运行界面如图2所示.(2)单击“抓图”菜单后运行界面如图3所示.(3)单击“保存”菜单后运行界面如图4所示 尊 0 ∞撬曙 )蕾 j 《协T^ 烹 口口《)帮 岫 l D毋瞄毒强争 醢 圈髓霹田 芷立 - 诨 躲捷讳。矗 . 自 .姑R 熬最t 隧… … ” 。 — ———一 ;豢萋  li 菱 》Ii  ; 1 lsub磁 S ‘ ~ , 图2 图3 图4 3结束语 以上是屏幕抓取程序. 经过代码调整以后可以完成抓取运行程序主界面或运行程序客户区界面等功能●其关键是1312属性的获取,限 于篇幅不再赘述. (责任编辑李树东。王巍) 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务