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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2012, 08:39   #1
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию Кривое отображение цвета под курсором.

Имею следующий код:
Вот процедура захвата кнопок:
Код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
foo: TPoint;
R,G,B : byte;
R2,G2,B2: byte;
begin
GetCursorPos(foo);
if key=#49 then
begin
x.Text:= IntToStr(foo.X);
y.Text:=IntToStr( foo.Y );
color:= DesktopColor(foo.x, foo.y);
  R := GetRValue(Color);
  G := GetGValue(Color);
  B := GetBValue(Color);
  colorr.Text:=inttostr(R)+'.'+inttostr(g)+'.'+inttostr(b);
  end;

if key=#50 then
begin
x2.Text:= IntToStr(foo.X);
y2.Text:=IntToStr( foo.Y);
color2:= DesktopColor(foo.x, foo.y);
  R2 := GetRValue(Color);
  G2 := GetGValue(Color);
  B2 := GetBValue(Color);
  colorr2.Text:=inttostr(R2)+'.'+inttostr(g2)+'.'+inttostr(b2);
end;
end;
А вот непосредственно вызываемая функция DesktopColor:

Код:
function TForm1.DesktopColor(const x, y: integer): TColor;
var
   c:TCanvas;
begin
   c:= TCanvas.Create;
   c.Handle:= GetWindowDC(GetDesktopWindow);
   result:= GetPixel(c.Handle, x, y);
   c.Free;
end;
Дак вот вся проблема заключается в том, что когда я нажимаю "1", то всё нормально, а вот когда я нажимаю "2", то координаты записываются правильно, а вот цвет по какой - то причине копируется из переменной color или я хз откуда, но он становится такой же как в color.

З.Ы. Я не совсем понимаю как работает функция DesktopColor, но кагда жмёшь на "1", то цвет формы меняется. Дак как сделать, что бы помимо нормально определения ещё и конва формы не игралась с цветом? Поясните как работает данная функция.
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Старый 23.03.2012, 09:55   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
то причине копируется из переменной color
именно из нее, вы на код то посмотрите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.03.2012, 12:19   #3
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
именно из нее, вы на код то посмотрите.
Не поверите, 2 часа искал в чём же ошибка, читал про канву, создавал другие переменные, но не заметил что я из РГБ раскладываю одну переменную.

А как сделать что бы цвет формы не менялся? и если не трудно, то объясните мне, что происходит в функции.
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строки под курсором!! daredevilok Общие вопросы C/C++ 1 11.11.2011 13:59
Определение объекта под курсором woodsnake Qt и кроссплатформенное программирование С/С++ 6 15.08.2011 13:34
Слово под курсором Vikenty Общие вопросы Delphi 4 12.04.2011 23:58
Кривое отображение. Вроде ясно, а исправить незнаю 3OH! HTML и CSS 3 02.07.2010 10:23
окно под курсором mrandrey Win Api 1 11.05.2007 18:30