展开

关键词

WPF 获得精度和

本文主要告诉大家如何获得所有的设备的精度和点数。需要通过反射的方法才可以拿到的精度。 使用 Tablet.TabletDevices 可以获得所有的设备,获得点数可以通过下面代码foreach (TabletDevice device in Tablet.TabletDevices ){ Console.WriteLine(点数 + device.StylusDevices.Count);点数}精度就需要使用反射 var builder = new StringBuilder deviceImpl, null); if (device.Type == TabletDeviceType.Touch) { builder.Append(string.Format({1}:{2} 点 ,精度 {3}{0}, Environment.NewLine, device.Name, device.StylusDevices.Count, tabletSize)); } }如果发现设备失效

32610

WPF 插拔设备失效

最近使用 WPF 程序,在不停插拔设备会让 WPF 程序失效。通过分析 WPF 源代码可以找到 WPF 失效的原因。 获取流程循环用于拿到用户相关。很多的时候,在用户正常使用的流程只是运行初始化流程循环一次,之后在用户的时候就通过获取流程循环拿到值。 因为 GetPenEvent 和 GetPenEventMultiple 都只有在屏收到信息或者 _pimcResetHandle 被释放会返回,而在用户拔出屏时,屏是没有收到信息, 因为在用户插入屏时发了 TabletAdded 消息,在之后用户时不会有其他的插拔相关消息。 实际上这里在 _handles 没有值就是用户没有屏,用户插入屏的时间是很少的,没有几个用户一天没事都在插入拔出屏,所以在用户插入屏时再创建一个新的线程,在用户拔出屏去掉这个线程是可以的

44210
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF 从消息转事件

    在 WPF 程序可能因为一些坑让程序失效,如果此时还可以收到系统的消息,那么可以通过从消息转事件解决程序失效但不适合所有失效程序在 WPF 的代码写的不是很清真,特别是到事件可能出现一些坑 ,如WPF 在线程等待主线程窗口关闭会让主线程和线程相互等待 和 WPF 插拔设备失效 等,有时候在开机的过程,如果启动快了,设备还没准备好,刚好在 WPF 初始化的过程 USB 设备才准备好 因为在希沃的设备上主要是屏幕,用户不会有鼠标,如果出现了初始化的过程刚好就是 USB 准备好,那么这个程序将收不到任何事件在程序启动的时候,可以通过获得精度和点判断当前是否存在设备, 但是还可以收到系统的消息,可以通过本文的黑科技收到在 WPF 的框架,是从 PENIMC 里面获取的,如果通过自己创建一个模拟的设备,请看 WPF 模拟设备 也可以做到模拟一个。 在默认的 WPF 程序是收不到系统的消息,需要禁用实时才可以收到消息,在 Win7 和之后都可以从系统收到 WM_TOUCH 消息,通过这个消息可以解析当前的点和面积,通过这两个值可以用来模拟走原有的

    21620

    WPF 失效 试试重启

    在使用一些诡异的系统以及诡异的框的时候,也许会出现 WPF 程序失效,失效的本质原因是 Win32 层应用失效。 也许出现的问题是某个窗口设置 TopMost 然后插拔一些设备等,这些行为,如果设备太过诡异,也许就会让 Win32 窗口失效。 而我自己基于开源的 WPF 框架也定制了可以从线程都重启的强力版本,当然了,这个版本非开源的版本在使用本文的方法之前,请确定你对有足够的了解如果你对的了解很少,那么我推荐你先看以下博客WPF 屏应用需要了解的知识浅谈 Windows 桌面端架构演进WPF 客户端开发需要知道的失效问题对于 Win32 应用来说,如果应用的失效了,可以的解决方法是重新注册一次,或者重启应用 关于在 WPF 中的调用细节请看 WPF 到事件 和 WPF 通过 InputManager 模拟调度事件重启注册的步骤就是先反注册,然后再次注册。

    19540

    开关

    开关(Touch-Switch)想法有一天我妈让我按个开关,但是苦于没有地方按放啊。正好我在假期没有什么事,我脑袋一闪,开关就立项啦,怎么能这么简单,过程就是这么简单。

    18230

    win10 17025 bug

    在 win10 的 17025(直到 17134 也就是正式版 1803 也没有修复) 可以容易让 UWP 失效。 做法是创建一个窗口背景是透明的 wpf 程序,把他置顶,这时所有 uwp 程序就无法。 在正式版 17134 是所有的程序都失效,除了可以把转鼠标的程序如 VisualStudio 和 QQ 还能使用,如 Edge 和 Chrome 都无法使用。 步骤: 创建一个 wpf 程序 设置 wpf 的窗口最大化 设置 wpf 程序的背景为透明 启动 wpf 程序 这时就可以看到 Edge 等软件都无法在检查的时候可以使用ManipulationDemo ,可以看到在的时候没有 Pointer 消息。?

    28210

    Android反馈

    随着手指的滑动Button 的坐标发生了改变,当手指抬起时发 Button#onClick 事件。 View、子 View 谁来消费事件可以实时协商换成 NestedScrollView:可以滑动实现 NestedScrollingChild3 接口来实现自定义的嵌套滑动逻辑自定义单 View 的反馈 ,切换至抬起状态并发点击事件,并清除⼀切状态如果已经发长按,切换至抬起状态并清除一切状态当事件意外结束(ACTION_CANCEL): 切换至抬起状态,并清除一切状态View.dispatchTouchEvent 可以注册很多事件监听器,事件的调度顺序是onTouchListener> onTouchEvent>onLongClickListener> onClickListener自定义 ViewGroup 的反馈除了重写 比如接到按钮时,x,y是相对于该按钮左上点的相对位置。而rawx,rawy始终是相对于屏幕的位置。move的时候计算偏移量,并用scrollTo()或scrollBy()方法移动view。

    43360

    屏校正

    有些设备的屏不准,需要校正后才能正常使用。校正实际上就是配置设备在 Xorg 中的属性,具体属性名与驱动相关,后文描述。注意: 本文所有的操作都是在 deepin 上完成,包名不同的请自行查找。 下面开始介绍校正方法:准备安装需要用到的工具:xinput-calibrator : 屏校正工具xinput : 屏幕映射工具,多屏时使用----校正执行 xinput_calibrator --list 查看设备列表校正设备 xinput_calibrator -v --device device name or id 从上面的 list 中得到 此时会出现校正界面,按照提示点击,成功后程序会输出校正后的数据

    72030

    Java常量池

    实践说了这么多理论,接下来让我们一下真正的常量池。

    64810

    WPF 到事件

    本文从代码底层告诉大家,在屏幕之后是如何拿到点并且转换为事件在 WPF 界面框架核心就是交互和渲染,是交互的一部分。 在 WPF 是需要使用多个线程来做和渲染,是单独一个线程,这个线程就是只获得,而将转路由是在主线程。?在线程各个模块的关系请看下面? 从线程转换到主线程,然后从主线程封装为路由事件的模块请看下面?路由事件需要封装消息并且找到命中的元素?实际上看到这里,整个就告诉了大家过程,从大的方面已经可以知道过程,是如何转路由。 this.FireEvent(penContext, 参数); } } }通过这个方法可以知道的设备的 id 和的数据,的事件在拿到信息之后,会调用 FireEvent 转换事件,在拿到的信息包括了表示是什么事件 关于路由事件是如何到对应的元素,就需要大家去看下InputManager 是如何做的,在底层还是调用 MouseDevice 的 GlobalHitTest 方法下面来告诉大家的初始化初始化初始化需要从

    53220

    ft6236 屏驱动

    6)#define INT_GPIO_CHIP (2)#define INT_GPIO_OFFSET (5)这些管脚可以在这里《Hi3556AV100 Demo 单板使用指南.pdf》中看到,分别得出屏的中断和复位管脚 1.1 对屏进行复位static int ft_reset(hi_gpio_groupbit_info* pstRstInfo){ pstRstInfo->value = 1; hi_gpio_write_bit hi_gpio_write_bit(pstRstInfo); msleep(5); pstRstInfo->value = 1; hi_gpio_write_bit(pstRstInfo); return 0;}对屏进行复位 hi_i2c_read(0x0, buf, FT_MAX_BUFUSED_NUM);在这里,使用了hi_i2c_read,在文件i2cdev.c中,注意i2c_board_info的一般是8位从地址;一般来说,屏有固件的

    67220

    12.屏驱动

    屏子系统是通过input子系统来实现,对应设备节点 devinputeventn,熟悉套路后重点放在硬件程序的编写一、内核自带屏驱动S3c2410_ts的简单分析S3c2410_ts.c (driversinputtouchscreen ) 内核自带三星的屏驱动 (1)入口函数:*注册一个平台driver* static int __init s3c2410ts_init(void) { init_MUTEX(&gADClock) ts.dev);(4)touch_timer_fire 当事件发生的时候,上报事件*上报事件*input_report_abs--》input_event二、参考S3c2410_ts从零写S3C2440屏驱动屏使用流程 f.松开 具体屏的测量坐标的原理可以参考https:blog.csdn.netqq_16933601articledetails102749277分配input_dev结构体static struct 设置 * * 2.1 能产生哪类事件 * set_bit(EV_KEY, s3c_ts_dev->evbit); *屏绝对位移事件* set_bit(EV_ABS, s3c_ts_dev->evbit

    19120

    【STM32H7】第5章 ThreadX GUIX上手之电阻和电容

    第5章   ThreadX GUIX上手之电阻和电容本章教程为大家讲解LTDC应用之LCD电阻芯片STMPE811的4点和2点校准和电容芯片FT5X06、GT911和GT811的使用 5.1 初学者重要提示5.2 电阻和电容相关知识5.3 电阻屏硬件设计5.4 电容屏硬件设计5.5 电阻驱动设计5.6 电容驱动设计5.7 不同IC的识别5.8 LCD移植和使用 5.5.1  STMPE811的驱动实现电阻要比电容麻烦很多,因为电阻要做校准,还要做滤波,否则采集回来的值会抖动或者出现飞点,出现这种情况的主要原因是电阻板的线性度不够好。 而值滤波,扫描和校准是在bsp_touch.c文件里面实现。 > 0)) { } break; }}5.6   电容驱动设计电容相比电阻就要简单很多了,因为电容不需要做校准,而且用的是板和芯片一体的,也不需要做寄存器初始化配置,上电后直接读取参数即可

    15420

    【STM32F429】第5章 ThreadX GUIX上手之电阻和电容

    mod=viewthread&tid=98429第5章   ThreadX GUIX上手之电阻和电容本章教程为大家讲解LTDC应用之LCD电阻芯片STMPE811的4点和2点校准和电容芯片 5.1 初学者重要提示5.2 电阻和电容相关知识5.3 电阻屏硬件设计5.4 电容屏硬件设计5.5 电阻驱动设计5.6 电容驱动设计5.7 不同IC的识别5.8 LCD移植和使用 5.5.1  STMPE811的驱动实现电阻要比电容麻烦很多,因为电阻要做校准,还要做滤波,否则采集回来的值会抖动或者出现飞点,出现这种情况的主要原因是电阻板的线性度不够好。 而值滤波,扫描和校准是在bsp_ts_touch.c文件里面实现。 > 0)) { } break; }}5.6   电容驱动设计电容相比电阻就要简单很多了,因为电容不需要做校准,而且用的是板和芯片一体的,也不需要做寄存器初始化配置,上电后直接读取参数即可

    18830

    WPF 不禁用实时而收到 WM_Touch 消息方法

    在 WPF 中,默认通过 RealTimeStylus 实时进来,根据官方文档,这个机制将会和 WM_Touch 消息在同一个 HWND 是互斥的。 而在 WPF 中按照机制,在没有禁用实时下是不支持在窗口内收到 WM_Touch 消息。 因此想要在不禁用 WPF 实时的情况下,获取 WM_Touch 消息的一个方法是通过 WinForms 窗口来获取在不禁用 WPF 的 RealTimeStylus 实时下,依然可以通过 WinForms 收到 WM_Touch 消息。 WPF 的实时,请看 WPF 禁用实时更多请看 WPF 相关---- 如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

    23230

    Android事件实现笔画布

    任何View都有事件,经常在自定义控件时重写setOnTouchListener 本篇通过手绘图片来讲述这个知识点 本篇分为三个等级:一览图: 直线 曲线 笔 LEVEL1.png LEVEL2 .png LEVER3.png ----LEVEL1:基础实现 在Activity中通过一个全屏的Bitmap创建的Canvas绘制 为ImageView添加事件监听。 Color.WHITE); mCanvas.drawRect(0, 0, mPoint.x, mPoint.y, paint); } break; } return true;});----再升级版:LEVER3 笔根据绘制的速度动态改变画笔粗细 movePos.add(new PointF(event.getX(), event.getY())); break; } return true;});拓展1.其中可以改变求宽度的等式实现不同的笔:

    39030

    WPF 禁用实时

    微软想把 WPF 作为 win7 的好用的框架,所以微软做了很多特殊的兼容。 为了获得真实的消息,微软提供了 OnStylusDown, OnStylusUp, 和 OnStylusMove 事件。 本文告诉大家如何使用代码禁用 WPF 的消息,解决一些问题。 在 win7 还提供了多点 windows 消息 WM_TOUCH ,通过这两个 API 一个是 OnStylusDown 这些事件,另一个就是 WM_TOUCH ,用户可以拿到消息。 那么为什么需要禁用 WPF 的 RealTimeStylus ,因为在 WPF 平台会禁用 WM_TOUCH 消息。如果想要使用 WM_TOUCH ,在 WPF 需要禁用 WPF 的事件。 如果没有禁用,就无法拿到 WM_TOUCH 消息,这个方法可以让自己定义自己的

    58510

    屏工作原理

    支持多点,在玻璃表面用一层或者多层的ITO,制作X轴和Y轴电极矩阵,当手时,手指和ITO表面形成一个耦合电容,引起电流的微弱变动,通过扫描X轴和Y轴电极矩阵,检测点电容量的变化,计算出手指所在位置 在检测时,自电容屏依次分别检测横向与纵向电极阵列,根据前后电容的变化,分别确定横向坐标和纵向坐标,然后组合成平面的坐标。 自电容的扫描方式,相当于把屏上的点分别投影到X轴和Y轴方向,然后分别在X轴和Y轴方向计算出坐标,最后组合成点的坐标,我们可以形象的把这一个过程等效为图7-11。 当手指到电容屏时,影响了点附近两个电极之间的耦合,从而改变了这两个电极之间的电容量。 根据屏二维电容变化量数据(后电容值减小),可以计算出每一个点的坐标。因此,屏上即使有多个点,也能计算出每个点的真实坐标。?

    88130

    CreatorPrimer|事件冒泡

    从一次微信聊天开始----前两天正在愁公众号写点什么,打开微信看到uikiller用户「悦雨」遇到了一个问题: 地图拖动与子节点事件产生冲突,表现为:在子节点上拖动,但地图不动,怎么办? 事件捕获!继续对话:?至此问题终于解决,下来的公众号内容也有了着落?! 从源码中学习----当知道ScrollView中拖动,不会发子节点的事件,到此是不是就完了呢?有没想过,ScrollView它是怎么做的呢? _touchMoved=true再看1006行onTouchEnd函数,在这里判断了touchMoved这个变量,停止TOUCH_END事件的传播,这样子节点的事件就不会被发了993行onTouchMoved useCapture,用于是否捕获子节点事件,又称之为向下冒泡(默认是向上冒泡),下面以TOUC_END事件为例,简单说明一下:this.node.on( cc.Node.EventType.TOUCH_END, 事件类型

    28230

    界面的设计

    概念界面主要是指移动设备,区分于pc。界面按照屏幕大小主要是分为三大类,最小的用户最多的是手机,显示尺寸从3.5-7寸,再大一点是7-10寸,最大的为10-12寸。 区分规格我们能想到最明显的就是移动端规格更小比pc反馈与交互界面更容易学习,能够发人的兴趣使用习惯界面更多的是两种可能: 1 间歇时间使用:比如微信,收发邮件, 2大块时间休闲放松使用,比如看电影 可以灵活的进行新建窗口,可以方便的切换; 2 如果你需要并行的使用多款应用,那么pc其实更适合你,互不干扰,同步运行,甚至可以同步显示观察 3 如果你还是更多的针对于一个app,没有相关性的操作,那么设备就够用了大胆设想不妨设想一下 ,我们什么情况下会觉得界面不好用? * 某些情况下,操作不如鼠标更加灵活优化首次加载第二次加载

    19030

    相关产品

    • 消息队列 TDMQ

      消息队列 TDMQ

      消息队列 TDMQ 是基于 Apache 顶级开源项目Pulsar自研的金融级分布式消息中间件,是一款具备跨城高一致、高可靠、高并发的分布式消息队列,拥有原生Java 、 C++、Python、GO 多种API, 支持 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券