怎样截取Form1隐藏后屏幕上的图象

laisiwei 2004-04-15 10:18:47
怎样截取Form1隐藏后屏幕上的图象。当然不能把Form1设置为隐藏
...全文
103 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuginka 2004-04-18
  • 打赏
  • 举报
回复
to MSTOP(陈建华(东莞立晨企资)) ( )
我把你的程序拷贝下来运行,怎么一运行就无法保存图片,看不到那个保存按钮
laisiwei 2004-04-18
  • 打赏
  • 举报
回复
同意KongNan(孔南)
laisiwei 2004-04-17
  • 打赏
  • 举报
回复
up
孔南 2004-04-17
  • 打赏
  • 举报
回复
webmasterss(性情中人) ,隐藏先不说,PrintScreen可以用SendKey发送吗?
pigpag 2004-04-17
  • 打赏
  • 举报
回复
等,给你写一段试试

不过只能在XP/2003下使用
laisiwei 2004-04-17
  • 打赏
  • 举报
回复
up
laisiwei 2004-04-16
  • 打赏
  • 举报
回复
MSTOP(陈建华(东莞立晨企资)) 的代码速度的确快,不过窗口还是隐藏过了,我的机子上很明显
有没有更好的办法?
wumy_ld 2004-04-16
  • 打赏
  • 举报
回复
原来是要抓整个屏幕,我还以为只是抓被窗体盖住的那部分。
webmasterss 2004-04-16
  • 打赏
  • 举报
回复
我估计是我理解错了,是截屏吗?sendkey,模拟按下print screen键,然后读取剪贴板内容到你想要的地方!
华芸智森 2004-04-16
  • 打赏
  • 举报
回复
Option Explicit

PRIVATE Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
PRIVATE Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
PRIVATE Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long


Sub SetPicture()
picCopy.Visible = True
If picCopy.Width <= Picture1.ScaleWidth Then
picCopy.Left = (Picture1.ScaleWidth - picCopy.Width) / 2
Else
picCopy.Left = 0
HScroll1.Min = 0
HScroll1.Value = 0
HScroll1.Max = picCopy.Width - Picture1.ScaleWidth
HScroll1.SmallChange = HScroll1.Max / 100
HScroll1.LargeChange = HScroll1.Max / 10
End If

If picCopy.Height <= Picture1.ScaleHeight Then
picCopy.Top = (Picture1.ScaleHeight - picCopy.Height) / 2
Else
picCopy.Top = 0
VScroll1.Min = 0
VScroll1.Value = 0
VScroll1.Max = picCopy.Height - Picture1.ScaleHeight
VScroll1.SmallChange = VScroll1.Max / 100
VScroll1.LargeChange = VScroll1.Max / 10
End If
End Sub

Private Sub Form_Resize()
On Error Resume Next
Picture1.Width = Me.ScaleWidth - VScroll1.Width
Picture1.Height = Me.ScaleHeight - HScroll1.Height
VScroll1.Left = Picture1.Width
HScroll1.Top = Picture1.Height
VScroll1.Height = Picture1.Height
HScroll1.Width = Picture1.Width

SetPicture
End Sub

Private Sub HScroll1_Change()
picCopy.Left = -HScroll1.Value
End Sub
Private Sub mCopyScreen_Click() '抓屏
Dim hDC As Long, sx As Integer, sy As Integer

Me.Hide
DoEvents

picCopy.Width = Screen.Width
picCopy.Height = Screen.Height

picCopy.AutoRedraw = True

hDC = GetDC(0)
sx = Screen.Width \ Screen.TwipsPerPixelX
sy = Screen.Height \ Screen.TwipsPerPixelY
BitBlt picCopy.hDC, 0, 0, sx, sy, hDC, 0, 0, vbSrcCopy
ReleaseDC 0, hDC

picCopy.AutoRedraw = False

SetPicture
Me.Show
End Sub

Private Sub mSaveFile_Click() '将文件保存为BMP
On Error Resume Next
With CommonDialog1
.DialogTitle = "储存文件"
.Filter = "位图文件(*.bmp)|*.bmp"
.CancelError = True
.ShowOpen
If Err.Number <> cdlCancel Then
SavePicture picCopy.Picture, .FileName
End If
End With
End Sub

Private Sub VScroll1_Change()
picCopy.Top = -VScroll1.Value
End Sub


8276 2004-04-16
  • 打赏
  • 举报
回复
这个问题太简单了,只要将FORM的visible设为false以后,用api就可以截取了,将截取的图象放在picturebox中,以备你以后的使用!
pigpag 2004-04-16
  • 打赏
  • 举报
回复
//最后怎么取这个区域的图像,同时不隐藏当前窗体,难度较大

一个可行的方法是调用PrintWindow函数,将背景打印到hDC中。注意仅被Windows XP/2003支持。
ukyoxh 2004-04-16
  • 打赏
  • 举报
回复
可以使用api实现吧

没有具体的遇到过,也不会哈

帮你顶!
laisiwei 2004-04-16
  • 打赏
  • 举报
回复
up
laisiwei 2004-04-16
  • 打赏
  • 举报
回复
up
wumy_ld 2004-04-15
  • 打赏
  • 举报
回复
首先获取窗体在屏幕上占用的区域坐标,可以用api函数GetDCOrgEx获取窗体左上角坐标,接下来通过窗体的宽度和高度可以算出这个矩形区域的右下角。
最后怎么取这个区域的图像,同时不隐藏当前窗体,难度较大,偶还不会。
内容概要:本文聚焦于氢燃料电池极化曲线参数的辨识与性能评估,采用人工蜂群算法(ABC)结合Matlab编程实现。研究基于Amphlett半经验模型构建质子交换膜燃料电池(PEMFC)的极化特性模型,通过优化算法对模型中的高维非线性参数进行全局辨识,旨在精确还原燃料电池的实际输出电压-电流关系。文中系统分析了人工蜂群算法在参数反演过程中的收敛性、敏感性与可辨识性,验证了其在多参数耦合、强非线性系统建模中的优越性能。同时,通过对辨识后的模型进行多维度性能评估,如残差分析、拟合优度检验与工况适应性测试,全面衡量模型精度与实用性,为燃料电池系统的设计、控制与优化提供可靠的理论依据与数据支撑。; 适合人群:具备一定Matlab编程基础,从事新能源、燃料电池、系统建模或智能优化算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握基于智能优化算法的复杂电化学系统参数辨识方法;② 学习利用Amphlett等半经验模型进行PEMFC建模与仿真;③ 理解人工蜂群算法在解决高维非线性优化问题中的应用技巧与性能分析方法;④ 实现燃料电池性能的精确评估与预测。; 阅读建议:本资源以Matlab代码实现为核心,强调算法应用与实践操作。学习者应在掌握基本电化学原理和优化算法概念的基础上,结合提供的代码进行调试与仿真,重点关注目标函数的构建、参数初始化范围的设定以及算法收敛过程的可视化分析,以深入理解参数辨识的内在机理。
内容概要:本文围绕大规模新能源并网背景下的电力系统经济调度问题,重点研究火电机组深度调峰的优化建模与求解方法。针对新能源出力具有的强波动性和高随机性特点,构建了考虑火电机组深度调峰能力的经济调度模型,通过优化机组在低负荷运行区间的调度策略,提升系统对风电、光伏等间歇性电源的消纳能力,同时降低系统整体运行成本。研究采用Matlab平台进行编程实现,结合粒子群、遗传算法等智能优化算法对模型进行高效求解,充分验证了所提方法在增强系统灵活性、保障运行安全性及提升经济性方面的有效性。文中提供了完整的代码实现流程与详细的仿真结果分析,便于读者复现和进一步拓展研究。; 适合人群:具备电力系统分析、运筹优化基础知识及Matlab编程能力的高校硕士、博士研究生,从事新能源并网、电力系统调度、能源互联网等方向的科研人员,以及电力企业中从事运行规划与调度管理的工程技术人员。; 使用场景及目标:①深入理解高比例新能源接入下电力系统灵活调节的需求与挑战;②掌握火电机组深度调峰的建模方法及其在经济调度中的实现路径;③学习基于Matlab的优化模型构建、智能算法求解与仿真分析技术;④为开展源网荷储协同优化、新型电力系统调度决策等前沿课题提供方法论支持和技术参考。; 阅读建议:建议读者结合文中的数学模型推导与Matlab代码实现,逐步理解目标函数构建、约束条件处理(如机组爬坡、最小启停时间、深度调峰能力限制)及算法参数设置等关键环节。在学习过程中,可尝试调整新能源渗透率、负荷需求模式或引入更复杂的约束条件,进行对比实验,以深化对调度模型鲁棒性与适应性的理解。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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