摘要: 代码如下,将一张图绘制到窗口上,结果只有一个全黑的矩形:1 Bitmap bmp = (Bitmap)Bitmap.FromFile(@"C:\Users\Ken\Desktop\Load2.bmp"); 2 Graphics grDest = Graphics.FromHwnd(pictureBox1.Handle); 3 Graphics grSrc = Graphics.FromImage(bmp); 4 IntPtr hdcDest = grDest.GetHdc(); 5 IntPtr hdcSrc = grSrc.GetHdc(); 6 BitBlt(hdcDe 阅读全文
posted @ 2011-07-18 01:06 Scan. 阅读(4043) 评论(1) 推荐(0) 编辑
摘要: 我看的书是《Effective C#中文版——改善C#程序的50种方法》,Bill Wagner著,李建忠译。书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值。(平心而论,和Effective C++有差距,毕竟该书成书时对C#的研究不过几年。) 下面是对这本书条款内容的一些归纳和个人理解,由于我比较熟悉C++,因此也会有也一些C++的对比。第一章 C#语言元素条款1:使用属性代替可访问的数据成员1. 属性具有数据成员的访问语法,这是最易于使用的语法。2. 属性事实上是方法,因而支持多态,且利于日后进行扩展,如多线程同步访问等。3. .Net中的库功能,很多是针对属. 阅读全文
posted @ 2011-07-07 12:55 Scan. 阅读(3153) 评论(8) 推荐(3) 编辑
摘要: 这是List<T>.Sort的委托版本实现:1 class List<T>2 {3 ...4 5 public void Sort(Comparison<T> comparison)6 {7 if (comparison == null)8 {9 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);10 }11 if (this._size > 0)12 {13 IComparer<T> comparer = new Array.FunctorComparer< 阅读全文
posted @ 2011-07-04 18:05 Scan. 阅读(2796) 评论(2) 推荐(0) 编辑
摘要: 我还没有研读《CLR Via C#》之类的专著,只是心里有了疑问,然后就去个人探究,下文多为猜想。更希望了解内幕的朋友告知C#后台真相。 我自个儿琢磨出来的结论:形如 1 // 原始声明 2 struct People : IFormattable 3 { 4 public string ToString(string format, IFormatProvider formatProvider) 5 { 6 return ToString(); 7 } 8 public override string ToString() { return Name; } 9 10 public stri. 阅读全文
posted @ 2011-06-29 00:34 Scan. 阅读(4316) 评论(5) 推荐(2) 编辑
摘要: 我想要用System.Windows.Forms.TreeView来显示文件系统树,就像资源管理器那样。文件和文件夹图标是通过SHGetFileInfo函数取得的,一切很顺利,但是显示的图标外围有一圈黑边,我确实已经将ImageList.TransparentColor属性设置成了Color.Black了,看起来似乎这个透明色设置没有生效。解决方案:ImageList.ColorDepth = ColorDepth.Depth32Bit 阅读全文
posted @ 2011-05-30 01:57 Scan. 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 在C#中,使用 Delegated = Object.Method; 的方式创建一个委托,在实现上,这个委托对象内部持有了源对象的一个强引用(System.Object),如果使用者恰好有特殊需求,比如“要求源对象一旦在其他任何地方都不再使用,应该被及时回收。”,那么,一旦委托对象的生命期足够长,由于委托内部的强引用存在,源对象的销毁将被延迟,与使用者预期不符,可能会导致Bug等问题。 比如,这里有一个简单的测试对象:1 class ClassForDeclTest2 {3 public string GetString() { return "call GetString" 阅读全文
posted @ 2011-05-27 14:40 Scan. 阅读(3298) 评论(8) 推荐(9) 编辑
摘要: 参见文章http://www.cnblogs.com/cbscan/articles/2047269.html总结,在满足二进制兼容这个前提下导出基于对象的库接口:方式使用便捷性接口声明可读性性能C函数差好好C++纯虚函数好差好C++非虚函数,PIML实现好好差其实三种方案都是通过查表取得函数的,1、3查引入表,2查虚函数表,只是默认情况下,一个声明在接口函数集中间的新函数,不会改变旧引入表(这个行为是从那篇文章中推断出来的)却一定会改变虚表,所以方案1、3大可以将新函数随便放置不会破坏二进制兼容性。假如特殊的编译器指令可以排布虚函数在虚表中的位置,并且也有特殊指令来强制指定函数在引入表中的位 阅读全文
posted @ 2011-05-16 01:56 Scan. 阅读(2621) 评论(0) 推荐(1) 编辑
摘要: lua版本5.1函数"function (...)"的函数体中, 如果使用了"..."表达式, 语言后台就不会帮你打包"arg"对象了; 所以不能混用这两者.即, 以下两种方式只能2选1:function printArgLength(...)print(select("#", ...))-- print(#arg)end 阅读全文
posted @ 2011-04-20 13:00 Scan. 阅读(10999) 评论(0) 推荐(0) 编辑
摘要: c++的std::sort用的排序算法http://en.wikipedia.org/wiki/IntrosortIntrosort or introspective sort is a sorting algorithm designed by David Musser in 1997. It begins with quicksort and switches to heapsort when the recursion depth exceeds a level based on (the logarithm of) the number of elements being sorted 阅读全文
posted @ 2011-03-16 09:58 Scan. 阅读(1012) 评论(0) 推荐(0) 编辑