用GetPixel取得窗体(UseForm)上某个点的RGB值, 运行后发现触发mousemove前,鼠标点击了其他程序(如IE) 最后RGB返回值会出现变化

baneit319 2020-09-13 12:12:27
VBA下,建了一个窗体(UserForm)调用简单的API
返回的是窗体固定位置的RGB值,怎么会在运行程序后,鼠标点击其他应用, 再触发mousemove会发生变化?
hdc每次发生变化可以理解,为什么窗体上某个点颜色的返回值怎么会变化呀?我试了在整个窗体上插个图片进去结果也是这样.
我的理解GetPixel取得的是窗体上50,100这个点的颜色,窗体本身没有变化,那取得的RGB值不应该变化呀?

Module class 代码如下:
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Colorval&, Red&, Green&, Blue&
Public Sub GetRGB(cc As Long)
Red = cc Mod 256
Green = (cc Mod 256) Mod 256
Blue = cc Mod 256 Mod 256
End Sub


窗体UserForm代码如下:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
hdc = GetDC(UserForm)
' hdc = GetDC(0) hdc改成取得0,结果也这样.
Colorval = GetPixel(hdc, 50, 100)
Call GetRGB(Colorval)
Me.Caption = CStr(Colorval) & "Red point:" & CStr(Red) & "Green point:" & CStr(Green) & "Blue point:" & CStr(Blue) & " hdc value:" & hdc
ReleaseDC UserForm, hdc
End Sub
Private Sub UserForm_load()
Me.scalemode = 3
End Sub

直接运行结果(鼠标不去点击其他程序)


运行后,鼠标先去点击比如IE或者其他程序,再触发窗体的mousemove(注意看Red/Green/Blue point这3个值发生了变化!!!)
...全文
655 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baneit319 2020-09-14
  • 打赏
  • 举报
回复
哪位指点一下,万分感谢!
本系统提出了一套面向MRI全心脏分割任务的端到端深度学习解决方案,其核心创新在于将Swin Transformer作为编码器骨干网络,充分挖掘心脏MRI图像中的全局上下文信息与局部细节特征,同时引入4通道输入机制,在传统RGB三通道图像基础上额外拼接一个提示编码通道,支持用户通过鼠标交互在图像上自由标注景(心脏区域)与背景,从而将先验空间信息显式地融入网络向传播过程,实现基于稀疏标注引导的精准分割。在解码阶段,系统采用U型对称结构,通过逐步上采样与跳跃连接逐级恢复特征图分辨率,最终输出二分割掩膜(景/背景),有效区分心脏区域与其他组织。训练过程中,系统选用交叉熵损失函数,配合AdamW优化器与余弦退火学习率调度策略,确保模型在训练集和验证集上稳定收敛,并在每个epoch结束后自动计算全局像素准确率、平均交并比(mIoU)、平均Dice系数、平均精确率、平均召回率及平均F1分数等多项评估指标,全方位监控模型性能。系统内置了完整的训练日志保存、损失曲线与性能曲线绘制、学习率衰减可视化等功能模块,便于用户直观分析训练过程并调优超参数。在推理应用层面,系统封装了基于Tkinter框架的图形化交互界面,用户可上传任意MRI切片图像,通过鼠标左键/右键分别添加景/背景“执行分割”按钮后即可实时生成叠加了红色半透明掩膜的分割结果图像,支持集的增删与重置操作,交互响应灵敏,操作逻辑直观清晰。整体而言,本系统不仅实现了从多模态数据加载、交互式标注编码、基于Transformer的分割建模到图形化推理部署的全链路覆盖,更在算法层面通过提示引导机制与Swin Transformer结构的高效结合,显著降低了对大规模标注数据的依赖,同时提升了模型对心脏边界模糊、形态变异及邻近组织干扰的鲁棒性,为心血管疾病的计算机辅助诊断、术规划及定量分析提供了一种兼具精度与灵活性的智能
针对心脏MRI图像中边界模糊、器官形变复杂以及标注成本高昂等痛,本研究构建了一套以Swin Transformer为编码基座、融合人机交互机制的轻量化分割系统。该方案跳出传统全自动分割的思维定式,转而采纳“模型推理+专家微调”的协同策略,在模型输入层开辟了一条额外的提示通道,允许操作者通过鼠标标记少量景或背景,将这些位置信息与图像特征并行馈入网络,从而将抽象的空间先验转化为可微分的学习信号,使得分割结果能够灵活响应个体差异与局部歧义。编码端采用基于移位窗口注意力的Transformer结构,以分层递降的分辨率捕获全局感受野下的解剖结构关联,解码端则通过逐步上采样与跨层特征拼接恢复空间细节,最终输出逐像素的二分类概率图。训练数据来自心脏MRI多切片序列,每张样本不仅包含原始影像与对应金标准掩膜,还通过随机采样的方式模拟真实交互场景,迫使模型学如何从稀疏的监督中推断完整器官轮廓。损失函数选用标准交叉熵,用以衡量预测概率与真实标签之间的分布差异,同时引入混淆矩阵模块对训练与验证阶段的像素精度、召回率、F1分数、Dice系数及平均交并比进行逐轮次追踪,所有评估曲线均自动落盘保存,便于横向对比不同超参数配置下的性能演变规律。在工具链末端,系统配套开发了一个基于Tkinter的事件驱动型图形界面,将模型推理、标注、结果渲染与图像交互四个环节无缝串联。用户上传图像后,可通过左键与右键分别部署正负样本,随后系统自动完成坐标缩放、通道拼接、向传播与掩膜重采样,最终在原始影像上叠加半透明彩色蒙层,清晰勾勒出模型判定的心脏区域。整套代码逻辑紧密、模块边界清晰,既可作为医学影像分割领域的教学范例,亦可经过少量适配迁移至其他器官或模态的交互式标注任务中,具备良好的扩展潜力与实用价

1,488

社区成员

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

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