Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: Delphi Tcolor

Janezki [21.04.2004 17:48:00]

#

Väriarvon voi asettaa funktiolla RGB(red,green,blue), mutta miten muuttujasta tyyppiä Tcolor voi palauttaa punaisen, vihreän tai/ja sinisen?

ezuli [21.04.2004 18:03:19]

#

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

zacura [21.04.2004 19:12:25]

#

Onnistuu myös valmiilla makroilla; GetRValue, GetGValue, GetBValue

Janezki [21.04.2004 19:48:24]

#

No niin kiitos tuosta ylemmästä en kyllä tajunnut mitään mutta ei se haittaa.

ezuli [21.04.2004 20:31:25]

#

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ä?

zacura [22.04.2004 10:16:18]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta