Tilbake til startsida IKT i praksis - Pascal

Meny
 
 
 
 
 
Fargar
 
 
 
 
 

Fargar i Pascal

 

Mange funksjonar og element i Pascal arbeider med fargar. I denne avdelinga har eg tatt med ein del rutiner som har med farge å gjere. Dei eg på ein eller annan måte har hatt bruk for, er nærare omtalte. Eg har også lista opp «standard» fargenamn brukte i Pascal og Lazarus.

Fargenotasjon

Dei fleste som har arbeidd ei stund med data og fargar kjenner RGB-modellen der alle fargane blir definerte med verdiar frå 0 til 255 for kvar av grunnfargane raudt, grønt og blått. Når verdiane blir skrivne som hexkode, er det lett å sjå kor mykje ein bestemt farge inneheld av grunnfargane. Fargen $FF00FF er bygd opp av $FF (dvs. 255) deler raudt, $00 deler grønt og $FF deler blått. Fargen i dette eksemplet er den som blir kalla magentaraudt eller oftast bare magenta. Kjenner du ikkje til hexnotering, leit på Internett etter nærare omtalar.

RGB og BGR

I Lazarus blir det også brukt ein fargemodell definerte som BGR, altså omvendt av det vanlege. Skulle fargen $FF0000 vise seg å bli blått, er det altså fordi Lazarus har bytt om på raudt og blått. Eg kasta bort ein god del tid på fargefunksjonar som tilsynelatande ikkje virka heilt til eg oppdaga samanhengen.

Omforming mellom desimal- og hex-kode:

IntToHex(heiltal,siffer) Denne funksjonen les inn ein heiltalsverdi og returnerer denne som hexkode med ei bestemt mengde siffer.
var
  hexkode: String;
  desimal, siffer: Integer;
begin
  desimal := 15780518;
  siffer := 6;
  hexkode := IntToHex(desimal,siffer);
end;
Eg valde siffer = 6 for å få utskrifta slik det er normalt i fargekoder med to siffer for kvar farge. Variabelen hexkode vil ved returen innehalde «F0CAA6», som er desimaltalet 15 780 518 i hex-format.
Definisjon: (unit sysutils)
function IntToHex(Value: Integer [eller Int64 eller QWord]; Digits: Integer): String;

Hex2Dec(hexkode)

Denne funksjonen les inn eit tal i hexkode og returnerer den tilsvarande verdien skriven i decimalkode.
var
  hexkode: String;
  desimal: Integer;
begin
  desimal := Hex2Dec('C0C0C0');
end;
Legg merke til at det i dette tilfellet ikkje er nødvendig å innleie strengen med «$», men funksjonen godtar strengen om du gjer det.
Definisjon: (unit strutils)
function Hex2Dec(const S: String): LongInt;


Send melding

© Innhald og design:  Kolbjørn StuestølStuestøl heimesideSist endra 11. april 2013