帆's profile帆的共享空间PhotosBlogListsMore Tools Help

帆 杨

Occupation
Location
Interests
菜鸟级的程序员

Windows Media Player

Lists
No list items have been added yet.

帆的共享空间

June 22

数码相机选购小谈

    如今的数码相机花样繁多、品种齐全,各大厂商也是打出各种各样的手段来炫耀自己的产品。其中很多技术我们作为普通消费者根本就不是很清楚,再加上JS的忽悠,如果花冤枉钱又买了一个烂相机,那心里一定很难受。(毕竟大多数人是工薪阶层)所以在此我就把自己总结的些许经验写到空间里面,帮助来我空间做客的人挑选称心如意的相机。
    首先说一下防抖技术。现在我们常听说的防抖有以下几种:自然防抖,光学防抖,电子防抖。那么这几种防抖究竟有何区别那种更好呢?这里我就简单的介绍一下。

    光学防抖

    光学防抖技术是在镜头上做文章。目前索尼、松下、佳能、尼康等厂商掌握这种技术。
    光学防抖技术的原理,是通过镜头内的陀螺仪侦测到微小的移动,然后将信号传至微处理器,处理器立即计算需要补偿的位移,然后通过补偿镜片组,根据镜头的抖动方向及位移量加以补偿,从而有效地克服因相机的振动产生的影像模糊。


    电子防抖
    
    目前使用的电子防抖是针对CCD上大约2/3 的面积进行图象分析,然后根据抖动,利用边缘的图象来进行补偿,大多数摄象机都采用这种方法,(也有例外的,不过,这种方法,首先是降低了CCD 的利用率,其次,对静态图象的帮助不大。


   自然防抖

    自然防抖就是提高iso感光度提高快门速度防抖。

    光学防抖最好,自然防抖会让燥点颗粒变大, 电子防抖就不说了,效果不好。所以总结出
来选择带有光学防抖的相机最理想。

    接下来再讲一下变焦技术。变焦技术主要就是两种光绪变焦和数字变焦,究竟哪个好呢,听我细细道来。

    光学变焦

    是依靠光学镜头结构来实现变焦,变焦方式与35mm相机差不多,就是通过摄像头的镜片移动来放大与缩小需要拍摄的景物,光学    变焦倍数越大,能拍摄的景物就越远。如今的数码相机的光学变焦倍数大多在2倍-5倍之间,也有一些码相机拥有10倍的光学变    焦效果。 家用摄录机的光学变焦倍数在10倍~22倍,能比较清楚的拍到70米外的东西。使用增倍镜能够增大摄录机的光学变焦倍数。

    数字(码)变焦

    即digital zoom,实际上是画面的电子放大,把原来ccd影像感应器上的一部份像素使用"插值"处理手段做放大,将ccd影像感应器上的像素用插值算法将画面放大到整个画面。通过数码变焦,拍摄的景物放大了,但它的清晰度会有一定程度的下降,有点像vcd或dvd中的局部放大功能,所以数码变焦并没有太大的实际意义。

    所以光学变焦才是真正意义上的变焦,而数码变焦仅仅是在CCD的影象上局部放大的结果,是蒙人的。因此别再相信所谓的20倍数码变焦了,呵呵。

    最后解释一个误区,也是最重要的一点:像素的问题。现在的JS动不动就拿相机说事,什么我的1200万像素他的只有800万像素,明显是我的好吗!呵呵,告诉你千万别这么想。高像素只是能保证同样清晰度的照片可以放的更大而已,并不是越高的像素就越清晰。真正的清晰度还得看镜头如何,所以千万别再相信像素越高的相机拍摄的就越清晰。

    好了,以上所述就是我对数码相机的一点点了解,希望能够帮助有缘人选购数码相机。
June 03

Drag && Drop

     由于工作事情繁多,日志封笔将近半年。小菜近日不忙所以日志今天起重新开放,先把困扰自己一段时间,网上又没有太多详细说明的问题写上来,希望能帮助和我一样还是菜鸟的程序员共同进步。好了,闲言少续开始正题。
 
关于拖放的一种处理方式——OLE拖放
 

OLE拖放原理

 

MFC为实现对象拖放提供了如下类:COleDataSourceCOleDataObjectCOleDropTargetCOleDropSource。下面分别介绍它们,然后通过一个实例讲述实现的具体步骤。

 

·  COleDataSource

 

启动一次拖放操作,保存拖放的数据,并向系统提供拖放对象的数据。类中重要的成员函数根据用途分为如下三种:

 

1 用于设定提供数据的方式和使用的数据格式。

 

提供数据的方式有两种,一种是即时方式,另一种是延迟方式。延迟方式不需要立即提供数据,当需要提供数据时,系统将调用对应的函数来获得数据,一般都是重载OnRenderData函数或其他虚函数,以响应数据请求。数据格式可以是CF_TEXT等常用的剪贴板格式,也可以是自己利用函数RegisterClipboardFormat函数注册的特定格式。

 

CacheData:提供指定格式的数据,格式由结构STGMEDIUM指定,即时方式;

 

CacheGlobalData:利用全局句柄HGLOBAL,为指定格式提供数据,即时方式,适用小数据量;

 

DelayRenderData:使用延迟方式按指定格式提供数据,当系统需要数据时,会调用函数OnRenderGlobalData/OnRenderData来取得数据;

 

DelayRenderFileData:使用延迟方式利用CFile为指定格式提供数据,当需要数据时,会调用函数OnRenderFileData来取得数据;

 

2 响应请求,提供数据

 

OnRenderFileData:为延迟方式提供CFile型数据。

 

OnRenderGlobalData:为延迟方式提供HGLOBAL数据。

 

OnRenerData:为延迟方式提供各种所支持的类型的数据。

 

3 实施拖放操作

 

DoDragDrop:开始实施拖放操作

 

 

 

·  COleDataObject

 

用于代表拖放的数据,它是作为COleDataSource类的成员,类中主要成员函数有:

 

BeginEnumFormat:为枚举数据格式作准备;

 

GetNextFormat:返回下一个数据格式;

 

IsDataAvailable 检查指定的数据格式是否可用;

 

GetData:按指定数据格式,获得数据;

 

GetFileData:按指定数据格式,获得CFile型数据;

 

GetGlobalData:按指定数据格式,获得HGLOBAL型数据;

 

 

 

·  COleDropTarget

 

用于在窗口和OLE库之间提供通讯机制。任何一个窗口,要想能够接收拖放,必须包含一个COleDropTarget对象,并注册之。其中的成员函数可分为两大类:

 

1 注册

 

Register:注册该对象,以便使窗口能够接收拖放对象

 

2 响应拖放过程中的动作(虚函数)

 

OnDragEnter:当鼠标首次进入窗口时被调用;

 

OnDragLeave:当鼠标移出窗口时被调用;

 

OnDragOver:当鼠标停留在窗口内时,被重复调用;

 

OnDrop 当鼠标在窗口内落下被调用;

 

虚函数onDragEnterOnDragOver的返回值具有重要的含义,一般为以下三种之一:

 

DROPEFFECT_MOVE:移动操作,允许对象落在此窗口,落下时要删除原来的对象;

 

DROPEFFECT_COPY:复制操作,允许对象落在此窗口,落下时不删除原来的对象;

 

DROPFFECT_NONE:不允许对象落在此窗口;

 

 

 

·  COleDropSource

 

COleDropSource允许数据被拖放到一个拖放目标,它负责对何时启动一个拖放操作进行决断,反馈拖放操作状态,以及判断拖放操作何时结束。这个类比较简单,用得也较少。它的成员函数只有三个:

 

GiveFeedback:用于改变拖放期间鼠标的光标,把拖放状态反馈给用户知晓;

 

OnBeginDrag:在拖放期间捕捉鼠标指针,当应用程序框架觉得可能要发生一个拖放操作时,它会调用该函数;

 

QueryContinueDrag:检测拖放操作是否还在继续中。

 

 

November 11

随笔

    好久没有更新日志了。自出差回来之后又是好长的一段时间有事情忙活。呵呵,现在居然总结出了一套工作的经验。工作一段突然发现很多事情都变了,人好像也变了许多。看到还在上学的学弟学妹们突然感觉又老了。一次偶然的机会认识了小啊猪,呵呵,没想到事情就是这样,通过小啊猪又认识了暴暴。这两个活宝级的女孩子都超有朝气,年轻的一代又展现出活力了。近来总看见网上有人说80后的人怎么怎么样的帖子,感觉超没劲。我觉得现在不错的,优秀的80后孩子多的事,起码小啊猪和暴暴就是一个例子,都是调皮,可爱,努力学习,同时还懂得尽孝道型的。我也算是80后了,虽然努力还不够,不过却也算是能自立了。70年后的人也许对薪水天天报怨同时说80后的就会要求高薪水不做事,那我在这回一句我们80后的,起码拿我做一个例子,我的薪水已经要比部分70后或者说60后人的工资标准高了。因为什么,因为光抱怨是不够的,肯自己努力去做才是最重要的。光说不练的人,永远只会抱怨社会,能适应社会的人绝对没有一帆风顺就混的很好的,想不落后就要努力。想活着而不拿救济金就要凭自己的双手。最后在这里祝福小啊猪和暴暴学业有成。呵呵,无题,随笔,闲侃!

热爱C++

    在最近的几年,JAVA编程语言确实对人们有很大的吸引力。那为什么我还热爱C++呢?首先一点,编译的程序永远比解释的程序运行速度快。例如,一个带有单元格公示和宏的高性能电子表格程序。现在想像一下JAVA虚拟机解释顺序翻译公式和红的代码不是特别好,对吧呵呵。使用即时编译就有必要每次加载程序时编译它。这种代码与从C++编译程序中优化输出是一样好的吗? 
    当然,执行速度是一个因素,操作系统的访问权是另一个因素。由于安全的原因。JAVA程序不能执行写盘操作和访问串行端口的任务。为了独立于平台,JAVA应用程序限制在操作系统特性的最低公共部分。C++具有更大的灵活性,因为它在任何时候都可以调用任何Win32函数。 
    JAVA是一个重要的语言,但是,它只是一种语言,不是一场变革。如果需要写Internet程序或者一个真正独立于平台的应用程序选择JAVA没错,但是如果需要效率和灵活性,就选择C++,信我的,没错。
September 11

出差

今天早上接到命令 准备出差  苦日子来了 不过也是一个锻炼人的机会 为了多学习一点东西 走了 唉 十一 估计回不了家了 可能要过年才能回家了 一年没有回家了 想家了 
 
Photo 1 of 1
More albums (1)
No list items have been added yet.