Sign in Join
Wiki copytemporary

Colors/fi

Deutsch · English · Español · Français · Suomi · Русский · 中文(中国) · 日本語

Värit

LCL:ssä TColor on vakiovärityyppi. Se on yhteensopiva Delphin TColorin kanssa. TColor voi edustaa joko RGB (3x8bit) arvoa tai järjestelmän väriä kuten clDefault. LCL voi toimia myös fpImage-järjestelmän kanssa, joka käyttää TFPColor-tyyppiä (joka on RGBA (4x16bit), ei RGB (3x8bit) kuten TColor).

Muunnokset TColor- ja RGB-arvojen välillä

käännösyksikkö (eli unit)Graphics tarjoaa seuraavat toiminnot:

pascal
function Blue(rgb: TColor): BYTE; // does not work on system color
function Green(rgb: TColor): BYTE; // does not work on system color
function Red(rgb: TColor): BYTE; // does not work on system color
function RGBToColor(R, G, B: Byte): TColor;
procedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte); // does not work on system color
function FPColorToTColor(const FPColor: TFPColor): TColor;
function TColorToFPColor(const c: TColor): TFPColor; // does not work on system color
function IsSysColor(AColor: TColorRef): Boolean;

TColor:n muunto merkkijonoksi ja päinvastoin

Seuraavat funktiot muuntaa merkkijonot kuten "25500", "$AA0088" tai "clNavy" TColoriksi:

Voit muuntaa TColorin arvon merkkijonoksi kuten "clNavy" tai "$AA0002":

Muunna TColor HTML-merkkijonoksi #rrggbb

Katso koodi kohdasta Convert color to/from HTML.

Taulukko vakioväreistä

Tarjotaan noin 20 ennalta määritettyä värivakiota, jotka ovat Delphi-yhteensopivia:

Värivakio Merkitys Heksadesimaalinen arvo käytettäväksi TColor:n kanssa Esimerkki
clBlack Black TColor($000000);
clMaroon Maroon TColor($000080);
clGreen Green TColor($008000);
clOlive Olive Green TColor($008080);
clNavy Navy Blue TColor($800000);
clPurple Purple TColor($800080);
clTeal Teal TColor($808000);
clGray Grey TColor($808080);
clSilver Silver TColor($C0C0C0);
clRed Red TColor($0000FF);
clLime Lime Green TColor($00FF00);
clYellow Yellow TColor($00FFFF);
clBlue Blue TColor($FF0000);
clFuchsia Fuchsia TColor($FF00FF);
clAqua Aqua TColor($FFFF00);
clLtGray Light Grey TColor($C0C0C0); clSilver alias
clDkGray Dark Grey TColor($808080); clGray alias
clWhite White TColor($FFFFFF);
clCream Cream TColor($F0FBFF); Lazarus 1.2 ja uudemmat
clMedGray Medium Grey TColor($A4A0A0); Lazarus 1.2 ja uudemmat
clMoneyGreen Mint Green TColor($C0DCC0); Lazarus 1.2 ja uudemmat
clSkyBlue Sky Blue TColor($F0CAA6); Lazarus 1.2 ja uudemmat

Järjestelmän värit

Esimerkki: clInfoBk, clInfoText

Järjestelmävärit ovat värivakioita, joilla on erityinen merkitys. Niiden todellinen arvo riippuu kontekstista ja teemasta. Ne eivät ole yksinkertaisia ​​värejä. Esimerkiksi clInfoBk:

pascal
Form1.Canvas.Brush.Color:=clInfoBk;  // // käytä vihje-ikkunan oletustaustaväriä
Form1.Canvas.FillRect(10,10,50,50);

Vihje-ikkunassa MS Windowsissa voi olla valkoinen tausta, joten yllä oleva piirtää valkoisella. Linuxissa / gtk2: ssa se voi olla metallinen tekstuuri, joten yllä oleva kuvioi kyseisellä tekstuurilla. Jos haluat laittaa tekstiä tähän, tarvitset vastaavan värin kuin clInfoText, muuten teksti voi olla käyttäjän kannalta lukukelvoton. Esimerkiksi:

pascal
Form1.Canvas.Brush.Color:=clInfoBk;  // käytä vihje-ikkunan oletustaustaväriä
Form1.Canvas.FillRect(10,10,50,50);
Form1.Canvas.Font.Color:=clInfoText;  // käytä vihjeikkunan oletustekstiväriä
Form1.Canvas.TextOut(10,10,'Hint');

Järjestelmän väriä clInfoBk ei voi käyttää Pen.Color:lla eikä Font.Color:lla. Jos näin tehdään, tulos on määrittelemätön ja riippuu widgetet- ja käyttäjäteemasta. Sama koskee myös väriä clInfoText: Sitä voidaan käyttää vain Font.Color:na. Sen käyttö Brush.Color:na ei ehkä toimi. Tällä hetkellä kaikki widgetit sallivat sen käytön myös Pen.Color:na.

Teeman muutokset

Kun käyttäjä vaihtaa teeman, järjestelmän värit muuttuvat. Väri clInfoBk saattaa muuttua valkoisesta siniseksi tai yhtenäisestä väristä tekstuuriksi. Tämä muutos tapahtuu, kun jaat uuden Brush Handle. Muista, että yksinkertainen tehtävä Brush.Color:=clInfoBk ei jaa Brush Handle. Brush Handle on jaettu käyttöön. Esimerkiksi:

pascal
Form1.Canvas.Brush.Color:=clInfoBk; // tämä ei luo uutta brush handle:a
Form1.Canvas.FillRect(10,10,50,50); // tämä luo brush handletällä hetkellä aktiivisen teeman brush vihjeikkunoita varten
...
...
// jos teema muuttuu niin tällä hetkellä Brush.Handle on edelleen varattu vanhojen arvojen kanssa
...
Form1.Canvas.FillRect(10,10,50,50); // tämä maalaa vanhan teeman brush:lla
Form1.Canvas.Brush.Color:=clInfoBk; // vanhan arvon liittäminen ei luo uutta brush handle:a
Form1.Canvas.FillRect(10,10,50,50); // tämä maalaa vanhan teeman brush:lla
Form1.Canvas.Brush.Color:=clRed;    // uuden värin määrittäminen, vanha Handle ei kelpaa
Form1.Canvas.Brush.Color:=clInfoBk; // uuden värin määrittäminen, vanha Handle ei kelpaa
Form1.Canvas.FillRect(10,10,50,50); // tämä luo uuden handlen ja maalaa uuden teeman avulla

Taulukko järjestelmän väreistä

Seuraavassa taulukossa luetellaan järjestelmän värit ja niiden merkitys. Niiden käyttäminen määritelmän soveltamisalan ulkopuolella on määrittelemätön ja tulos riippuu widgetetistä ja teemasta. Esimerkiksi clDefault on normaali taustaväri on käytetyn laitteen taustakuvio. Jos halutaan maalata painikkeita omilla mukautetuilla ohjaimilla, käytä yksikön Themes piirustusfunktioita.

Vakio

LCL määrittely

Delphi huomiot

Tuetut Widgetsets

clNone

Ilmaisee "ei piirretä". Sen käyttäminen kontrollin värinä on määrittelemätön. kontrolli ei tule läpinäkyväksi.

-

kaikki

clDefault

Käyttämällä sitä Brush-värinä niin käytetään tavallisen device context (DC, laitteen konteksti) normaalia taustaväriä

| -

kaikki

clScrollBar

Vierityspalkin (Scrollbar) runko

-

kaikki

clBackground

Työpöydän taustaväri

-

kaikki

clActiveCaption

Aktiivinen ikkunan otsikkorivi

-

ei mikään

clInactiveCaption

Ei-aktiivinen ikkunan otsikkorivi

-

ei mikään

clMenu

vakio valikkokohdan taustaväri

-

ei mikään

clWindow

Valitsemattoman tekstin normaali taustaväri. Määritetty kontrolleille, kuten TEdit, TComboBox, TMemo, TListBox, TTreeView.

-

ei mikään

clWindowFrame

Kehyksen väri ikkunan ympärillä

-

ei mikään

clMenuText

Fontin väri, jota käytetään yhdessä clMenu:n kanssa

-

ei mikään

clWindowText

Fontin väri, jota käytetään yhdessä clWindow:n kanssa

-

ei mikään

clCaptionText

Aktiivisen ikkunan otsikkorivin tekstin väri

-

ei mikään

clActiveBorder

?

-

ei mikään

clInactiveBorder

?

-

ei mikään

clAppWorkspace

MDIMain lomakkeen taustaväri

-

ei mikään

clHighlight

brush color kun elementti on valittu

-

ei mikään

clHighlightText

Font color kun teksti on valittu (käytetään clHighligh kanssa).

-

ei mikään

clBtnFace

Painikkeen taustaväri

-

ei mikään

clBtnShadow

Painikkeen varjostusväri (Bottom Right) käytetään 3D-efektin saavuttamiseen

-

ei mikään

clGrayText

font color kielletyillä elementeillä

-

ei mikään

clBtnText

Painikkeen font color käytetään clBtnFace:n kanssa

-

ei mikään

clInactiveCaptionText

Ei-aktiivinen ikkunan otsikkorivin tekstin väri

-

ei mikään

clBtnHighlight

BPainikkeen korostusväri (Top Left) käytetään 3D-efektin saavuttamiseen

-

ei mikään

cl3DDkShadow

?

-

ei mikään

cl3DLight

?

-

ei mikään

clInfoText

Vihjeiden fontin väri. Käytä yhdessä clInfoBk:n kanssa

-

kaikki

clInfoBk

Brush väri vihjeitä varten. Käytä yhdessä clInfoText:n kanssa

-

kaikki

clHotLight

?

-

ei mikään

clGradientActiveCaption

Toinen väri, jota käytetään aktiivisen ikkunan otsikkorivin gradientin tekemiseen

-

ei mikään

clGradientInactiveCaption

Toinen väri, jota käytetään ei-aktiivisen ikkunan otsikkorivin gradientin tekemiseen

-

ei mikään

clMenuHighlight

Valitun valikkokohdan taustaväri

-

ei mikään

clMenuBar

Valikkokohdan taustaväri

-

ei mikään

clForm

?

-

ei mikään

clColorDesktop

?

-

ei mikään

cl3DFace

?

-

ei mikään

cl3DShadow

?

-

ei mikään

cl3DHiLight

?

-

ei mikään

clBtnHiLight

Sama kuin clBtnHighlight

-

ei mikään

Järjestelmävärin rgb-arvojen löytäminen

Käytä funktiota ColorToRGB (in unit Graphics ) järjestelmän värin rgb-komponenttien määrittämiseksi. Tämä funktio havaitsee, onko väri värijärjestelmä, ja jos tämän arvo on true, näyttää palauttaa järjestelmän värin teeman värissä. Palautettu Longint voidaan ymmärtää tavalliseksi väriksi:

pascal
// Tässä esimerkissä on TColorBox lomakkeellaa ja käyttää tämän OnChange-käsittelijää 
procedure TForm1.ColorBox1Change(Sender: TObject);
var
  c: TColor;
begin
  c := ColorToRGB(ColorBox1.Selected);
  Caption := Format('R%d G%d B%d', [Red(c), Green(c), Blue(c)]);
end;

Piirrä teeman elementtejä mukautetuissa ohjauksissa (custom controls)

Käännösyksikkö (unit) Themes tarjoaa funktioita, joilla piirretään standardinhallinnan yksittäisiä elementtejä. Esimerkiksi piirtomerkin piirtäminen kuten TTreeView käyttää seuraavaa koodia:

pascal
uses Themes;

...

procedure TYourCustomControl.Paint;
const
  PlusMinusDetail: array[Boolean {Hot}, Boolean {Expanded}] of TThemedTreeview =
  (
    (ttGlyphClosed, ttGlyphOpened),
    (ttHotGlyphClosed, ttHotGlyphOpened)
  );
var
  Details: TThemedElementDetails;
  R: TRect;
  Collapse: boolean;
begin
  ...
  //draw a themed expand sign.
  Details := ThemeServices.GetElementDetails(PlusMinusDetail[False, Collapse]);
  R := Rect(ALeft, ATop, ARight + 1, ABottom + 1);
  ThemeServices.DrawElement(Canvas.Handle, Details, R, nil);
  ...
end;

From the Free Pascal wiki, page "Colors/fi", as it stood on 2020-07-24 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.