1 / 70
文档名称:

CMOS高频环形振荡器相位噪声的抑制技术.pdf

格式:pdf   页数:70
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CMOS高频环形振荡器相位噪声的抑制技术.pdf

上传人:coconut 2014/1/22 文件大小:0 KB

下载得到文件列表

CMOS高频环形振荡器相位噪声的抑制技术.pdf

文档介绍

文档介绍:《1》普通绘图就是直接在我们看得到的黑板上绘图
《2》双缓冲就是先在一个虚拟的黑板上画完,等用到的时候在把虚拟黑板上的图画复制到我们看得到的黑板上去;

利用双缓冲的优点就是能够使画面流畅,可以想象把画好的图直接粘贴到黑板上一定比在黑板上重新画要快的多。


——————————————————————开始
第一步:新建一个对话框工程
第二步:添加两个按钮:
一个命名为双缓冲绘图;
一个命名为普通绘图;
第三步:声明变量:
在CMyDlg类上右击添加变量如下:
CDC MyDC;
CBitmap bmp;
CBitmap *oldbmp;
首先声明一个与窗口DC兼容的内存DC(MyDC)和两个与内存相兼容的位图(bmp,*oldbmp)
第四步:在OnInitDialog()函数中添加以下代码:
//窗口DC
CDC *dc=GetDC();
//创建与窗口DC兼容的内存DC(MyDC)及位图(bmp,*oldbmp )
(dc);
(dc,200,200);
//把内存位图选进内存DC中用来保存在内存DC中绘制的图形
oldbmp=(&bmp);
//在内存DC中绘制一些小的圆形,数量要多(体现双缓存的优点)
for(int i=0;i<200;i+=6)
for(int j=0;j<200;j+=6)
(i-3,j-3,i+3,j+3);
第五步:右击CMyDlg类添加windows消息响应函数WM_CLOSE,添加以下代码:
(oldbmp);
();
();
//选进原来的位图,删除内存位图对象和内存DC
第六步:双击”双缓冲“按钮添加以下代码:
GetDC()->StretchBlt(0,0,200,200,&MyDC,0,0,200,200,OPY);
//把内存DC中的图形粘贴到窗口中;
第七步:双击“普通绘图”按钮添加以下代码:
for(int i=0;i<200;i+=6)
for(int j=0;j<200;j+=6)
GetDC()->Ellipse(i-3,j-3,i+3,j+3);
//按普通方式在窗口中绘制和在内存DC中一样数量和大小的位图;


第八步:运行程序............................
先单击普通绘图按钮,大家可以看到绘图的速度有点慢
再单击双缓冲绘图按钮,图像马上就显示出来了,

这就是双缓冲和普通绘图的区别了
______________________________________________________________________完成
双缓冲技术说起来也没有那么神秘,举个形象一点的例子吧,有两张纸A和B, 纸A代表屏幕,纸B代表后台缓冲,我们将所有的绘图操作都显示在纸B上,然后将纸B覆盖在纸A上,这样体现在纸A上的操作就是绘制了整张图,体现在纸B上的就是纷繁复杂的绘图操作。
技术上实现起来也很简单,VS2010甚至都已经给出了一个CMemDC的类,这个类就可以提供缓冲的作用。
如果在一个函数体内部想要实现双缓冲,那么过程清晰的展开就如同下列样子:
CDC MemDC; //首先定义一个显示设备对象,就像一只画笔。
CBitmap MemBitmap;//定义一个位图对象,这个就如同纸B ,但现在还是无限大的

//随后建立与屏幕显示兼容的内存显示设备, 就像给将要绘制的图像定一个基调,是黑白图、彩色图、灰度图?
(NULL);
//这时还不能绘图,因为没有地方画^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,这里就是将大纸裁剪成合适的大小
(pDC,nWidth,nHeight);

//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上,将画笔拿在手里,这个时候就能在纸B上开画了,否则空手怎么画?
CBitmap *pOldBit=(&MemBitmap);

//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
//这里的作用是因为Windows平台提供的最原始的纸都是黑色的,所