12 2009 档案
摘要:2009年最后一天,分享一个不错的Silverlight开源自定义布局:CollectionFlow,原作者博客:http://mentas.spaces.live.com/Blog/cns!A8D899E9B03A6E15!784.entry上面还有源代码下载效果图:简单分析下原理:先将所有元素堆叠在布局横向中心点,然后找到当前显示的元素,将其作为分界点,将其它元素分成左右二堆,依次移动变化为了...
阅读全文
摘要:db4o虽然出来很久了,一直没怎么关注,今天随手试了下,对于小型应用还是不错的,至少省去了ORM的麻烦,一切皆对象,一切都变得那么自然。下载地址:http://www.db4o.com/DownloadNow.aspx优点:1.使用简单,整个引擎只要一个dll(Db4objects.Db4o.dll)即能搞定(个人觉得可完全取代access用于某些小型应用)2.数据库仅一个文件,方便部署3.支持事...
阅读全文
摘要:今天一位朋友问如何去掉DataTable里重复的记录(DataTable是别人返回过来的,不能再重新查询数据库,所以无法用sql中的select distinct xxx处理,只能在DataTable上动脑筋)思路:将DataTable转成IEnumerable,然后就能调用Distinct方法了by 菩提树下的杨过 http://yjmyzz.cnblogs.com/Code highlight...
阅读全文
摘要:Silverlight是基于时间线的,不象Flash是基于帧的,所以在Silverlight中,很少看到有文档专门介绍SL中的帧。但是我们从动画原理知道,动画只不过是一幅幅静态图片连续播放,利用人眼的视觉暂留形成的,因此任何动画从原理上讲,至少还是有每秒播放多少帧这个概念的。Silverlight的sdk文档中,有一段话:...maxFramerate 值可通过 Silverlight 插件对象的...
阅读全文
摘要:效果:其实原理很简单:1.先把最外层布局的Cursor设置为None,即隐藏系统默认的光标2.然后在最外层布局的鼠标移动(MouseMove)事件里,弄一个对象鼠标跟随即可源代码下载:http://files.cnblogs.com/yjmyzz/MyCursor.rar
阅读全文
摘要:先看效果:wrapPanel的效果在固定宽度的情况下看不出来,可查看在线演示地址:http://images.24city.com/jimmy/CustomPanel/这些布局,有些是从wpf上移植过来的,有些是自己写的,有些是网上搜集的,也许以后有用,先贴在这里介绍:FishEyePanel:从老外写的wpf版"鱼眼"效果移植过来的,Mac机上的工具条所说就是这种风格CellPanel:将布局等...
阅读全文
摘要:很多时候,blend在制作动画时,会自动为对象生成如下代码:[代码]如果想在cs代码中动态控制,就得先知道如何引用它们,在不借助x:Name的情况下,可以这么做:[代码]上面的代码,将生成一段动画:1秒钟内将矩形旋转135度
阅读全文
摘要:虽然Silverlight提供了几种基本的布局方式,比如Canvas,Grid,StackPanel,Border...,但有时候可能仍然会觉得不够用。这时候我们可以通过继承Panel,并重写MeasureOverride 和ArrangeOverride 方法,以实现自己的布局,事实上Canvas,Grid,StackPanel就是继承自Panel,并自行实现这二个方法实现的。布局过程中,有二个...
阅读全文
摘要:原文出处:国双科技-黄勇坚 Silverlight布局管理1. 布局管理介绍复杂的页面、软件界面都是由若干个界面部件组成的。每个部件占据着屏幕的一个部分。如何将这些部件有机地放在用户界面中,并且适合种尺寸大小的显示,成为界面设计者的一大难题。在界面的大小改变时,界面中的控件的位置和大小均会发生变化,如有的控件自动产生滚动条,有些控件之间的距离变小或者变大,有的控件的宽度和高度变小,有的控件大小不变...
阅读全文
摘要:学习SL/WPF,Dependency Properties(依赖属性)是一个全新(陌生)但又无法回避的概念。http://www.wpftutorial.net/DependencyProperties.html这里有一篇通俗易懂的相关文章,不过是E文的,E文不好的朋友,也可以参考下面的内容:1.为什么会出现依赖属性?先回想一下传统的属性(Property):通常我们读取或赋值一个属性时,实际上...
阅读全文
摘要:关键点:1.利用WebClient的DownloadProgressChanged事件更新下载进度2.下载完成后,分析Xap包的程序集Assembly信息3.利用Assembly反射还原对象并加载到当前页中。好处:1.可以先定义一个简单的加载动画,吸引用户注意,避免长时间的无聊等待,改善用户体验。2.实现按需加载,避免一次性下载过多内容。3.在一定程度上,增加了破解难度,有助于代码保密。Xaml ...
阅读全文
摘要:这仅仅只是一个思路的问题,silverlight没办法直接调用activex,但是silverlight可以跟js很好互动,而activeX又能跟js交互,so...把javascript当作桥梁,就能把silverlight与activeX联系起来了,即:js调用activex --> silverlight调用js
阅读全文
摘要:一直觉得SL中的wcf双工通讯方式有点鸡肋,如果是以http方式实现则效率太低,如果用SL4中的tcp方式实现,又跟socket太雷同,所以一直没去研究,不过这东西在对性能要求不高时(比如在网页上每5分钟更新一次天气预报/股票信息),实现起来还是蛮方便的.wcf双工通讯与传统的wcf相比,最大的区别就是:传统的wcf通常都是客户端去调服务,即客户端从服务端上“拉”信息,而双...
阅读全文
摘要:1.sl调用js比如我们在页面中定义一个js函数:<script type="text/javascript"> function fnTest(msg) { alert('fnTest:' + msg); } </script>sl中可以有二种调用方式:HtmlPage.Window.CreateInstance("fnTest", "CreateInstance");或...
阅读全文
摘要:先纠正一个观点,所谓自动安装并非强制安装,否则就变成流氓软件了,就算是silverlight,flash这类知名ActiveX,用户也有选择安装或是不安装的权利。较正统的解决办法是提示用户设置IE权限,然后在object里加入codebase='ocx的下载路径',然后制作数字证书,个人觉得这样比较复杂。我的办法:1.先用js检测activex是否可用代码 Code highlighting pr...
阅读全文
摘要:前一阵重温delphi的目的,就是想自己弄一个不依赖于.net框架的轻量级ActiveX来实现网页上的屏幕截图,今天算是小有所成了,效果图:测试文件打包下载:http://files.cnblogs.com/yjmyzz/CaptureTest.rar 在线测试地址:http://images.24city.com/jimmy/Capture/test.htmdelphi7开发的activeX源代...
阅读全文
只有注册用户登录后才能阅读该文。
摘要:任何一门语言,只要具备了"封装,继承,多态"这三项基本能力,不管其实现方式是直接或曲折、复杂或简洁,就可以称之为“面向对象”的语言。Delphi当年的迅速走红,是以其RAD快速开发吸引程序员的目光。这无疑是它最吸引人的优势,但同时也让人误以为delphi只是vb的高级版本,从而忽视了其面向对象的特性。其实Pacscal发展到Delphi,已经完全具备了面向对象的所有特点:允...
阅读全文
摘要:先谈谈工具问题:虽然d7很经典,但毕竟是02年出的开发工具了,对于习惯了vs2008被微软宠坏的.net程序员来讲,重返d7已经有点找不着感觉了(起码连最基本的代码折叠功能都没有),还好delphi开发工具并没有停步不前,新出来的delphi2010已经做得很不错了,建议delphi迷们与时俱进,换装备吧!玩转了delphi语法后,会发现其实oo的东西都是差不多的,何况c#和vs的创建者,据说是M...
阅读全文
摘要:第十一章 面向对象数据库基础第二节 数据对象的标识我们在关系数据库的设计和开发中,可能经常需要一些唯一的编号或标识,用来作为关键字,以区别每一个不同的人,每一张不同的单据,每一次不同的信息登记,等等。并且,我们也一直采用这些编号和标识,作为关系的连接字段。但是,要保证编号或标识是完全唯一的,却是一个不大不小的难题。下面我们将详细讨论这一问题,并希望能从另一个高度来理解这一问题。不过,我们首先来看看...
阅读全文
摘要:第十章 操作界面与操作逻辑我们在前面的曾经讨论过,用户界面与商业逻辑分离的好处。这样的分离可以让软件体系结构更加合理,结构易于理解,从而增强软件的灵活性和可维护性。正如我谈到过,我们讨论的目的是为了寻找将软件结构从混沌归于有序的实用方法,这是编写本书的主要目的之一。有序的东西易于理解,易于理解就便于掌握,掌握之后你将会发现其背后的哲理是那样的简单,从而升华到更高的境界去感受良好软件结构的协调美。本...
阅读全文
摘要:大师当年未完成,占位:)
阅读全文
摘要:大师当年未完成,占位:)
阅读全文
摘要:大师尚未完成,先占个位:)
阅读全文
摘要:大师还未完成,先占个位:)
阅读全文
摘要:第五章 包我们在日常生活中会用到各式各样的包,钱包、公文包、背包、书包……,包里面都装有经常要用的东西。一旦你那天要出门远行,带上该带的包就可以了。不用再考虑包里面具体的东西,尽管包里有的东西用得着而有的东西用不着。有了这些包,你就可以一身轻松地旅游。当然,打包打得不好或者包太多也会成为累赘。同样,在DELPHI中,你可以将常用的程序和数据放到包里,让这些包伴随你的程序发布...
阅读全文
摘要:第四章 接口前不久,有位搞软件的朋友给我出了个谜语。谜面是“相亲”,让我猜一软件术语。我大约想了一分钟,猜出谜底是“面向对象”。我觉得挺有趣,灵机一动想了一个谜语回敬他。谜面是“吻”,也让他猜一软件术语。一分钟之后,他风趣地说:“你在面向你美丽的对象时,当然忍不住要和她接口!”。我们同时哈哈大笑起来。谈...
阅读全文
摘要:第三章 多线程古时候,有一位刚刚出道的的骑士去到牧马场挑选一匹好马。在马房和牧马人聊天的时候,他大吹特吹自己驾驭马匹的高超技能。牧马人听完他的唠叨之后说:“请你将草原上吃草的那群马引进马房,我送你一匹最好的马!”。击掌为誓之后,骑士拿起长鞭骑马出去了。过了很久,那个骑士汗流满面灰溜溜地回来了。这时牧马人语重心长地对他说:“能驾驭一匹马不一定可以驾驭一群马,你在马...
阅读全文
摘要:第二章 DELPHI与WIN32时空我的老父亲看着地上玩玩具的小孙子,然后对我说:“这孩子和小时的你一样,喜欢把东西拆开,看过究竟才罢手”。想想我小时侯,经常将玩具车、小闹钟、音乐盒,等等,拆得一塌糊涂,常常被母亲训斥。我第一次理解计算机的基本原理,与我拆过的音乐盒有关。那是在念高中时的一本漫画书上,一位白胡子老头在讲解智能机的理论,一位留八字胡的叔叔在说计算机和音乐盒。他...
阅读全文
摘要:yjmyzz:李战大师的成名,并不是因为08年发表于园子里的那篇"悟透javascript",而是多年前的这篇处女作"悟透delphi",原出处已经找不到了,近日重温delphi研究如何开发原生win32中的activex控件时,无意又找到了这篇文章,想当年这篇文章在delphi编程群体中那是何等轰动,转载于此,以示纪念。(delphi的出现,秒杀了vb/pb,vs的出现又秒杀了delphi,但是...
阅读全文
摘要:这二天用c#开发ActiveX时,发现不管怎么弄,c#就是没办法生成ocx的纯正activeX控件,而且还要强迫用户安装巨大的.net framework(我只是想做一个简单截屏功能的activeX整合到silverlight聊天室中),于是想起了曾经用过一年的delphi,虽然时过境迁,现在早以是.net的天下,但是不可否认,delphi仍是win32原生程序最佳的开发工具之一。关于Delphi...
阅读全文
只有注册用户登录后才能阅读该文。
摘要:一.google项目托管相对比较容易http://code.google.com/先注册一个gmail邮箱,然后参考孟子的这篇文章http://blog.csdn.net/net_lover/archive/2009/04/08/4056916.aspx二.CodePlex开源项目--这个相对麻烦一点http://www.codeplex.com/得先注册一个帐号,然后创建项目,默认情况下项目是未...
阅读全文
摘要:1.为什么要用ActiveX?网页本身的功能是有限的,要想实现一些网页本身不支持的功能,比如:网页上的p2p视频播放,就得靠ActiveX这种古老的技术。2.c#能开发ActiveX吗?严格意义上讲,c#是不能生成纯正ocx控件的,我们在vs.net中新建项目时,也找不到专门的"ActiveX项目"新建项,最多也只就能新建"类库"得到一个dll而非ocx(因此我们也无法用传统的regsvr32来注...
阅读全文
摘要:这种应用场景其实很多,比如游戏中装备/魔法的选择菜单,这里借用了"深蓝色右手"的一张图再比如聊天室中的文本颜色设置虽然sl的ToolTipService.ToolTip属性可以设置任何对象,比如下面这样代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-...
阅读全文
摘要:今天在蓝色上看到一篇介绍WritableBitmapEx的贴子(是开源项目),项目地址:http://writeablebitmapex.codeplex.com/对SL的WritableBitmap做了一些扩展,可以方便的绘制一些基本几何形状,示例代码如下:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http...
阅读全文
摘要:ListBox是一个很有用的控件,其功能直逼Asp.Net中的Repeater,它能实现自定义数据项模板,纵向/横向排列Item(如果扩展一下实现自行折行,几乎就是SL版的Repeater了--实际上WrapPanel已经实现了,不过没有默认集成在SL3中).这里推荐一个老外的文章 http://blogs.msdn.com/delay/archive/2008/03/05/lb-sv-faq-e...
阅读全文
摘要:先来看xaml部分代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="h...
阅读全文
摘要:先上演示地址:http://images.24city.com/jimmy/DeepZoom/步骤:1.先启动PhotoShop,利用自动等分切片功能把图片等分成若干小图片,并导出,参考下图:2.启动Deep Zoom Composera.新建项目,并用Add Image...导入刚才等分好的小图片b.切换到compose面板,把小图片拖出来,并调整位置最终拼成完整的图片c.切换到Export面板...
阅读全文
摘要:先回忆一下aspx中的处理:在aspx中,可以直接在后台定义一个变量,然后前台就可以用<%=xxx%>来将其"绑定"html控件上,比如下面这样,实在是很方便:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;n...
阅读全文
摘要:以前一直用 var query = xxx.Select(c=>new {c.X,c.Y}); 来取表中的某二列字段,今天有个应用需要转成Dictionary<T,U>,很少这样使用,居然忘记了写法!回忆了半天终于写对了,贴在这里备个份,方便以后查找:[代码]//如果觉得上面的写法太复杂,还可以简化为//Dictionary<Guid, int> dic = lst....
阅读全文
摘要:大多数情况下,vs.net中我们可以用断点来解决调试问题,但有些时候也可能手动需要输出一些信息做为调试的参考,你是否有过调试完成以后,忘记删除某条输出语句的经历?那么下面的技巧可以解决这个问题:#define debugusing System;namespace debugDemo{ class Program { static void Main(string[] args) { #if de...
阅读全文
摘要:原以为int.MaxValue就是所有数组下标的最大值,编译也能通过,结果运行时发现报错:内存溢出。经过测试发现,原来在不同的系统/不同的配置上,这个值都不太一样,我笔记本经过测试byte[] b = new byte[int.MaxValue-56]; //windows 7 64位,4G内存换另一个机器,结果byte[] b = new byte[int.MaxValue/2]; //wind...
阅读全文
摘要:很多购物平台中(比如京东购物),浏览产品详情时都有这种效果,前几天看到有朋友问SL能不能实现,当然可以界面:1.左侧小图片(用一个矩形Fill一张图片即可)2.左侧半透明矩形3.右侧大图片(用一个Canvas设置Clip裁剪可视区域作为蒙板,图片放置在Canvas中即可)原理:获取左侧半透明矩形的相对位置,然后动态调整右侧大图的Canvas.Left与Canvas.Top需要知道以下技术点:1.C...
阅读全文
摘要:MTU即:最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。想了解详情的请自行摆渡:"MTU"快速确定当前网络环境MTU的办法:ping -f -l 字节数 要拼的IP比如: ping -f -l 1472 192.168.1.1如果能ping通,再把1472尝试调整得大一些,如果出现类似下面这样:C:\...
阅读全文
摘要:1.粘包目前sl中的socket只能用tcp/ip协议,而tcp/ip本质是一个"流"协议,也就是说数据无边界,发送的就是一连串的字节(没有数据包的概念),因此连续发送时有所谓的“粘包”现象,详细解释如下:比如你设置发送缓冲区的大小是512字节,如果(在相隔时间极短的情况下)连续发送次数据,第一次为500字节,第二次为100字节,实际上你在服务器端接收到的二次数据长度并不是...
阅读全文
摘要:原文:http://blog.csdn.net/flyasm/archive/2006/06/15/800666.aspx对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.自从我从事网络通讯编程工作以来(大概有三年的时间了),我一直在思索和改进封包和拆包的方法.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了.一.为什么基于TCP的...
阅读全文