Classe CDrawingManager
La CDrawingManager
classe implementa algoritmi di disegno complessi.
Sintassi
class CDrawingManager : public CObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDrawingManager::CDrawingManager | Costruisce un oggetto CDrawingManager . |
CDrawingManager::~CDrawingManager |
Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CDrawingManager::CreateBitmap_32 | Crea una bitmap indipendente dal dispositivo (DIB) a 32 bit in cui le applicazioni possono scrivere direttamente. |
CDrawingManager::D rawAlpha | Visualizza bitmap con pixel trasparenti o semitrasparenti. |
CDrawingManager::D rawRotated | Ruota il contenuto di un controller di dominio di origine all'interno del rettangolo specificato di +/- 90 gradi |
CDrawingManager::D rawEllipse | Disegna un'ellisse con i colori di riempimento e bordo forniti. |
CDrawingManager::D rawGradientRing | Disegna un anello e lo riempie con una sfumatura di colore. |
CDrawingManager::D rawLine, CDrawingManager::D rawLineA | Disegna una linea. |
CDrawingManager::D rawRect | Disegna un rettangolo con i colori di riempimento e bordo forniti. |
CDrawingManager::D rawShadow | Disegna un'ombreggiatura per un'area rettangolare. |
CDrawingManager::Fill4ColorsGradient | Riempie un'area rettangolare con due sfumature di colore. |
CDrawingManager::FillGradient | Riempie un'area rettangolare con una sfumatura di colore specificata. |
CDrawingManager::FillGradient2 | Riempie un'area rettangolare con una sfumatura di colore specificata. Viene specificata anche la direzione della modifica del colore della sfumatura. |
CDrawingManager::GrayRect | Riempie un rettangolo con un colore grigio specificato. |
CDrawingManager::HighlightRect | Evidenzia un'area rettangolare. |
CDrawingManager::HLStoRGB_ONE | Converte un colore da una rappresentazione HLS a una rappresentazione RGB. |
CDrawingManager::HLStoRGB_TWO | Converte un colore da una rappresentazione HLS a una rappresentazione RGB. |
CDrawingManager::HSVtoRGB | Converte un colore da una rappresentazione HSV a una rappresentazione RGB. |
CDrawingManager::HuetoRGB | Metodo helper che converte un valore di tonalità in un componente rosso, verde o blu. |
CDrawingManager::MirrorRect | Capovolge un'area rettangolare. |
CDrawingManager::P ixelAlpha | Metodo helper che determina il colore finale per un pixel semitrasparente. |
CDrawingManager::P repareShadowMask | Crea una bitmap che può essere usata come ombreggiatura. |
CDrawingManager::RGBtoHSL | Converte un colore da una rappresentazione RGB a una rappresentazione HSL. |
CDrawingManager::RGBtoHSV | Converte un colore da una rappresentazione RGB a una rappresentazione HSV. |
CDrawingManager::SetAlphaPixel | Metodo helper che colora un pixel parzialmente trasparente in una bitmap. |
CDrawingManager::SetPixel | Metodo helper che modifica un singolo pixel in una bitmap con il colore specificato. |
CDrawingManager::SmartMixColors | Combina due colori in base a un rapporto ponderato. |
Osservazioni:
La CDrawingManager
classe fornisce funzioni per disegnare ombreggiature, sfumature di colore e rettangoli evidenziati. Esegue anche la fusione alfa. È possibile usare questa classe per modificare direttamente l'interfaccia utente dell'applicazione.
Gerarchia di ereditarietà
CObject
CDrawingManager
Requisiti
Intestazione: afxdrawmanager.h
CDrawingManager::CDrawingManager
Costruisce un oggetto CDrawingManager .
CDrawingManager(CDC& dc);
Parametri
dc
[in] Riferimento a un contesto di dispositivo. CDrawingManager
Utilizza questo contesto per il disegno.
CDrawingManager::CreateBitmap_32
Crea una bitmap indipendente dal dispositivo (DIB) a 32 bit in cui le applicazioni possono scrivere direttamente.
static HBITMAP __stdcall CreateBitmap_32(
const CSize& size,
void** pBits);
static HBITMAP __stdcall CreateBitmap_32(
HBITMAP bitmap,
COLORREF clrTransparent = -1);
Parametri
size
[in] Parametro CSize che indica le dimensioni della bitmap.
pBit
[out] Puntatore a un puntatore dati che riceve la posizione dei valori di bit di DIB.
bitmap
Handle per la bitmap originale
clrTransparent
Valore RGB che specifica il colore trasparente della bitmap originale.
Valore restituito
Handle per la bitmap DIB appena creata se questo metodo ha esito positivo; in caso contrario NULL.
Osservazioni:
Per altre informazioni su come creare una bitmap DIB, vedere CreateDIBSection.
CDrawingManager::D rawAlpha
Visualizza bitmap con pixel trasparenti o semitrasparenti.
void DrawAlpha(
CDC* pDstDC,
const CRect& rectDst,
CDC* pSrcDC,
const CRect& rectSrc);
Parametri
pDstDC
[in] Puntatore al contesto di dispositivo per la destinazione.
rectDst
[in] Rettangolo di destinazione.
pSrcDC
[in] Puntatore al contesto di dispositivo per l'origine.
rectSrc
[in] Rettangolo di origine.
Osservazioni:
Questo metodo esegue la fusione alfa per due bitmap. Per altre informazioni sulla fusione alfa, vedere AlphaBlend in Windows SDK.
CDrawingManager::D rawEllipse
Disegna un'ellisse con i colori di riempimento e bordo forniti.
void DrawEllipse(
const CRect& rect,
COLORREF clrFill,
COLORREF clrLine);
Parametri
rect
[in] Rettangolo di delimitazione per l'ellisse.
clrFill
[in] Colore utilizzato da questo metodo per riempire l'ellisse.
clrLine
[in] Colore utilizzato da questo metodo come bordo dell'ellisse.
Osservazioni:
Questo metodo restituisce senza disegnare un'ellisse se uno dei due colori è impostato su -1. Restituisce anche senza disegnare un'ellisse se una delle dimensioni del rettangolo di delimitazione è 0.
CDrawingManager::D rawGradientRing
Disegna un anello e lo riempie con una sfumatura di colore.
BOOL DrawGradientRing(
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
COLORREF colorBorder,
int nAngle,
int nWidth,
COLORREF clrFace = (COLORREF)-1);
Parametri
rect
[in] Parametro CRect che specifica il limite per l'anello sfumato.
colorStart
[in] Primo colore per la sfumatura.
colorFinish
[in] Ultimo colore per la sfumatura.
colorBorder
[in] Colore del bordo.
nAngle
[in] Parametro che specifica l'angolo iniziale del disegno sfumato. Questo valore deve essere compreso tra 0 e 360.
nWidth
[in] Larghezza del bordo per l'anello.
clrFace
[in] Colore dell'interno dell'anello.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Il rettangolo definito da rect deve avere una larghezza di almeno 5 pixel e un'altezza di 5 pixel.
CDrawingManager::D rawLine, CDrawingManager::D rawLineA
Disegna una linea.
void DrawLine(
int x1,
int y1,
int x2,
int y2,
COLORREF clrLine);
void DrawLineA(
double x1,
double y1,
double x2,
double y2,
COLORREF clrLine);
Parametri
x1
[in] Coordinata x in cui inizia la riga.
y1
[in] Coordinata y in cui inizia la linea.
x2
[in] Coordinata x in cui termina la linea.
y2
[in] Coordinata y in cui termina la linea.
clrLine
[in] Colore della linea.
Osservazioni:
Questo metodo ha esito negativo se clrLine è uguale a -1.
CDrawingManager::D rawRect
Disegna un rettangolo con i colori di riempimento e bordo forniti.
void DrawRect(
const CRect& rect,
COLORREF clrFill,
COLORREF clrLine);
Parametri
rect
[in] Limiti per il rettangolo.
clrFill
[in] Colore utilizzato da questo metodo per riempire il rettangolo.
clrLine
[in] Colore utilizzato da questo metodo per il bordo del rettangolo.
Osservazioni:
Questo metodo restituisce senza disegnare un rettangolo se uno dei due colori è impostato su -1. Restituisce anche se una delle dimensioni del rettangolo è 0.
CDrawingManager::D rawShadow
Disegna un'ombreggiatura per un'area rettangolare.
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);
Parametri
rect
[in] Area rettangolare nell'applicazione. Il gestore disegno disegnerà un'ombreggiatura sotto questa area.
nDepth
[in] Larghezza e altezza dell'ombreggiatura.
iMinBrightness
[in] Luminosità minima dell'ombreggiatura.
iMaxBrightness
[in] Luminosità massima dell'ombreggiatura.
pBmpSaveBottom
[in] Puntatore a una bitmap che contiene l'immagine per la parte inferiore dell'ombreggiatura.
pBmpSaveRight
[in] Puntatore a una bitmap che contiene l'immagine per l'ombreggiatura disegnata sul lato destro del rettangolo.
clrBase
[in] Colore dell'ombreggiatura.
bRightShadow
[in] Parametro booleano che indica come viene disegnata l'ombreggiatura. Se bRightShadow è TRUE
, DrawShadow
disegna un'ombreggiatura sul lato destro del rettangolo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
È possibile fornire due bitmap valide per le ombreggiature in basso e destro usando i parametri pBmpSaveBottom e pBmpSaveRight. Se questi oggetti CBitmap hanno un oggetto GDI associato, DrawShadow
userà tali bitmap come ombreggiature. Se i CBitmap
parametri non hanno un oggetto GDI associato, DrawShadow
disegna l'ombreggiatura e allega le bitmap ai parametri. Nelle chiamate future a DrawShadow
, è possibile fornire queste bitmap per velocizzare il processo di disegno. Per altre informazioni sulla classe e sugli CBitmap
oggetti GDI, vedere Oggetti grafici.
Se uno di questi parametri è NULL
, DrawShadow
disegnerà automaticamente l'ombreggiatura.
Se si imposta bRightShadow su FALSE, l'ombreggiatura verrà disegnata sotto e a sinistra dell'area rettangolare.
Esempio
Nell'esempio seguente viene illustrato come usare il DrawShadow
metodo della CDrawingManager
classe . Questo frammento di codice fa parte dell'esempio demo di foglio prop.
// 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
Riempie un'area rettangolare con due sfumature di colore.
void Fill4ColorsGradient(
CRect rect,
COLORREF colorStart1,
COLORREF colorFinish1,
COLORREF colorStart2,
COLORREF colorFinish2,
BOOL bHorz = TRUE,
int nPercentage = 50);
Parametri
rect
[in] Rettangolo da riempire.
colorStart1
[in] Colore iniziale per la prima sfumatura di colore.
colorFinish1
[in] Colore finale per la prima sfumatura di colore.
colorStart2
[in] Colore iniziale per la seconda sfumatura di colore.
colorFinish2
[in] Colore finale per la seconda sfumatura di colore.
bHorz
[in] Parametro booleano che indica se Fill4ColorsGradient
colora una sfumatura orizzontale o verticale. TRUE indica una sfumatura orizzontale.
nPercentage
[in] Intero compreso tra 0 e 100. Questo valore indica la percentuale del rettangolo da riempire con la prima sfumatura di colore.
Osservazioni:
Quando un rettangolo viene riempito con due sfumature di colore, si trovano l'una sopra l'altra o accanto l'una all'altra, a seconda del valore di bHorz. Ogni sfumatura di colore viene calcolata in modo indipendente con il metodo CDrawingManager::FillGradient.
Questo metodo genera un errore di asserzione se nPercentage è minore di 0 o più di 100.
CDrawingManager::FillGradient
Riempie un'area rettangolare con la sfumatura di colore specificata.
void FillGradient(
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
BOOL bHorz = TRUE,
int nStartFlatPercentage = 0,
int nEndFlatPercentage = 0);
Parametri
rect
[in] Area rettangolare da riempire.
colorStart
[in] Primo colore per la sfumatura.
colorFinish
[in] Colore finale per la sfumatura.
bHorz
[in] Parametro booleano che specifica se FillGradient
disegnare una sfumatura orizzontale o verticale.
nStartFlatPercentage
[in] Percentuale del rettangolo che FillGradient
riempie con colorStart prima di avviare la sfumatura.
nEndFlatPercentage
[in] Percentuale del rettangolo che FillGradient
riempie con colorFinish al termine della sfumatura.
Esempio
Nell'esempio seguente viene illustrato come usare il FillGradient
metodo della CDrawingManager
classe . Questo frammento di codice fa parte dell'esempio demo di MS Office 2007.
// CRect rectScreen
// CDrawingManager dm
dm.FillGradient(rectScreen, RGB(114, 125, 152), RGB(178, 185, 202), TRUE);
CDrawingManager::FillGradient2
Riempie un'area rettangolare con una sfumatura di colore specificata.
void FillGradient2 (
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
int nAngle = 0);
Parametri
rect
[in] Area rettangolare da riempire.
colorStart
[in] Primo colore della sfumatura.
colorFinish
[in] Ultimo colore della sfumatura.
nAngle
[in] Intero compreso tra 0 e 360. Questo parametro specifica la direzione della sfumatura di colore.
Osservazioni:
Usare nAngle per specificare la direzione della sfumatura di colore. Quando si specifica la direzione della sfumatura di colore, si specifica anche dove inizia la sfumatura di colore. Il valore 0 per nAngle indica che la sfumatura inizia dalla parte superiore del rettangolo. Man mano che nAngle aumenta, la posizione iniziale per la sfumatura viene spostata in senso antiorario in base all'angolo.
Esempio
Nell'esempio seguente viene illustrato come usare il FillGradient2
metodo della CDrawingManager
classe . Questo frammento di codice fa parte dell'esempio New Controls.
// 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
Riempie un rettangolo con un colore grigio specificato.
BOOL GrayRect(
CRect rect,
int nPercentage = -1,
COLORREF clrTransparent = (COLORREF)-1,
COLORREF clrDisabled = (COLORREF)-1);
Parametri
rect
[in] Area rettangolare da riempire.
nPercentage
[in] Percentuale di grigio desiderata nel rettangolo.
clrTransparent
[in] Colore trasparente.
clrDisabled
[in] Colore utilizzato da questo metodo per la deaturazione se nPercentage è impostato su -1.
Valore restituito
TRUE se il metodo ha avuto esito positivo; in caso contrario FALSE.
Osservazioni:
Per il parametro nPercentage, un valore inferiore indica un colore più scuro.
Il valore massimo per nPercentage è 200. Un valore maggiore di 200 non modifica l'aspetto del rettangolo. Se il valore è -1, questo metodo usa clrDisabled per limitare la saturazione del rettangolo.
CDrawingManager::HighlightRect
Evidenzia un'area rettangolare.
BOOL HighlightRect(
CRect rect,
int nPercentage = -1,
COLORREF clrTransparent = (COLORREF)-1,
int nTolerance = 0,
COLORREF clrBlend = (COLORREF)-1);
Parametri
rect
[in] Area rettangolare da evidenziare.
nPercentage
[in] Percentuale che indica come deve essere trasparente l'evidenziazione.
clrTransparent
[in] Colore trasparente.
nTolerance
[in] Intero compreso tra 0 e 255 che indica la tolleranza di colore.
clrBlend
[in] Colore di base per la fusione.
Valore restituito
TRUE se il metodo ha esito positivo; in caso contrario FALSE.
Osservazioni:
Se nPercentage è compreso tra 0 e 99, HighlightRect
usa l'algoritmo di fusione alfa. Per altre informazioni sulla fusione alfa, vedere Linee di fusione alfa e riempimenti. Se nPercentage è -1, questo metodo usa il livello di evidenziazione predefinito. Se nPercentage è 100, questo metodo non esegue alcuna operazione e restituisce TRUE.
Il metodo usa il parametro nTolerance per determinare se evidenziare l'area rettangolare. Per evidenziare il rettangolo, la differenza tra il colore di sfondo dell'applicazione e clrTransparent deve essere minore di nTolerance in ogni componente di colore (rosso, verde e blu).
CDrawingManager::HLStoRGB_ONE
Converte un colore da una rappresentazione HLS a una rappresentazione RGB.
static COLORREF __stdcall HLStoRGB_ONE(
double H,
double L,
double S);
Parametri
H
[in] Numero compreso tra 0 e 1 che rappresenta la tonalità del colore.
L
[in] Numero compreso tra 0 e 1 che indica la luminosità del colore.
S
[in] Numero compreso tra 0 e 1 che indica la saturazione per il colore.
Valore restituito
Rappresentazione RGB del colore HLS fornito.
Osservazioni:
Un colore può essere rappresentato come HSV (tonalità, saturazione e valore), HSL (tonalità, saturazione e luminosità) o RGB (rosso, verde e blu). Per altre informazioni sulle diverse rappresentazioni di colore, vedere Color.
Questo metodo e il CDrawingManager::HLStoRGB_TWO
metodo eseguono la stessa operazione, ma richiedono valori diversi per il parametro H . In questo metodo H è una percentuale del cerchio. CDrawingManager::HLStoRGB_TWO
Nel metodo H è un valore di grado compreso tra 0 e 360, che entrambi rappresentano il rosso. Ad esempio, con HLStoRGB_ONE
, il valore 0,25 per H equivale a un valore pari a 90 con HLStoRGB_TWO
.
CDrawingManager::HLStoRGB_TWO
Converte un colore da una rappresentazione HLS a una rappresentazione RGB.
static COLORREF __stdcall HLStoRGB_TWO(
double H,
double L,
double S);
Parametri
H
[in] Numero compreso tra 0 e 360 che rappresenta la tonalità del colore.
L
[in] Numero compreso tra 0 e 1 che indica la luminosità del colore.
S
[in] Numero compreso tra 0 e 1 che indica la saturazione per il colore.
Valore restituito
Rappresentazione RGB del colore HLS fornito.
Osservazioni:
Un colore può essere rappresentato come HSV (tonalità, saturazione e valore), HSL (tonalità, saturazione e luminosità) o RGB (rosso, verde e blu). Per altre informazioni sulle diverse rappresentazioni di colore, vedere Color.
Questo metodo e il metodo CDrawingManager::HLStoRGB_ONE eseguono la stessa operazione, ma richiedono valori diversi per il parametro H . In questo metodo, H è un valore di grado compreso tra 0 e 360, che entrambi rappresentano il rosso. Nel metodo CDrawingManager::HLStoRGB_ONE H è una percentuale del cerchio. Ad esempio, con HLStoRGB_ONE
, il valore 0,25 per H equivale a un valore pari a 90 con HLStoRGB_TWO
.
CDrawingManager::HSVtoRGB
Converte un colore da una rappresentazione HSV a una rappresentazione RGB.
static COLORREF __stdcall HSVtoRGB(
double H,
double S,
double V);
Parametri
H
[in] Numero compreso tra 0 e 360 che indica la tonalità del colore.
S
[in] Numero compreso tra 0 e 1 che indica la saturazione per il colore.
V
[in] Numero compreso tra 0 e 1 che indica il valore per il colore.
Valore restituito
Rappresentazione RGB del colore HSV fornito.
Osservazioni:
Un colore può essere rappresentato come HSV (tonalità, saturazione e valore), HSL (tonalità, saturazione e luminosità) o RGB (rosso, verde e blu). Per altre informazioni sulle diverse rappresentazioni di colore, vedere Color.
CDrawingManager::HuetoRGB
Converte un valore di tonalità in un componente rosso, verde o blu.
static double __stdcall HuetoRGB(
double m1,
double m2,
double h);
static BYTE __stdcall HueToRGB(
float rm1,
float rm2,
float rh);
Parametri
m1
[in] Vedere la sezione Osservazioni.
m2
[in] Vedere la sezione Osservazioni.
h
[in] Vedere la sezione Osservazioni.
rm1
[in] Vedere la sezione Osservazioni.
rm2
[in] Vedere la sezione Osservazioni.
Rh
[in] Vedere la sezione Osservazioni.
Valore restituito
Singolo componente rosso, verde o blu per la tonalità specificata.
Osservazioni:
Questo metodo è un metodo helper usato dalla CDrawingManager
classe per calcolare i singoli componenti rosso, verde e blu di un colore in una rappresentazione HSV o HSL. Questo metodo non è progettato per essere chiamato direttamente dal programmatore. I parametri di input sono valori che dipendono dall'algoritmo di conversione.
Per convertire un colore HSV o HSL in una rappresentazione RGB, chiamare uno dei metodi seguenti:
CDrawingManager::MirrorRect
Capovolge un'area rettangolare.
void MirrorRect(
CRect rect,
BOOL bHorz = TRUE);
Parametri
rect
[in] Rettangolo di delimitazione dell'area da capovolgere.
bHorz
[in] Parametro booleano che indica se il rettangolo si capovolge orizzontalmente o verticalmente.
Osservazioni:
Questo metodo può capovolgere qualsiasi area del contesto di dispositivo di proprietà della CDrawingManager
classe . Se bHorz è impostato su TRUE, questo metodo capovolge l'area orizzontalmente. In caso contrario, capovolge l'area verticalmente.
CDrawingManager::P ixelAlpha
Calcola il colore finale per un pixel semitrasparente.
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);
Parametri
srcPixel
[in] Colore iniziale per il pixel.
percento
[in] Numero compreso tra 0 e 100 che rappresenta la percentuale di trasparenza. Il valore 100 indica che il colore iniziale è completamente trasparente.
percentR
[in] Numero compreso tra 0 e 100 che rappresenta la percentuale di trasparenza per il componente rosso.
percentG
[in] Numero compreso tra 0 e 100 che rappresenta la percentuale di trasparenza per il componente verde.
percentB
[in] Numero compreso tra 0 e 100 che rappresenta la percentuale di trasparenza per il componente blu.
dstPixel
[in] Colore di base per il pixel.
Valore restituito
Colore finale per il pixel semitrasparente.
Osservazioni:
Si tratta di una classe helper per la colorazione di bitmap semitrasparenti e non è progettata per essere chiamata direttamente dal programmatore.
Quando usi la versione del metodo con dstPixel, il colore finale è una combinazione di dstPixel e srcPixel. Il colore srcPixel è il colore parzialmente trasparente rispetto al colore di base di dstPixel.
CDrawingManager::P repareShadowMask
Crea una bitmap che può essere usata come ombreggiatura.
static HBITMAP __stdcall PrepareShadowMask (
int nDepth,
COLORREF clrBase,
int iMinBrightness = 0,
int iMaxBrightness = 100);
Parametri
nDepth
[in] Larghezza e altezza dell'ombreggiatura.
clrBase
[in] Colore dell'ombreggiatura.
iMinBrightness
[in] Luminosità minima dell'ombreggiatura.
iMaxBrightness
[in] Luminosità massima dell'ombreggiatura.
Valore restituito
Handle per la bitmap creata se questo metodo ha esito positivo; in caso contrario NULL.
Osservazioni:
Se nDepth è impostato su 0, questo metodo viene chiuso e restituisce NULL. Se nDepth è minore di 3, la larghezza e l'altezza dell'ombreggiatura vengono impostate su 3 pixel.
CDrawingManager::RGBtoHSL
Converte un colore da una rappresentazione rosso, verde e blu (RGB) a una rappresentazione di tonalità, saturazione e leggerezza (HSL).
static void __stdcall RGBtoHSL(
COLORREF rgb,
double* H,
double* S,
double* L);
Parametri
Rgb
[in] Colore nei valori RGB.
H
[out] Puntatore a un valore double in cui il metodo archivia la tonalità per il colore.
S
[out] Puntatore a un valore double in cui il metodo archivia la saturazione per il colore.
L
[out] Puntatore a un doppio in cui il metodo archivia la leggerezza per il colore.
Osservazioni:
Un colore può essere rappresentato come HSV (tonalità, saturazione e valore), HSL (tonalità, saturazione e luminosità) o RGB (rosso, verde e blu). Per altre informazioni sulle diverse rappresentazioni di colore, vedere Color.
Il valore restituito per H è rappresentato come frazione compresa tra 0 e 1 dove 0 e 1 rappresentano il rosso. I valori restituiti per S e L sono numeri compresi tra 0 e 1.
CDrawingManager::RGBtoHSV
Converte un colore da una rappresentazione RGB a una rappresentazione HSV.
static void __stdcall RGBtoHSV(
COLORREF rgb,
double* H,
double* S,
double* V);
Parametri
Rgb
[in] Colore da convertire in una rappresentazione RGB.
H
[out] Puntatore a un valore double in cui questo metodo archivia la tonalità risultante per il colore.
S
[out] Puntatore a un valore double in cui questo metodo archivia la saturazione risultante per il colore.
V
[out] Puntatore a un valore double in cui questo metodo archivia il valore risultante per il colore.
Osservazioni:
Un colore può essere rappresentato come HSV (tonalità, saturazione e valore), HSL (tonalità, saturazione e luminosità) o RGB (rosso, verde e blu). Per altre informazioni sulle diverse rappresentazioni di colore, vedere Color.
Il valore restituito per H è un numero compreso tra 0 e 360 dove 0 e 360 indicano il rosso. I valori restituiti per S e V sono numeri compresi tra 0 e 1.
CDrawingManager::SetAlphaPixel
Colora un pixel trasparente in una bitmap.
static void __stdcall SetAlphaPixel(
COLORREF* pBits,
CRect rect,
int x,
int y,
int percent,
int iShadowSize,
COLORREF clrBase = (COLORREF)-1,
BOOL bIsRight = TRUE);
Parametri
pBit
[in] Puntatore ai valori di bit per la bitmap.
rect
[in] Area rettangolare nell'applicazione. Il gestore disegno disegna un'ombreggiatura sotto e a destra di quest'area.
x
[in] Coordinata orizzontale del pixel da colorare.
y
[in] Coordinata verticale del pixel da colorare.
percento
[in] Percentuale di trasparenza.
iShadowSize
[in] Larghezza e altezza dell'ombreggiatura.
clrBase
[in] Colore dell'ombreggiatura.
bIsRight
[in] Parametro booleano che indica quale pixel colorare. Per ulteriori informazioni, vedere le sezione Note.
Osservazioni:
Questo metodo è un metodo helper usato dal metodo CDrawingManager::D rawShadow . Se si vuole disegnare un'ombreggiatura, è consigliabile chiamare CDrawingManager::DrawShadow
invece.
Se bIsRight è impostato su TRUE, il pixel al colore viene misurato x pixel dal bordo destro di rect. Se è FALSE, il pixel da colorare viene misurato x pixel dal bordo sinistro di rect.
CDrawingManager::SetPixel
Modifica un singolo pixel in una bitmap con il colore specificato.
static void __stdcall SetPixel(
COLORREF* pBits,
int cx,
int cy,
int x,
int y,
COLORREF color);
Parametri
pBit
[in] Puntatore ai valori di bit della bitmap.
cx
[in] Larghezza totale della bitmap.
Cy
[in] Altezza totale della bitmap.
x
[in] Coordinata x del pixel nella bitmap da modificare.
y
[in] Coordinata y del pixel nella bitmap da modificare.
color
[in] Nuovo colore per il pixel identificato dalle coordinate fornite.
CDrawingManager::SmartMixColors
Combina due colori in base a un rapporto ponderato.
static COLORREF __stdcall SmartMixColors(
COLORREF color1,
COLORREF color2,
double dblLumRatio = 1.,
int k1 = 1,
int k2 = 1);
Parametri
color1
[in] Primo colore da combinare.
color2
[in] Secondo colore da combinare.
dblLumRatio
[in] Rapporto per la luminosità del nuovo colore. SmartMixColors
moltiplica la luminosità del colore misto in base a questo rapporto prima di determinare un colore finale.
k1
[in] Rapporto ponderato per il primo colore.
k2
[in] Rapporto ponderato per il secondo colore.
Valore restituito
Colore che rappresenta una combinazione ponderata dei colori forniti.
Osservazioni:
Questo metodo ha esito negativo e viene restituito un errore se k1 o k2 è minore di zero. Se entrambi questi parametri sono impostati su 0, il metodo restituisce RGB(0, 0, 0)
.
Il rapporto ponderato viene calcolato con la formula seguente: (color1 * k1 + color2 * k2)/(k1 + k2). Dopo aver determinato il rapporto ponderato, il metodo calcola la luminosità per il colore misto. Moltiplica quindi la luminosità per dblLumRatio. Se il valore è maggiore di 1,0, il metodo imposta la luminosità per il colore misto sul nuovo valore. In caso contrario, la luminosità è impostata su 1,0.
CDrawingManager::D rawRotated
Ruota il contenuto di un controller di dominio di origine all'interno del rettangolo specificato di 90 gradi.
void DrawRotated(
CRect rectDest,
CDC& dcSrc,
BOOL bClockWise);
Parametri
rectDest
Rettangolo di destinazione.
dcSrc
Contesto del dispositivo di origine.
bClockWise
TRUE indica la rotazione +90 gradi; FALSE indica la rotazione di -90 gradi.