GuColor2Int Ver. 0.4, x86 [2014, RUS][Авторская]

Ответить на тему
 
Автор Сообщение

fayfa ®

flag

Пол: Мужской

Стаж: 2 года 6 месяца

Сообщений: 14878

Статистика

Создавать темы 10-Ноя-2022 13:31 | #1 · Автор

[Цитировать]

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.4

1. Добавлены форматы: 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



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы