Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2008, 13:16   #1
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию Получение 2х цветов и их сравнение

Здрасть, решил сюда написать ибо как я понял в радел дельфи писать рановато. Мне нужно получить 2 цвета вне формы, а потом их сравнить, в форме ето у меня получилось. Мне сказали учить вин апи. Если несложно тыкните носом в книжку или дайте ссылку на описание для балбесов как это использовать, поиск чтото неособо помог.
Zeraim вне форума Ответить с цитированием
Старый 26.04.2008, 14:06   #2
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Хелп нашол по Вин Апи, оказался у меня под носом, точнее Блог програмистов помог, но возникли вопросы:
Код:
 function GetPixel(DC: HDC; X, Y: Integer): Longint;

     Считывает цвет RGB в указанной точке.

     Паpаметpы:
     DC: Идентификатоp контекста устpойства.
     X, Y: Пpовеpяемая точка.

     Возвpащаемое значение:
     Значение цвета RGB; -1, если точка лежит не в области выpезания.
DC получаем из function GetWindowDC(Wnd: HWnd): HDC; так?
Если да, то моглибы написать пример, или еще чтонибудь в этом роде, который показалбы как это использовать. Мб тут все очевидно но мне чтото неочень =\\
Zeraim вне форума Ответить с цитированием
Старый 26.04.2008, 15:23   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if (Button = mbLeft) then SetCapture(Panel1.Handle);
end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if (Button = mbLeft) then ReleaseCapture();
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
    hScreenDC   : HDC;
    pt          : TPoint;
    clr         : COLORREF;
    ColorString : string;
begin
    hScreenDC := GetDC( 0 );

    pt.X := X; pt.Y := Y;
    windows.ClientToScreen(Panel1.Handle, pt);
    clr := GetPixel(hScreenDC, pt.X, pt.Y);

    if(clr = clWhite) then
        ColorString := 'White'
    else
        ColorString := format('R :%3.3d, G :%3.3d, B :%3.3d',
                        [GetRValue(clr), GetGValue(clr), GetBValue(clr)]);

    Panel1.Color := clr;
    Form1.Caption := format('Client: %d : %d, Screen: %d : %d, Color: %s',
                            [X, Y, pt.X, pt.Y, ColorString]);

    ReleaseDC( 0, hScreenDC);
end;

end.
B_N вне форума Ответить с цитированием
Старый 26.04.2008, 15:43   #4
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Пара вопросов:
if (Button = mbLeft) then SetCapture(Panel1.Handle); Непонял зачем это =\\
windows.ClientToScreen(Panel1.Handl e, pt); Выдает нам координаты мышки в виндовс и относительно формы?

Последний раз редактировалось Zeraim; 26.04.2008 в 16:38.
Zeraim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите определить макс кол цветов картинки 32x32 пикс объёмом 512 байт www_2008 Паскаль, Turbo Pascal, PascalABC.NET 4 13.05.2008 20:25
Сравнивание цветов Zeraim Общие вопросы Delphi 7 26.04.2008 12:49
Копирование текста ячейки 2 цветов WIC Microsoft Office Excel 3 24.09.2007 13:32
Перевод картинки в двухмерный массив RGB цветов Alar Общие вопросы Delphi 8 09.08.2007 14:24
Прозрачность для нескольких цветов в Image SERG1980 Общие вопросы Delphi 3 11.05.2007 19:53