Автор |
Сообщение |
fayfa ®
Пол: Стаж: 2 года 6 месяца Сообщений: 14878
|
GuColor2Int - цвет пикселя под курсором, перевод цвета в строку или число и обратно
Год выпуска: 2014 Версия: 0.4 (FreeWare) Разработчик: GuSoft Разрядность: 32bit Язык интерфейса: Русский Таблэтка: Не требуется Системные требования: XpSp3 и выше Описание: Мне редко, но при разработке появляется необходимость раскрасить что либо в тона чего либо (имеющийся сайт, логотип, прога и тп). На глаз - долго, особенно если есть нестандартные цвета. Как-то недавно меня это достало. Основная функция проги - аналог пипетки в фотошопе. Кому будет интересна: веб-дизайнерам, программистам. Может другие, конешна, есть средства для таких целей, не заморачивался. Программа не требует установки. Что могёт: 1. 3 режима. Основной - показ координат и цвета пикселя под курсором - в числовом, текстовом (если виндовский "текстовый" стандарт из палитры, а там их много), 16-ричном и RGB - представлении 2. Обратный режим с выбором цвета из палитры 3. Обратный режим с вводом значений 4. Дополнительно - см. абзац "Обновления" Примечание: Код основного модуля прилагается. Используйте на свое усмотрение. Бесплатно. Доп. информация: 1. Чтобы скопировать результат - окно должно быть в фокусе (активно). Хотя окно проги имеет статус "поверх всех", все же оно должно быть выделено для копирования результатов. В этом случае - действует комбинация клавиш "Ctrl+U" - копирует результат в текстовый буфер обмена. 2. По 3 режиму. Примеры ввода для преобразования даны сверху в окошке при переключении на режим. Чтобы ввести цвет строкой - добавляйте "cl" - "clRed" например (ну да, все на англ.). Чтобы ввести 16-ричное значение - добавляйте $ перед ним - $12a6f. Числовое значение вводится обычно. Не верные значения или введенные за пределами диапазона - просто вызовут ошибку перевода или дадут 0 (черный цвет). Обновления:С версии 0.3 на 0.41. Добавлены форматы: Html, Hsv, Cmyk 2. Добавлен перевод строк из html (пример #FFE4C4) 3. Диалог вызова палитры заменен на выпадающий цветной список со стандартными цветами Windows, для вызова палитры теперь необходимо выбрать в этом списке элемент "Выбор..." (первый в списке, над черным) 4. Добавлена кнопка запуска Windows Лупы 5. Добавлен выбор из стандартных Html цветов, с указанием их значений Код основного модуля, версия 0.3Нацарапал "для себя", мог где то что-то накосячить. Найдете где - пишите в комменты. Unit GuC2IMainUnit; // GuColor2Int, 0.3, Delphi Rad Xe6, GuSoft (C), 2014 Interface Uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Clipbrd; Type TGuColor2IntMainForm = class(TForm) Timer1: TTimer; Panel1: TPanel; ColorDialog1: TColorDialog; Panel2: TPanel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Button1: TButton; Label1: TLabel; Panel3: TPanel; RadioButton3: TRadioButton; Edit1: TEdit; Button2: TButton; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure RadioButton3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Label2Click(Sender: TObject); private { Private declarations } Procedure Gu(Const Color:TColor); Function DskColor(Const x,y: NativeInt): TColor; public { Public declarations } end; Var GuColor2IntMainForm: TGuColor2IntMainForm; Implementation {$R *.dfm} Function TGuColor2IntMainForm.DskColor(Const x,y: NativeInt): TColor; Var c:TCanvas; begin c:=TCanvas.Create;c.Handle:=GetWindowDC(GetDesktopWindow);Result:=GetPixel(c.Handle,x,y);c.Free; end; procedure TGuColor2IntMainForm.Button1Click(Sender: TObject); begin if ColorDialog1.Execute then Gu(ColorDialog1.Color); end; procedure TGuColor2IntMainForm.RadioButton1Click(Sender: TObject); begin Timer1.Enabled:=true;Button1.Enabled:=False;Button2.Enabled:=False; end; procedure TGuColor2IntMainForm.RadioButton2Click(Sender: TObject); begin Timer1.Enabled:=False;Panel2.Caption:='Выбор. Выберите цвет из палитры';Button1.Enabled:=True; Panel1.Caption:='Ожидание выбора';Panel3.Color:=clBtnFace;panel3.Font.Color:=clBlack;Button2.Enabled:=False; end; procedure TGuColor2IntMainForm.RadioButton3Click(Sender: TObject); begin Timer1.Enabled:=False;Panel2.Caption:='Перевод. Примеры ввода: 12345, clRed, $AB123F';Button1.Enabled:=False;Button2.Enabled:=True; Panel1.Caption:='Ожидание ввода';Panel3.Color:=clBtnFace;Panel3.Font.Color:=clBlack; end; procedure TGuColor2IntMainForm.Button2Click(Sender: TObject); begin Try if Edit1.Text'' then Gu(StringToColor(Edit1.Text)); Except Panel3.Color:=clBtnFace;Panel1.Caption:='Ошибка перевода';Panel3.Font.Color:=clBlack; End; end; procedure TGuColor2IntMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Shift=[ssCtrl])and(Key=85){U} then Clipboard.AsText:=Panel2.Caption+' - '+Panel1.Caption; end; Procedure TGuColor2IntMainForm.Gu(Const Color:TColor); Var R,G,B:byte; S:String; begin R:=GetRValue(Color); G:=GetGValue(Color); B:=GetBValue(Color); If Not ColorToIdent(Color,s) then s:='' else s:=', Str: '+s; Panel1.Caption:='Int: '+IntToStr(Color)+', RGB: '+IntToStr(r)+':'+IntToStr(g)+':'+IntToStr(b)+', Hex: '+IntToHex(color,6)+s; Panel3.Color:=Color; Panel3.Font.Color:=Color Xor $FFFFFF; end; procedure TGuColor2IntMainForm.Timer1Timer(Sender: TObject); Var pos:TPoint; begin GetCursorPos(Pos); Gu(DskColor(pos.x, pos.y)); Panel2.Caption:='X: '+IntToStr(pos.x)+' ('+IntToStr(Screen.Width)+'), Y:'+IntToStr(pos.y)+' ('+IntToStr(Screen.Height)+')'; end; end. Буду рад, если кому пригодится. Проверка на VT: тут. Еще моя прога: тут.
|
|
Текущее время: 21-Ноя 18:20
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы не можете скачивать файлы
|
!ВНИМАНИЕ!
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете, чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами, и мы незамедлительно удалим ее. Файлы для обмена на трекере предоставлены пользователями сайта, и администрация не несет ответственности за их содержание. Просьба не заливать файлы, защищенные авторскими правами, а также файлы нелегального содержания!
|