Megosztás a következőn keresztül:


CDrawingManager osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Az CDrawingManager osztály összetett rajzi algoritmusokat implementál.

Szemantika

class CDrawingManager : public CObject

Tagok

Nyilvános konstruktorok

Név Description
CDrawingManager::CDrawingManager Egy CDrawingManager objektumot hoz létre.
CDrawingManager::~CDrawingManager Destruktor.

Nyilvános metódusok

Név Description
CDrawingManager::CreateBitmap_32 Létrehoz egy 32 bites eszközfüggetlen bitképet (DIB), amelybe az alkalmazások közvetlenül írhatnak.
CDrawingManager::D rawAlpha Áttetsző vagy félig transzparens képpontokkal rendelkező bitképeket jelenít meg.
CDrawingManager::D rawRotated A forrás tartományvezérlő tartalmának elforgatása a megadott téglalapon belül +/- 90 fokkal
CDrawingManager::D rawEllipse Három pontot rajzol a megadott kitöltési és szegélyszínekkel.
CDrawingManager::D rawGradientRing Rajzol egy gyűrűt, és színátmenettel tölti ki.
CDrawingManager::D rawLine, CDrawingManager::D rawLineA Rajzol egy vonalat.
CDrawingManager::D rawRect Téglalapot rajzol a megadott kitöltési és szegélyszínekkel.
CDrawingManager::D rawShadow Árnyékot rajzol egy téglalap alakú területhez.
CDrawingManager::Fill4ColorsGradient Négyszögletes területet tölt ki két színátmenettel.
CDrawingManager::FillGradient Megadott színátmenettel kitölt egy téglalap alakú területet.
CDrawingManager::FillGradient2 Megadott színátmenettel kitölt egy téglalap alakú területet. A színátmenet színváltozásának iránya is meg van adva.
CDrawingManager::GrayRect Megadott szürke színnel kitölt egy téglalapot.
CDrawingManager::HighlightRect Kiemel egy téglalap alakú területet.
CDrawingManager::HLStoRGB_ONE A HLS-ábrázolás színét RGB-ábrázolássá alakítja át.
CDrawingManager::HLStoRGB_TWO A HLS-ábrázolás színét RGB-ábrázolássá alakítja át.
CDrawingManager::HSVtoRGB A HSV-ábrázolás színét RGB-ábrázolássá alakítja át.
CDrawingManager::HuetoRGB Segédmetódus, amely az árnyalat értékét piros, zöld vagy kék összetevővé alakítja.
CDrawingManager::MirrorRect Négyszögletes területet tükröz.
CDrawingManager::P ixelAlpha Segédmetódus, amely meghatározza a féltranszmittáló képpont végső színét.
CDrawingManager::P repareShadowMask Létrehoz egy bitképet, amely árnyékként használható.
CDrawingManager::RGBtoHSL Egy RGB-ábrázolás színét HSL-ábrázolássá alakítja át.
CDrawingManager::RGBtoHSV Egy RGB-ábrázolás színét HSV-ábrázolássá alakítja át.
CDrawingManager::SetAlphaPixel Segédmetódus, amely egy részlegesen átlátszó képpontot színező bitképen.
CDrawingManager::SetPixel Segédmetódus, amely egy bitkép egyetlen képpontját a megadott színre módosítja.
CDrawingManager::SmartMixColors Két színt egyesít súlyozott arány alapján.

Megjegyzések

Az CDrawingManager osztály függvényeket biztosít az árnyékok, a színátmenetek és a kiemelt téglalapok rajzoláshoz. Alfa-keverést is végez. Ezzel az osztálysal közvetlenül módosíthatja az alkalmazás felhasználói felületét.

Öröklési hierarchia

CObject
CDrawingManager

Requirements

Fejléc: afxdrawmanager.h

CDrawingManager::CDrawingManager

CDrawingManager objektumot hoz létre.

CDrawingManager(CDC& dc);

Paraméterek

Dc
[in] Eszközkörnyezetre mutató hivatkozás. Ezt CDrawingManager a környezetet használja a rajzhoz.

CDrawingManager::CreateBitmap_32

Létrehoz egy 32 bites eszközfüggetlen bitképet (DIB), amelybe az alkalmazások közvetlenül írhatnak.

static HBITMAP __stdcall CreateBitmap_32(
    const CSize& size,
    void** pBits);

static HBITMAP __stdcall CreateBitmap_32(
    HBITMAP bitmap,
    COLORREF clrTransparent = -1);

Paraméterek

méret
[in] A bitkép méretét jelző CSize paraméter.

pBitek
[kifelé] Egy adatmutatóra mutató mutató, amely megkapja a DIB bitértékeinek helyét.

Bitkép
Egy fogópont az eredeti bitképhez

clrTransparent
RGB-érték, amely az eredeti bitkép áttetsző színét adja meg.

Visszaadott érték

Az újonnan létrehozott DIB-bitkép leírója, ha ez a módszer sikeres; ellenkező esetben NULL.

Megjegyzések

A DIB-bitképek létrehozásáról további információt a CreateDIBSection című témakörben talál.

CDrawingManager::D rawAlpha

Áttetsző vagy félig transzparens képpontokkal rendelkező bitképeket jelenít meg.

void DrawAlpha(
    CDC* pDstDC,
    const CRect& rectDst,
    CDC* pSrcDC,
    const CRect& rectSrc);

Paraméterek

pDstDC
[in] A cél eszközkörnyezetére mutató mutató.

rectDst
[in] A cél téglalap.

pSrcDC
[in] A forrás eszközkörnyezetére mutató mutató.

rectSrc
[in] A forrás téglalapja.

Megjegyzések

Ez a módszer két bitkép alfa-keverését hajtja végre. További információ az alfa-keverésről: AlphaBlend a Windows SDK-ban.

CDrawingManager::D rawEllipse

Három pontot rajzol a megadott kitöltési és szegélyszínekkel.

void DrawEllipse(
    const CRect& rect,
    COLORREF clrFill,
    COLORREF clrLine);

Paraméterek

téglalap
[in] A három ponthoz tartozó határoló téglalap.

clrFill
[in] Az a szín, amelyet ez a módszer a három pont kitöltéséhez használ.

clrLine
[in] Az a szín, amelyet ez a módszer a három pont szegélyeként használ.

Megjegyzések

Ez a metódus három pont rajzolása nélkül tér vissza, ha bármelyik szín -1 értékre van állítva. Három pont rajzolása nélkül is visszatér, ha a határoló téglalap bármelyik mérete 0.

CDrawingManager::D rawGradientRing

Rajzol egy gyűrűt, és színátmenettel tölti ki.

BOOL DrawGradientRing(
    CRect rect,
    COLORREF colorStart,
    COLORREF colorFinish,
    COLORREF colorBorder,
    int nAngle,
    int nWidth,
    COLORREF clrFace = (COLORREF)-1);

Paraméterek

téglalap
[in] Egy CRect paraméter, amely megadja a színátmeneti gyűrű határát.

colorStart
[in] A színátmenet első színe.

colorFinish
[in] A színátmenet utolsó színe.

colorBorder
[in] A szegély színe.

nAngle
[in] A kezdeti színátmenetes rajzszöget meghatározó paraméter. Ennek az értéknek 0 és 360 között kell lennie.

nWidth
[in] A gyűrű szegélyének szélessége.

clrFace
[in] A gyűrű belsejének színe.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A süllyesztett téglalapnak legalább 5 képpont szélesnek és 5 képpont magasnak kell lennie.

CDrawingManager::D rawLine, CDrawingManager::D rawLineA

Rajzol egy vonalat.

void DrawLine(
    int x1,
    int y1,
    int x2,
    int y2,
    COLORREF clrLine);

void DrawLineA(
    double x1,
    double y1,
    double x2,
    double y2,
    COLORREF clrLine);

Paraméterek

x1
[in] A vonal kezdővonalának x koordinátája.

y1
[in] Az y koordináta, ahol a vonal elindul.

x2
[in] Az x koordináta, ahol a vonal végződik.

y2
[in] Az y koordináta, ahol a vonal véget ér.

clrLine
[in] A vonal színe.

Megjegyzések

Ez a módszer meghiúsul, ha a clrLine értéke -1.

CDrawingManager::D rawRect

Téglalapot rajzol a megadott kitöltési és szegélyszínekkel.

void DrawRect(
    const CRect& rect,
    COLORREF clrFill,
    COLORREF clrLine);

Paraméterek

téglalap
[in] A téglalap határai.

clrFill
[in] A módszer által használt szín a téglalap kitöltéséhez.

clrLine
[in] A metódus színét használja a téglalap szegélyéhez.

Megjegyzések

Ez a metódus téglalap rajzolása nélkül tér vissza, ha bármelyik szín -1 értékre van állítva. Azt is visszaadja, ha a téglalap bármelyik mérete 0.

CDrawingManager::D rawShadow

Árnyékot rajzol egy téglalap alakú területhez.

BOOL DrawShadow(
    CRect rect,
    int nDepth,
    int iMinBrightness = 100,
    int iMaxBrightness = 50,
    CBitmap* pBmpSaveBottom = NULL,
    CBitmap* pBmpSaveRight = NULL,
    COLORREF clrBase = (COLORREF)-1,
    BOOL bRightShadow = TRUE);

Paraméterek

téglalap
[in] Egy téglalap alakú terület az alkalmazásban. A rajzkezelő árnyékot rajzol a terület alá.

nDepth
[in] Az árnyék szélessége és magassága.

iMinBrightness
[in] Az árnyék minimális fényereje.

iMaxBrightness
[in] Az árnyék maximális fényereje.

pBmpSaveBottom
[in] Az árnyék alsó részének képét tartalmazó bitképre mutató mutató.

pBmpSaveRight
[in] Mutató egy bittérképre, amely a téglalap jobb oldalán rajzolt árnyék képét tartalmazza.

clrBase
[in] Az árnyék színe.

bRightShadow
[in] Logikai paraméter, amely jelzi az árnyék rajzolása módját. Ha a bRightShadow értéke, TRUEDrawShadow árnyékot rajzol a téglalap jobb oldalán.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

A pBmpSaveBottom és a pBmpSaveRight paraméterekkel két érvényes bitképet adhat meg az alsó és a jobb oldali árnyékokhoz. Ha ezek a CBitmap-objektumok egy csatolt GDI-objektummal rendelkeznek, DrawShadow ezeket a bitképeket fogja használni árnyékként. Ha a CBitmap paraméterek nem rendelkeznek csatolt GDI-objektummal, rajzolja az árnyékot, DrawShadow és csatolja a bitképeket a paraméterekhez. A jövőbeli hívások során DrawShadowezeket a bitképeket megadhatja a rajzi folyamat felgyorsításához. Az osztályról és a CBitmap GDI-objektumokról további információt a Grafikus objektumok című témakörben talál.

Ha a paraméterek bármelyike az NULL, DrawShadow automatikusan megrajzolja az árnyékot.

Ha a bRightShadow értéket HAMIS értékre állítja, az árnyék a téglalap alakú terület alá és bal oldalára lesz rajzolva.

Example

Az alábbi példa bemutatja, hogyan használható az DrawShadowCDrawingManager osztály metódusa. Ez a kódrészlet a Prop Sheet Demo minta része.

// CDC* pDC
// CRect rectHeader
CDrawingManager dm(*pDC);
// Draw a shadow for a rectangular area.
// second parameter is the depth of the shadow
dm.DrawShadow(rectHeader, 2);

CDrawingManager::Fill4ColorsGradient

Négyszögletes területet tölt ki két színátmenettel.

void Fill4ColorsGradient(
    CRect rect,
    COLORREF colorStart1,
    COLORREF colorFinish1,
    COLORREF colorStart2,
    COLORREF colorFinish2,
    BOOL bHorz = TRUE,
    int nPercentage = 50);

Paraméterek

téglalap
[in] A kitöltendő téglalap.

colorStart1
[in] Az első színátmenet kezdeti színe.

colorFinish1
[in] Az első színátmenet utolsó színe.

colorStart2
[in] A második színátmenet kezdeti színe.

colorFinish2
[in] A második színátmenet utolsó színe.

bHorz
[in] Logikai paraméter, amely jelzi, hogy vízszintes vagy függőleges színátmenetet ad-e Fill4ColorsGradient . A TRUE vízszintes színátmenetet jelez.

nPercentage
[in] 0 és 100 közötti egész szám. Ez az érték az első színátmenettel kitöltendő téglalap százalékos arányát jelzi.

Megjegyzések

Ha egy téglalap két színátmenettel van kitöltve, a bHorz értékétől függően egymás felett vagy egymás mellett találhatók. Minden színátmenetet egymástól függetlenül számítunk ki a CDrawingManager::FillGradient metódussal.

Ez a módszer akkor okoz helyességi hibát, ha az nPercentage értéke kisebb, mint 0 vagy több mint 100.

CDrawingManager::FillGradient

Kitölt egy téglalap alakú területet a megadott színátmenettel.

void FillGradient(
    CRect rect,
    COLORREF colorStart,
    COLORREF colorFinish,
    BOOL bHorz = TRUE,
    int nStartFlatPercentage = 0,
    int nEndFlatPercentage = 0);

Paraméterek

téglalap
[in] A kitöltendő téglalap alakú terület.

colorStart
[in] A színátmenet első színe.

colorFinish
[in] A színátmenet végső színe.

bHorz
[in] Logikai paraméter, amely meghatározza, hogy vízszintes vagy függőleges színátmenetet kell-e FillGradient rajzolni.

nStartFlatPercentage
[in] A színátmenet megkezdése előtt kitöltendő téglalap FillGradient százalékos aránya.

nEndFlatPercentage
[in] A színátmenet befejezése után a colorFinish színnel kitöltendő téglalap FillGradient százalékos aránya.

Example

Az alábbi példa bemutatja, hogyan használható az FillGradientCDrawingManager osztály metódusa. Ez a kódrészlet az MS Office 2007 Demo minta része.

// CRect rectScreen
// CDrawingManager dm
dm.FillGradient(rectScreen, RGB(114, 125, 152), RGB(178, 185, 202), TRUE);

CDrawingManager::FillGradient2

Megadott színátmenettel kitölt egy téglalap alakú területet.

void FillGradient2 (
    CRect rect,
    COLORREF colorStart,
    COLORREF colorFinish,
    int nAngle = 0);

Paraméterek

téglalap
[in] A kitöltendő téglalap alakú terület.

colorStart
[in] A színátmenet első színe.

colorFinish
[in] A színátmenet utolsó színe.

nAngle
[in] 0 és 360 közötti egész szám. Ez a paraméter a színátmenet irányát határozza meg.

Megjegyzések

Az nAngle használatával adja meg a színátmenet irányát. A színátmenet irányának megadásakor azt is meg kell adnia, hogy hol kezdődik a színátmenet. Az nAngle 0 értéke azt jelzi, hogy a színátmenet a téglalap tetejétől kezdődik. Az nAngle növekedésével a színátmenet kiindulási helye az óramutató járásával ellentétes irányban mozog a szög alapján.

Example

Az alábbi példa bemutatja, hogyan használható az FillGradient2CDrawingManager osztály metódusa. Ez a kódrészlet az Új vezérlők minta része.

// CRect rect
// CDC* pDC
CDrawingManager dm(*pDC);
// The last parameter is the angle that specifies the direction of the color gradient.
dm.FillGradient2(rect, RGB(102, 200, 238), RGB(0, 129, 185), 45);

CDrawingManager::GrayRect

Megadott szürke színnel kitölt egy téglalapot.

BOOL GrayRect(
    CRect rect,
    int nPercentage = -1,
    COLORREF clrTransparent = (COLORREF)-1,
    COLORREF clrDisabled = (COLORREF)-1);

Paraméterek

téglalap
[in] A kitöltendő téglalap alakú terület.

nPercentage
[in] A téglalapban a szürke százalékos aránya.

clrTransparent
[in] Az átlátszó szín.

clrDisabled
[in] A metódus által a telítettség megszüntetéséhez használt szín, ha az nPercentage értéke -1.

Visszaadott érték

IGAZ, ha a módszer sikeres volt; egyéb esetben HAMIS.

Megjegyzések

Az nPercentage paraméternél az alacsonyabb érték sötétebb színt jelez.

Az nPercentage maximális értéke 200. A 200-nál nagyobb érték nem változtatja meg a téglalap megjelenését. Ha az érték -1, ez a metódus a clrDisabled használatával korlátozza a téglalap telítettségét.

CDrawingManager::HighlightRect

Kiemel egy téglalap alakú területet.

BOOL HighlightRect(
    CRect rect,
    int nPercentage = -1,
    COLORREF clrTransparent = (COLORREF)-1,
    int nTolerance = 0,
    COLORREF clrBlend = (COLORREF)-1);

Paraméterek

téglalap
[in] Kiemelendő téglalap alakú terület.

nPercentage
[in] Százalékos érték, amely azt jelzi, hogy mennyire legyen áttetsző a kiemelés.

clrTransparent
[in] Az átlátszó szín.

nTolerance
[in] 0 és 255 közötti egész szám, amely a színtűrést jelzi.

clrBlend
[in] A keverés alapszíne.

Visszaadott érték

IGAZ, ha a módszer sikeres; egyéb esetben HAMIS.

Megjegyzések

Ha az nPercentage értéke 0 és 99 között van, HighlightRect használja az alfa-keverési algoritmust. Az alfa-keverésről további információt az Alfa keverési vonalak és kitöltések című témakörben talál. Ha az nPercentage értéke -1, ez a metódus az alapértelmezett kiemelési szintet használja. Ha az nPercentage értéke 100, akkor ez a metódus nem tesz semmit, és IGAZ értéket ad vissza.

A metódus az nTolerance paraméter használatával határozza meg, hogy ki kell-e emelni a téglalap alakú területet. A téglalap kiemeléséhez az alkalmazás háttérszíne és a clrTransparent közötti különbségnek kisebbnek kell lennie, mint nTolerance az egyes színösszetevőkben (piros, zöld és kék).

CDrawingManager::HLStoRGB_ONE

A HLS-ábrázolás színét RGB-ábrázolássá alakítja át.

static COLORREF __stdcall HLStoRGB_ONE(
    double H,
    double L,
    double S);

Paraméterek

H
[in] 0 és 1 közötti szám, amely a szín árnyalatát jelöli.

L
[in] 0 és 1 közötti szám, amely a szín fényességét jelzi.

S
[in] 0 és 1 közötti szám, amely a szín telítettségét jelzi.

Visszaadott érték

A MEGADOTT HLS-szín RGB-ábrázolása.

Megjegyzések

A szín lehet HSV (árnyalat, telítettség és érték), HSL (árnyalat, telítettség és fényesség) vagy RGB (piros, zöld és kék). A színek különböző ábrázolásáról további információt a Szín című témakörben talál.

Ez a metódus és a CDrawingManager::HLStoRGB_TWO metódus ugyanazt a műveletet hajtja végre, de a H paraméterhez eltérő értékeket igényel. Ebben a módszerben a H a kör százaléka. A metódusban a CDrawingManager::HLStoRGB_TWOH egy 0 és 360 közötti fokérték, amely mindkettő piros értéket jelent. Ha például HLStoRGB_ONEa H értéke 0,25, akkor a 90-zel HLStoRGB_TWOegyenlő.

CDrawingManager::HLStoRGB_TWO

A HLS-ábrázolás színét RGB-ábrázolássá alakítja át.

static COLORREF __stdcall HLStoRGB_TWO(
    double H,
    double L,
    double S);

Paraméterek

H
[in] 0 és 360 közötti szám, amely a szín árnyalatát jelöli.

L
[in] 0 és 1 közötti szám, amely a szín fényességét jelzi.

S
[in] 0 és 1 közötti szám, amely a szín telítettségét jelzi.

Visszaadott érték

A MEGADOTT HLS-szín RGB-ábrázolása.

Megjegyzések

A szín lehet HSV (árnyalat, telítettség és érték), HSL (árnyalat, telítettség és fényesség) vagy RGB (piros, zöld és kék). A színek különböző ábrázolásáról további információt a Szín című témakörben talál.

Ez a metódus és a CDrawingManager::HLStoRGB_ONE metódus ugyanezt a műveletet hajtja végre, de a H paraméterhez eltérő értékeket igényel. Ebben a módszerben a H egy 0 és 360 közötti fokérték, amely mindkettő piros értéket jelent. A CDrawingManager::HLStoRGB_ONE metódusban a H a kör százaléka. Ha például HLStoRGB_ONEa H értéke 0,25, akkor a 90-zel HLStoRGB_TWOegyenlő.

CDrawingManager::HSVtoRGB

A HSV-ábrázolás színét RGB-ábrázolássá alakítja át.

static COLORREF __stdcall HSVtoRGB(
    double H,
    double S,
    double V);

Paraméterek

H
[in] 0 és 360 közötti szám, amely a szín árnyalatát jelzi.

S
[in] 0 és 1 közötti szám, amely a szín telítettségét jelzi.

V
[in] 0 és 1 közötti szám, amely a szín értékét jelzi.

Visszaadott érték

A megadott HSV-szín RGB-ábrázolása.

Megjegyzések

A szín lehet HSV (árnyalat, telítettség és érték), HSL (árnyalat, telítettség és fényesség) vagy RGB (piros, zöld és kék). A színek különböző ábrázolásáról további információt a Szín című témakörben talál.

CDrawingManager::HuetoRGB

Az árnyalat értékét piros, zöld vagy kék összetevővé alakítja.

static double __stdcall HuetoRGB(
    double m1,
    double m2,
    double h);

static BYTE __stdcall HueToRGB(
    float rm1,
    float rm2,
    float rh);

Paraméterek

m1
[in] Lásd: Megjegyzések.

m2
[in] Lásd: Megjegyzések.

h
[in] Lásd: Megjegyzések.

rm1
[in] Lásd: Megjegyzések.

rm2
[in] Lásd: Megjegyzések.

Rh
[in] Lásd: Megjegyzések.

Visszaadott érték

A megadott árnyalat egyedi piros, zöld vagy kék összetevője.

Megjegyzések

Ez a módszer egy segédmetódus, amellyel az CDrawingManager osztály kiszámítja a szín egyes piros, zöld és kék összetevőit egy HSV- vagy HSL-ábrázolásban. Ezt a módszert nem úgy tervezték, hogy közvetlenül a programozó hívja meg. A bemeneti paraméterek a konverziós algoritmustól függő értékek.

Ha egy HSV- vagy HSL-színt RGB-ábrázolásúvá szeretne alakítani, hívja meg az alábbi módszerek egyikét:

CDrawingManager::MirrorRect

Négyszögletes területet tükröz.

void MirrorRect(
    CRect rect,
    BOOL bHorz = TRUE);

Paraméterek

téglalap
[in] A tükrözni kívánt terület határoló téglalapja.

bHorz
[in] Logikai paraméter, amely azt jelzi, hogy a téglalap vízszintesen vagy függőlegesen tükröz.

Megjegyzések

Ez a metódus az osztály tulajdonában CDrawingManager lévő eszközkörnyezet bármely területét tükrözheti. Ha a bHorz értéke IGAZ, akkor ez a metódus vízszintesen megfordítja a területet. Ellenkező esetben függőlegesen megfordítja a területet.

CDrawingManager::P ixelAlpha

Kiszámítja egy félig átfordító képpont végső színét.

static COLORREF __stdcall PixelAlpha(
    COLORREF srcPixel,
    int percent);

static COLORREF __stdcall PixelAlpha(
    COLORREF srcPixel,
    double percentR,
    double percentG,
    double percentB);

static COLORREF __stdcall PixelAlpha(
    COLORREF srcPixel,
    COLORREF dstPixel,
    int percent);

Paraméterek

srcPixel
[in] A képpont kezdeti színe.

százalékos
[in] 0 és 100 közötti szám, amely az átláthatóság százalékos arányát jelöli. A 100-ás érték azt jelzi, hogy a kezdeti szín teljesen átlátszó.

percentR
[in] 0 és 100 közötti szám, amely a piros összetevő áttetszőségi százalékát jelöli.

percentG
[in] 0 és 100 közötti szám, amely a zöld összetevő áttetszőségi százalékát jelöli.

percentB
[in] 0 és 100 közötti szám, amely a kék összetevő áttetszőségi százalékát jelöli.

dstPixel
[in] A képpont alapszíne.

Visszaadott érték

A félig áttetsző képpont végső színe.

Megjegyzések

Ez egy segédosztály a félig átereszkedő bitképek színezéséhez, és nem úgy van kialakítva, hogy közvetlenül a programozó hívja meg.

Ha a dstPixelt tartalmazó metódus verzióját használja, a végső szín a dstPixel és az srcPixel kombinációja. Az srcPixel szín a részben átlátszó szín a dstPixel alapszínén.

CDrawingManager::P repareShadowMask

Létrehoz egy bitképet, amely árnyékként használható.

static HBITMAP __stdcall PrepareShadowMask (
    int nDepth,
    COLORREF clrBase,
    int iMinBrightness = 0,
    int iMaxBrightness = 100);

Paraméterek

nDepth
[in] Az árnyék szélessége és magassága.

clrBase
[in] Az árnyék színe.

iMinBrightness
[in] Az árnyék minimális fényereje.

iMaxBrightness
[in] Az árnyék maximális fényereje.

Visszaadott érték

A létrehozott bitkép leírója, ha ez a módszer sikeres; ellenkező esetben NULL.

Megjegyzések

Ha az nDepth értéke 0, ez a metódus kilép, és null értéket ad vissza. Ha az nDepth értéke kisebb, mint 3, az árnyék szélessége és magassága 3 képpontra van állítva.

CDrawingManager::RGBtoHSL

Színt alakít át piros, zöld és kék (RGB) ábrázolásból árnyalat, telítettség és világosság (HSL) ábrázolássá.

static void __stdcall RGBtoHSL(
    COLORREF rgb,
    double* H,
    double* S,
    double* L);

Paraméterek

Rgb
[in] Az RGB-értékek színe.

H
[kifelé] Egy dupla mutató, ahol a metódus tárolja a szín árnyalatát.

S
[kifelé] Egy dupla mutató, ahol a metódus tárolja a szín telítettségét.

L
[kifelé] Egy dupla mutató, ahol a metódus tárolja a szín világosságát.

Megjegyzések

A szín lehet HSV (árnyalat, telítettség és érték), HSL (árnyalat, telítettség és fényesség) vagy RGB (piros, zöld és kék). A színek különböző ábrázolásáról további információt a Szín című témakörben talál.

A H visszaadott értéke 0 és 1 közötti törtként jelenik meg, ahol a 0 és az 1 is piros. Az S és az L visszaadott értékei 0 és 1 közötti számok.

CDrawingManager::RGBtoHSV

Egy RGB-ábrázolás színét HSV-ábrázolássá alakítja át.

static void __stdcall RGBtoHSV(
    COLORREF rgb,
    double* H,
    double* S,
    double* V);

Paraméterek

Rgb
[in] Az átalakítandó szín RGB-ábrázolásban.

H
[kifelé] Egy dupla mutató, ahol ez a metódus a színhez kapott árnyalatot tárolja.

S
[kifelé] Egy dupla mutató, ahol ez a metódus tárolja a szín eredményül kapott telítettségét.

V
[kifelé] Egy dupla mutató, ahol ez a metódus tárolja a szín eredményként kapott értékét.

Megjegyzések

A szín lehet HSV (árnyalat, telítettség és érték), HSL (árnyalat, telítettség és fényesség) vagy RGB (piros, zöld és kék). A színek különböző ábrázolásáról további információt a Szín című témakörben talál.

A H visszaadott értéke egy 0 és 360 közötti szám, ahol a 0 és a 360 is piros értéket jelez. Az S és V visszatérési értékei 0 és 1 közötti számok.

CDrawingManager::SetAlphaPixel

Áttetsző képpont színét színozza egy bitképen.

static void __stdcall SetAlphaPixel(
    COLORREF* pBits,
    CRect rect,
    int x,
    int y,
    int percent,
    int iShadowSize,
    COLORREF clrBase = (COLORREF)-1,
    BOOL bIsRight = TRUE);

Paraméterek

pBitek
[in] Mutató a bitkép bitértékére.

téglalap
[in] Egy téglalap alakú terület az alkalmazásban. A rajzkezelő árnyékot rajzol a terület alá és jobb oldalára.

x
[in] A képpont és a szín vízszintes koordinátája.

y
[in] A képpont függőleges koordinátája a színhez.

százalékos
[in] Az átláthatóság százalékos aránya.

iShadowSize
[in] Az árnyék szélessége és magassága.

clrBase
[in] Az árnyék színe.

bIsRight
[in] Logikai paraméter, amely azt jelzi, hogy melyik képpontot kell színre színíteni. További információért tekintse meg a Megjegyzések szakaszt.

Megjegyzések

Ez a módszer a CDrawingManager::D rawShadow metódus által használt segédmetódus. Javasoljuk, hogy ha árnyékot szeretne rajzolni, hívja CDrawingManager::DrawShadow inkább.

Ha a bIsRight értéke IGAZ, a képponttól a színig x képpontot mér a rendszer a süllyesztés jobb szélétől. Ha HAMIS, a képponttól a színig x képpontot mér a süllyesztés bal szélétől.

CDrawingManager::SetPixel

A bitképben lévő egyetlen képpontot a megadott színre módosítja.

static void __stdcall SetPixel(
    COLORREF* pBits,
    int cx,
    int cy,
    int x,
    int y,
    COLORREF color);

Paraméterek

pBitek
[in] A bitkép bitértékeinek mutatója.

Cx
[in] A bitkép teljes szélessége.

Cy
[in] A bitkép teljes magassága.

x
[in] A bitképben lévő képpont x koordinátája a módosításhoz.

y
[in] A bitképben lévő képpont y koordinátája a módosításhoz.

color
[in] A megadott koordináták által azonosított képpont új színe.

CDrawingManager::SmartMixColors

Két színt egyesít súlyozott arány alapján.

static COLORREF __stdcall SmartMixColors(
    COLORREF color1,
    COLORREF color2,
    double dblLumRatio = 1.,
    int k1 = 1,
    int k2 = 1);

Paraméterek

szín1
[in] Az első szín, amit el kell keverni.

szín2
[in] A második szín, amit el kell keverni.

dblLumRatio
[in] Az új szín fényerejének aránya. SmartMixColors megszorozza a vegyes szín fényerejét ezzel az aránysal a végső szín meghatározása előtt.

k1
[in] Az első szín súlyozott aránya.

k2
[in] A második szín súlyozott aránya.

Visszaadott érték

A megadott színek súlyozott keverékét képviselő szín.

Megjegyzések

Ez a módszer akkor sikertelen, ha k1 vagy k2 kisebb, mint nulla. Ha mindkét paraméter 0 értékre van állítva, a metódus ad vissza RGB(0, 0, 0).

A súlyozott arány kiszámítása a következő képlettel történik: (color1 * k1 + color2 * k2)/(k1 + k2). A súlyozott arány meghatározása után a módszer kiszámítja a vegyes szín fényerejét. Ezután megszorozza a fénysűrűséget a dblLumRatio-tal. Ha az érték nagyobb, mint 1,0, a metódus a vegyes szín fényerejét az új értékre állítja. Ellenkező esetben a fényerő értéke 1,0.

CDrawingManager::D rawRotated

90 fokkal elforgatja a forrás tartományvezérlő tartalmát a megadott téglalapon belül.

void DrawRotated(
    CRect rectDest,
    CDC& dcSrc,
    BOOL bClockWise);

Paraméterek

rectDest
Cél téglalap.

dcSrc
A forráseszköz környezete.

bClockWise
AZ IGAZ érték +90 fok elforgatását jelzi; A HAMIS -90 fok elforgatását jelzi.

Megjegyzések

Lásd még

hierarchiadiagram
osztályok