彩色显示器点距的识别 1995-05-19 彩色显示器荧光屏上的色点有三种,它们分别是由能发出红、黄和蓝色(三原色)光的荧光粉组成的最小发光色点(单位)。由这三种色点分别发出不同强度红、黄和蓝就组成各种各样的色彩了。我们用放大镜仔细观察彩色显示器荧光屏,三种色点是很有规律地排列在一起,相邻的三个同一种色点之间构成正三角形,那么每个正三角形边长就是我们说的彩色显示器的点距。我们可以利用这个特征来识别彩色显示器的点距。下面介绍两种识别的方法: 一是用纸片剪出一个10×10mm的正方形孔,用透明胶带粘在屏幕中心,方孔的边要沿水平和垂直方向对齐。利用DOS中的ansi.com文件,将屏幕设置成黄色背景(红色、蓝色也可以),或利用其它软件中的红、黄、蓝中的任一色块。用放大镜在方孔内,沿垂直方向数出宽为10mm距离内一列色点的个数。利用公式:点距=10/色点的个数,就可求得彩显的点距。 二是用Turbo Pascal6.0或Turbo C++语言编写一个简单可执行的MONITOR.EXE程序。要求在黑底屏幕上水平画出5×30个黄色象素的线段,用放大镜数出这个线段内垂直的黄色点阵的列数。0.28、0.31、0.39彩显在这条线中表现出的黄色点阵的列数分别为34,43,47。那么对号入座,就可求得彩显的点距。 上述方法中,第一种方法简便。而第二种方法准确,在编程时加上一些文字、图形说明和声音效果,就成为一个很实用的小程序。笔者曾通过这两种方法,成功地识别多台彩色显示器的点距。附:Turbo Pascal程序,把它编译成MONITOR.EXE文件后,还必须把Turbo Pascal原程序中的EGAVGA.BGI和TRIP.CHR两文件与MONITOR.EXE放在同一目录中方可使用。 program Monitor; uses crt,Graph; var driver,mode:integer; begin driver:=Detect; Mode:=0; InitGraph(driver,mode,' '); ClearDevice; SetBKColor(1); SetColor(15); Line(0,0,639,0); Line(0,0,0,479); Line(0,479,639,479); Line(639,0,639,479); SetColor(14); SetLineStyle(0,3,2); OutTextXY(20,35,'HELLO'); SetColor(15); SetTextStyle(0,0,7); OutTextXY(30,80,'TEST COLOR'); OutTextXY(30,150,'MONITOR'); SetColor(12); SetTextStyle(1,0,1); OutTextXY(480,180,'Rersion 1.0'); SetColor(14); SetFillStyle(2,9); Bar(5,5,635,25); Bar(5,420,635,470); SetTextStyle(1,0,4); OutTextXY(80,425,'WELCOME USE THIS PROGRAM !'); SetColor(14); SetTextStyle(0,0,0); OutTextXY(380,10,'Liu Yung by WuHu 1995.5.30'); SetBKColor(1); SetColor(14); SetFillStyle(1,10); Bar(204,245,204,250); Bar(200,285,208,290); Bar(195,325,215,330); Bar(190,365,219,370); SetTextStyle(2,0,5); OutTextXY(235,215,' .39 .31 .28 '); SetColor(12); OutTextXY(230,240,' 2 3 3 '); OutTextXY(230,280,' 11 14 15 '); OutTextXY(230,320,' 24 30 33 '); OutTextXY(230,360,' 34 43 47 '); Repeat Delay(1000); Sound(800); Delay(200); NoSound; Until Keypressed; CloseGraph end.