Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.