Väriarvon voi asettaa funktiolla RGB(red,green,blue), mutta miten muuttujasta tyyppiä Tcolor voi palauttaa punaisen, vihreän tai/ja sinisen?
function RGB2BGR(R, G, B: Byte): COLORREF; overload; begin Result := (Integer(B) shl 16) + (Integer(G) shl 8) + R; end; function RGB2BGR(RGB: Integer): COLORREF; overload; var R, G, B: Integer; begin R := RGB div $10000; G := ((RGB mod $10000) div $100) shl 8; B := (RGB mod $100) shl 16; Result := B + G + R; end;
Tuo toimii. Luultavasti tajuat, joten en yritä selittää.
Onnistuu myös valmiilla makroilla; GetRValue, GetGValue, GetBValue
No niin kiitos tuosta ylemmästä en kyllä tajunnut mitään mutta ei se haittaa.
Tärkein osa on:
R := RGB div $10000; G := ((RGB mod $10000) div $100) shl 8; B := (RGB mod $100) shl 16;
eli
PunaisenArvo := SinunVäri $10000; VihreänArvo := ((SinunVäri mod $10000) div $100) shl 8; SinisenArvo := (SinunVäri mod $100) shl 16;
En kyllä itsekään tiedä miksi nuo kaavat ovat tuollaiset,
mutta riittää kun kopio ne ja antaa olla.
Miksei noita macroja kerrota helpissä?
ezuli kirjoitti:
Miksei noita macroja kerrota helpissä?
Delphissä on vähän puutteellinen indexointi ja nuo makrot kyllä löytyvät Win 32 SDK:n helpeistä (tulee delphin mukana).
Aihe on jo aika vanha, joten et voi enää vastata siihen.