作者: 1366496409
查看: 2217|回复: 3
打印 上一主题 下一主题

[求助] c#自定义用户控件的重绘管理器,窗体拖出屏幕以后再拖回...

[复制链接]
跳转到指定楼层
楼主
查看: 2217|回复: 3
在自定义控件的时候有一个问题就是如果直接放在重绘的事件之中的话拖出屏幕外面在拖回来就会很卡(可能是我没有找对方法),我就想到了用一个管理器来控制这些控件的重绘让他们排序不会因为严重 重复的绘制而导致的卡顿,这个问题我在网上找过,但是没找到(可能是本人的上网姿势不正确导致的)已下方法仅供参考,如有错误或者更好的方法请大神指出。(还要补充一点:在本站上下载的例子都是很卡)
1首先创建一个winform工程
2新建一个用户自定义控件
3新建一个名字为重绘管理器的类(后面我又把这个类给封装起来了 在那个类库里边)
4在 管理器类里边创建静态的Graphics类  和list<data>链表
5创建管理的线程
6在自定义线程里边建立自定义事件用来把自身要绘制的事件发送到管理器  里边要传入自身和绘制的内容
7在管理器里边接受事件添加到list链表里边
8在管理器里边开启线程处理list链表的事务
9在自定义控件里边再创建一个用来发送给主线程绘制到主界面的事件
10把这些控件拖到窗口中




上面说的可能有点乱  其实原理就是:
一个链表先把重绘的信息存下(判断是否重复如果重复就不添加)来同时一个线程开始绘制图形(我这里是先把要绘制的内容绘制到image中在用主线程绘制到界面),绘制完成一个就移除一个,知道完成为止
下面是运行的程序
不多比比  很简单 但是我觉得还是很重要的  附上源码


GDI 重绘管理试验.zip

87.48 KB, 下载次数: 4, 下载积分: 金钱 -1

售价: 3 金钱  [记录]

c#自定义用户控件的重绘管理器,窗体拖出屏幕以后再拖回...

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播
回复 论坛版权

使用道具 举报

沙发
 楼主| 1366496409 发表于 2018-3-5 16:12:48 | 只看该作者
球大神指导
板凳
死胖子叔叔 发表于 2018-3-7 11:56:50 | 只看该作者
GDI 续命大成功!!
地板
s899000 发表于 2018-3-8 14:52:32 | 只看该作者
6666666666666666
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-4-20 21:09, Processed in 0.608716 second(s), 32 queries , Gzip On.

快速回复 返回顶部 返回列表