三次元的苦逼码工

   今年3月18号刚从苏州辞职,马不停蹄的赶往了下一家公司,哪知道在那个公司才做了26天,由于各方面的原因,不得不辞职,最后辞职的时候还闹出了不小的问题。

   第一次来上海来就发生这事,让我对上海这个地方产生了一种痛恨感,但是生活还是要继续,工作还得重新找,当然苦逼的生活就开始了。

   为何说苦逼的生活开始了!因为招WPF的公司实在是少之又少(其实说到底还是自己没学好,玩心太大,没学好啊),大部分都是web开发。

   出来也两年了,虽说大部分都是接触Winform开发,到底是自己不够努力,没把业余的精力投入到其他技术的学习中,都投入到真三中去了。

   呵呵,没办法了咯。找工作难,面试更难。

  每次面试都折了,当然面试机会是少之又少,苦了面试公司和我啊!

  当然在面试WPF的时候我感觉大部分公司上机考试都会出一些关于多线程操作的,和控件拖放,放大,缩小,删除,固定范围内查找控件数量。

  那么下来就是这些个功能的实现代码咯。

  第一个是WPF,界面上的控件的动态添加,删除,放大,缩小,固定范围内查找控件数量(当然程序应该可能有点小BUG,各位可以自己更改重构一下的)。

  1.WPF如何点击界面添加控件?

      容器:Canvas(定位控件坐标)

      控件: 自定义控件或用户控件,其实我个人是比较偏向于用户控件的,方便,代码量小点,当然自定义控件可扩展性比较好点。

      如何添加:鼠标点击在Canvas里面获取鼠标的坐标,直接赋值给创建的控件对象,然后向Canvas里面添加控件。

 2.如何通过点击删除控件?

     如何删除:鼠标点击控件,触发控件点击事件,把控件从Canvas里面删除。

3.如何拖拽界面上的控件?

     其实刚开始做这个的时候,我先想到的是有没有一个Canvas支持里面的控件拖放,奈何技术有限,自己始终都没有弄出来,不得已,借鉴了别人的代码。

     代码来源于http://www.codeproject.com/Articles/15354/Dragging-Elements-in-a-Canvas

     当然你也可以定义一个可拖放的控件,具体代码也参照:http://www.codeproject.com/Articles/71792/WPF-Draggable-Label

     本人英语稀烂,还好认识里面的代码,这也是一种悲剧....只会看代码的孩纸...

     能够拖放Canvas里面的控件的Canvas:(1)它得有个对象存放拖放的控件,当然所有的WPF控件都继承自UIElement(可以查阅MSDN)

                     (2)其他对象:鼠标开始拖动的坐标,控件横向和纵向的偏移量,控件拖动后坐标的修改量,是否正在拖放控件

                     (3)附加属性:能否被拖拽,是否可以被移动,是否可以移动出指定父容器的范围。

                                                       (4)方法:查找控件(视觉树与逻辑树查找),重写方法,拖拽控件三个方法,鼠标按下,鼠标移动,鼠标松开。

4.如何缩放一个控件?

   说实话这个我还真做不出来。不得已我又借鉴了别人的思路,当然这个哥们的名字也很独特,园园,嘿嘿,还是博客园的孩纸哦。

   这是他的博客园地址:http://www.cnblogs.com/mgen/archive/2011/06/07/2074675.html

   大哥我借鉴了你的代码,谢谢分享了。

5.如何去在制定范围内查找控件的数量?

  通过鼠标的拖放,画出一个一个虚线方框,好吧,我承认我是个很差劲的码工,连这个我都懒得做了。

  直接度娘:C# 用鼠标画虚线框

  我又一次速度的把代码Copy到我的代码中去,改了关键部分,OK,项目运行,除部分BUG以外,其他的一切OK。

  实现方法:我之前用了一个字典存放所有在Canvas里面的控件(包含控件坐标,大小),最后计算鼠标虚线框的坐标,以及大小,遍历字典,算出个数。

                当然我对我这个做法一直都报有怀疑态度,不是很快,不算是最好。

--------------------------------------------------------------分割线-------------------------------------------------------------------------

第二个WPF东西我说的就有点简单了,惭愧啊,我对多线程不是很了解,请教了群里的童鞋,在这里我得感谢夏云童鞋。

其实第二个东西很少,就是在界面画一个圆,可以拖拽,然后在界面上添加两个Lable和一个Button,点击Button,生成两个随机数

然后显示在两个lable上面,比较两个随机数的大小,大小不一样,圆的颜色也就不一样,Lable的值没隔1秒刷新一次。

1.控件拖放,也是参照上面做的,有一个支持可以拖放的Canvas。

2.多线程控制界面更新,鼠标点击,开启两个线程,并设置为后台线程,每个线程都生成随机数,然后比较随机数大小,从而改变圆的颜色。

 

这是第一个链接地址(复制链接到地址栏即可下载)

https://files.cnblogs.com/xuliangjie/Drawing.rar

第二个链接地址

https://files.cnblogs.com/xuliangjie/WpfApplication.rar

 

-----------------------------------------------------------分割线-----------------------------------------------------------------------------------

最近面试都是Web开发的,苦逼啊,今天查资料中无意看到http://www.w3cfuns.com

在这个http://www.w3cfuns.com/topic-43.html?service=pact界面 

点击某一项,右边会出现很多内容,但是拖动右边的滚动条,左边的导航信息也会不见了,一瞬间感觉特不友好,哥你左边导航栏要时时刻刻都在我眼前,

哪怕开一会小差也不行。

以下是图片,各位园友应该有解决办法吧。

 

这个算不算是用户体验?

 唠叨了这么久了,该休息去了,各位,晚安。

 

 

   

posted @ 2013-04-25 23:22  想要飞  阅读(3294)  评论(26编辑  收藏  举报