天天小知识
C#小知识(4)
8.GDI+的初级使用技巧
如果你现在还在使用OnPaint()里面的e.Graphics.DrawXXX进行所有的绘图的话,那速度一定会让你吃不消的。怎么办?呵呵,试试这一招:
Bitmap buffer=new Bitmap(100,100);
System.Drawing.Graphics g=System.Drawing.Graphics.FromImage(buffer);
g.DrawXXX;
e.Graphics.DrawImage(buffer);
怎么样?速度是不是上去了?画面也是不是平滑一些了?
原理很简单,直接操作内存要比一个pixel一个pixel画要快。而且把图像先在内存中操作好然后统一渲染,不会给人画面迟钝的感觉。
9.使用unsafe关键字
C#支持使用非托管的指针,语法就如同C++里一样。譬如要设计一个链表:
unsafe class ListNode
{
protected ListNode* Next;
...
}
当然,unsafe可以加在任何类型、函数的声明前面作修饰,甚至还可以这样嵌在代码块里:
public int f(double b)
{
int a = Convert.ToInt32(b);
unsafe
{
int *p = &a;
(*p)++;
}
return a;
}
当然,带unsafe的代码能正确编译必须要打开/unsafe选项(或者在生成选项里打开不安全代码)