在《Windows 程序设计》一书中,有相应的例子。你可以找一下源程序。如果你能等的话,我找一找,给你发过去。

解决方案 »

  1.   

    unit Ugetcor;interfaceuses
      SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
      Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;type
      Tgetcol = class(TForm)
        Panel1: TPanel;
        Label1: TLabel;
        Label2: TLabel;
        procedure FormClick(Sender: TObject);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure Panel1Click(Sender: TObject);
        procedure FormDblClick(Sender: TObject);
        procedure FormResize(Sender: TObject);
      private
        tx,ty : integer;
        procedure WMEraseBkng(var MSg:TWMEraseBkgnd);message WM_ERASEBKGND;
      public
        { Public declarations }
      end;var
      getcol: Tgetcol;
    implementation{$R *.DFM}
    const
      Digits : array[0..$F] of Char = '0123456789ABCDEF';function HexB(B : Byte) : string;
      {-Return hex string for byte}
    begin
      HexB[0] := #2;
      HexB[1] := Digits[B shr 4];
      HexB[2] := Digits[B and $F];
    end;procedure Tgetcol.WMEraseBkng(var MSg:TWMEraseBkgnd);
    begin
         Msg.Result:=1;
    end;procedure Tgetcol.FormClick(Sender: TObject);
    var t : tcolor;
    r,g,b : byte;
    begin
    t := canvas.pixels[tx,ty];
    r := getRvalue(t);
    g := getGvalue(t);
    B := getBvalue(t);
    LABEL2.COLOR := T;
    LABEL1.CAPTION := '$00' + HEXB(R) + HEXB(G) + HEXB(B);
    end;procedure Tgetcol.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    tx := x;
    ty := y;
    end;procedure Tgetcol.Panel1Click(Sender: TObject);
    begin
    CLOSE;
    end;procedure Tgetcol.FormDblClick(Sender: TObject);
    begin
    close;
    end;procedure Tgetcol.FormResize(Sender: TObject);
    begin
    panel1.top := height - panel1.height -1;
    panel1.left := width - panel1.width -1;
    panel1.visible := true;
    end;end.
      

  2.   

    GetColor.dpr :
    ==========================
    program Getcolor;uses
      Forms,
      Ugetcor in 'UGETCOR.PAS' {getcol};{$R *.RES}begin
      Application.CreateForm(Tgetcol, getcol);
      Application.Run;
    end.
      

  3.   

    UGETCOR.dfm:
    ==========================
    object getcol: Tgetcol
      Left = 376
      Top = 191
      BorderStyle = bsNone
      Caption = 'getcol'
      ClientHeight = 128
      ClientWidth = 274
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -14
      Font.Name = 'System'
      Font.Style = []
      OldCreateOrder = True
      WindowState = wsMaximized
      OnClick = FormClick
      OnDblClick = FormDblClick
      OnMouseMove = FormMouseMove
      OnResize = FormResize
      PixelsPerInch = 96
      TextHeight = 16
      object Panel1: TPanel
        Left = 96
        Top = 9
        Width = 146
        Height = 19
        TabOrder = 0
        Visible = False
        OnClick = Panel1Click
        object Label1: TLabel
          Left = 34
          Top = 2
          Width = 108
          Height = 15
          Alignment = taCenter
          AutoSize = False
          Color = 16777088
          ParentColor = False
        end
        object Label2: TLabel
          Left = 11
          Top = 2
          Width = 26
          Height = 16
          AutoSize = False
          Color = clBtnFace
          ParentColor = False
        end
      end
    end