摘要:
用 CreateGraphics 方法创建 Graphics 对象Graphics g = this.CreateGraphics(); 画线,下例是一个棋盘: //x+=15每一个格子的宽15,y+=15每一个格子的高15 for (int x = 10, y = 10, count = 0; count < 15; x += 15, y += 15, count++) { //220=15*14+10(格子宽*14+期盼最左的线起始x坐标) g.D... 阅读全文
摘要:
Control.MousePosition 属性,获取鼠标光标的位置(以屏幕坐标表示)Control.PointToClient(Point p)方法,可将指定屏幕点的位置计算成工作区坐标例如PointToClient(MousePosition)将鼠标相对于屏幕的坐标换算为相对于工作区坐标Control.PointToScreen(Point p)方法,可将指定工作区的位置计算成屏幕坐标 阅读全文
摘要:
原文地址:http://www.cnblogs.com/zhangkai2237/archive/2013/03/17/2964528.html类型一直是C#中最基本的问题,关于值类型和引用类型,我想每个C#程序员都知道“值类型保存在栈上,引用类型保存在堆上”。但是仅仅知道到这里是完全不够的,我们需要理解C#中的类型,了解为什么要有值类型和引用类型以及他们的特征。一、值类型和引用类型的概念值类型的实例是在线程栈上分配的(不能免俗的提起这句话),值类型的变量并没有一个指向实例的指针,而是变量中已经包含了实例本身的字段。相应的引用类型的实例时在托管堆中分配的,返回的是一个指向实例对象的内存地址。比 阅读全文
摘要:
原文链接:http://www.cnblogs.com/zhangkai2237/archive/2013/03/21/2974570.html上一节我们讨论的是值类型和引用类型, 我们知道值类型是一种轻量级的数据结构, 对于一些简单的类型定义为值类型会减少定义成引用类型造成的系统开销以及GC的压力。但是值类型有一个缺点,就是缺少对象指针,我们不能用一个新的变量来引用栈上的值类型(Note:即未装箱的值类型)。也就是说很多引用类型为参数的方法不能传入值类型。为了解决这个问题,CLR提供了装箱和拆箱的机制。一、装箱和拆箱的概念和原理在面试中, 面试官提到装箱和拆箱的问题时,可能很多人想到的第一句 阅读全文