Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
8 / 8 / 2
Регистрация: 19.05.2014
Сообщений: 134
1

Нужны методы для перевода TColor в TGPColor и обратно

19.11.2015, 16:00. Показов 2241. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте! TColor -> TGPColor и TGPColor -> TColor нужны методы. TGPColor - это цвет в GDI+
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2015, 16:00
Ответы с готовыми решениями:

TColor->HEX->String->File и обратно
Никто не подскажет, как это сделать - вроде как пытался так: tmpSt:='AAE2B0'...

Калькулятор для перевода с двоичной в десятеричную СС и обратно
Здравствуйте, есть у кого-нибудь готовый калькулятор на C# Windows Forms для перевода чисел с...

Программа для перевода чисел из строки в 16-тиричную сс и обратно
Необходимо составить программу, которая читает строку, переводит ее в 16-тиричное число и потом...

Написать программу для перевода числа из 10 системы счисления в 8 и обратно
Я не знаю с чего начать программу. Нам сказали перевод целых отрицательных и дробных чисел.

4
3417 / 1604 / 236
Регистрация: 26.02.2009
Сообщений: 7,853
Записей в блоге: 5
19.11.2015, 16:19 2
Метод ColorRef не подходит?
Delphi
1
2
3
var c:TGPColor;
begin
  c.ColorRef := clBlack;
1
8 / 8 / 2
Регистрация: 19.05.2014
Сообщений: 134
19.11.2015, 16:33  [ТС] 3
Не, не компилирует
Тут посмотрел модуль GDIPAPI нашел там 2 метода для перевода туда и обратно

Delphi
1
2
function ARGBToColorRef(Color: ARGB): COLORREF;
function ColorRefToARGB(rgb: COLORREF): ARGB;
На другом форуме еще нашел вариант

Delphi
1
2
3
4
5
6
var
  GPCol : TGPColor;
  Col : TColor;
begin
  GPCol := MakeColor( 255,GetRValue(Col),GetGValue(Col),GetBValue(Col));
end;
0
3417 / 1604 / 236
Регистрация: 26.02.2009
Сообщений: 7,853
Записей в блоге: 5
19.11.2015, 16:54 4
hudrogen, заголовки я нашёл здесь
Если хотите использовать только ваши, то покажите как объявлено TGPColor

Добавлено через 3 минуты
Вот вырезки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class function TGPColor.MakeARGB(const A, R, G, B: Byte): ARGB;
begin
  Result := (ARGB(B) shl BlueShift) or
            (ARGB(G) shl GreenShift) or
            (ARGB(R) shl RedShift) or
            (ARGB(A) shl AlphaShift);
end;
 
procedure TGPColor.SetColorRef(const Value: TColorRef);
begin
  if (Value < 0) then
    FArgb := GetSysColor(Value and $000000FF)
  else
    FArgb := Value;
  FArgb := MakeARGB(255, Byte(FArgb), Byte(FArgb shr 8), Byte(FArgb shr 16));
end;
 
function TGPColor.GetColorRef: TColorRef;
begin
  Result := GetRed or (GetGreen shl 8) or (GetBlue shl 16);
end;
1
8 / 8 / 2
Регистрация: 19.05.2014
Сообщений: 134
20.11.2015, 11:50  [ТС] 5
В модуле GDIPAPI TGPColor объявлен как
Delphi
1
2
3
TGPColor = ARGB;
ARGB   = DWORD;
DWORD = Types.DWORD; {из модуля System}
в то же время закомментировано объявление класса
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TGPColor = class
  protected
     Argb: ARGB;
  public
    constructor Create; overload;
    constructor Create(r, g, b: Byte); overload;
    constructor Create(a, r, g, b: Byte); overload;
    constructor Create(Value: ARGB); overload;
    function GetAlpha: BYTE;
    function GetA: BYTE;
    function GetRed: BYTE;
    function GetR: BYTE;
    function GetGreen: Byte;
    function GetG: Byte;
    function GetBlue: Byte;
    function GetB: Byte;
    function GetValue: ARGB;
    procedure SetValue(Value: ARGB);
    procedure SetFromCOLORREF(rgb: COLORREF);
    function ToCOLORREF: COLORREF;
    function MakeARGB(a, r, g, b: Byte): ARGB;
end;
Получается в моем модуле GDIPAPI нельзя вызывать методы у TGPColor

Добавлено через 7 минут
+
лежат в модуле в виде отдельных функций
Delphi
1
2
3
4
5
6
7
8
9
  function ColorRefToARGB(rgb: COLORREF): ARGB;
  begin
    result := MakeColor(255, GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
  end;
 
  function ARGBToColorRef(Color: ARGB): COLORREF;
  begin
    result := RGB(GetRed(Color), GetGreen(Color), GetBlue(Color));
  end;
0
20.11.2015, 11:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2015, 11:50
Помогаю со студенческими работами здесь

Написать программу для перевода десятичного числа в шестнадцатеричную систему исчисления, и обратно.
Написать программу для перевода десятичного числа в шестнадцатеричную систему исчисления, и...

Нужны компоненты для конвертации .xls в .xml и обратно
Доброго форумчане! не могу найти компоненты для конвертации .xls в .xml и обратно. смотрел NPOI(так...

Создать отдельные методы для перевода температур (с чтением)
Здравствуйте. Нужно, чтобы было две отдельные функции, читающие температуру в цельсиях и выводящие...

Написать программу в паскале для перевода чисел из определённых интервалов в троичную систему счисления и обратно. 10 класс #1
Написать программу в паскале для перевода чисел из определённых интервалов в троичную систему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru