彩色显示器点距的识别

Author: Date: 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.