CDrawingManager-Klasse
Die CDrawingManager
Klasse implementiert komplexe Zeichnungsalgorithmen.
Syntax
class CDrawingManager : public CObject
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CDrawingManager::CDrawingManager | Erstellt ein CDrawingManager -Objekt. |
CDrawingManager::~CDrawingManager |
Destruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CDrawingManager::CreateBitmap_32 | Erstellt eine 32-Bit-geräteunabhängige Bitmap (DIB), in die Anwendungen direkt schreiben können. |
CDrawingManager::D rawAlpha | Zeigt Bitmaps mit transparenten oder halbtransparenten Pixeln an. |
CDrawingManager::D rawRotated | Dreht einen Quell-DC-Inhalt innerhalb des angegebenen Rechtecks um +/- 90 Grad |
CDrawingManager::D rawEllipse | Zeichnet eine Auslassungslinie mit den angegebenen Füll- und Rahmenfarben. |
CDrawingManager::D rawGradientRing | Zeichnet einen Ring und füllt ihn mit einem Farbverlauf. |
CDrawingManager::D rawLine, CDrawingManager::D rawLineA | Zeichnet eine Linie. |
CDrawingManager::D rawRect | Zeichnet ein Rechteck mit den angegebenen Füll- und Rahmenfarben. |
CDrawingManager::D rawShadow | Zeichnet einen Schatten für einen rechteckigen Bereich. |
CDrawingManager::Fill4ColorsGradient | Füllt einen rechteckigen Bereich mit zwei Farbverläufen. |
CDrawingManager::FillGradient | Füllt einen rechteckigen Bereich mit einem angegebenen Farbverlauf. |
CDrawingManager::FillGradient2 | Füllt einen rechteckigen Bereich mit einem angegebenen Farbverlauf. Die Richtung der Farbänderung des Farbverlaufs wird ebenfalls angegeben. |
CDrawingManager::GrayRect | Füllt ein Rechteck mit einer angegebenen grauen Farbe. |
CDrawingManager::HighlightRect | Hebt einen rechteckigen Bereich hervor. |
CDrawingManager::HLStoRGB_ONE | Konvertiert eine Farbe aus einer HLS-Darstellung in eine RGB-Darstellung. |
CDrawingManager::HLStoRGB_TWO | Konvertiert eine Farbe aus einer HLS-Darstellung in eine RGB-Darstellung. |
CDrawingManager::HSVtoRGB | Konvertiert eine Farbe aus einer HSV-Darstellung in eine RGB-Darstellung. |
CDrawingManager::HuetoRGB | Hilfsmethode, die einen Farbtonwert in eine rote, grüne oder blaue Komponente konvertiert. |
CDrawingManager::MirrorRect | Kippt einen rechteckigen Bereich. |
CDrawingManager::P ixelAlpha | Hilfsmethode, die die endgültige Farbe für ein halbtransparente Pixel bestimmt. |
CDrawingManager::P repareShadowMask | Erstellt eine Bitmap, die als Schatten verwendet werden kann. |
CDrawingManager::RGBtoHSL | Konvertiert eine Farbe aus einer RGB-Darstellung in eine HSL-Darstellung. |
CDrawingManager::RGBtoHSV | Konvertiert eine Farbe aus einer RGB-Darstellung in eine HSV-Darstellung. |
CDrawingManager::SetAlphaPixel | Hilfsmethode, die ein teilweise transparentes Pixel in einer Bitmap einfarbig. |
CDrawingManager::SetPixel | Hilfsmethode, die ein einzelnes Pixel in einer Bitmap in die angegebene Farbe ändert. |
CDrawingManager::SmartMixColors | Kombiniert zwei Farben basierend auf einem gewichteten Verhältnis. |
Hinweise
Die CDrawingManager
Klasse stellt Funktionen zum Zeichnen von Schatten, Farbverläufen und hervorgehobenen Rechtecke bereit. Es führt auch Alpha-Blending durch. Sie können diese Klasse verwenden, um die Benutzeroberfläche Ihrer Anwendung direkt zu ändern.
Vererbungshierarchie
CObject
CDrawingManager
Anforderungen
Header: afxdrawmanager.h
CDrawingManager::CDrawingManager
Erstellt ein CDrawingManager -Objekt.
CDrawingManager(CDC& dc);
Parameter
dc
[in] Ein Verweis auf einen Gerätekontext. Dieser CDrawingManager
Kontext wird für die Zeichnung verwendet.
CDrawingManager::CreateBitmap_32
Erstellt eine 32-Bit-geräteunabhängige Bitmap (DIB), in die Anwendungen direkt schreiben können.
static HBITMAP __stdcall CreateBitmap_32(
const CSize& size,
void** pBits);
static HBITMAP __stdcall CreateBitmap_32(
HBITMAP bitmap,
COLORREF clrTransparent = -1);
Parameter
size
[in] Ein CSize-Parameter , der die Größe der Bitmap angibt.
pBits
[out] Ein Zeiger auf einen Datenzeiger, der die Position der BIT-Werte des DIB empfängt.
Bitmap
Ein Handle für die ursprüngliche Bitmap
clrTransparent
Ein RGB-Wert, der transparente Farbe der ursprünglichen Bitmap angibt.
Rückgabewert
Ein Handle für die neu erstellte DIB-Bitmap, wenn diese Methode erfolgreich ist; andernfalls NULL.
Hinweise
Weitere Informationen zum Erstellen einer DIB-Bitmap finden Sie unter CreateDIBSection.
CDrawingManager::D rawAlpha
Zeigt Bitmaps mit transparenten oder halbtransparenten Pixeln an.
void DrawAlpha(
CDC* pDstDC,
const CRect& rectDst,
CDC* pSrcDC,
const CRect& rectSrc);
Parameter
pDstDC
[in] Ein Zeiger auf den Gerätekontext für das Ziel.
rectDst
[in] Das Zielrechteck.
pSrcDC
[in] Ein Zeiger auf den Gerätekontext für die Quelle.
rectSrc
[in] Das Quellrechteck.
Hinweise
Diese Methode führt Alpha-Blending für zwei Bitmaps durch. Weitere Informationen zur Alphamischung finden Sie unter AlphaBlend im Windows SDK.
CDrawingManager::D rawEllipse
Zeichnet eine Auslassungslinie mit den angegebenen Füll- und Rahmenfarben.
void DrawEllipse(
const CRect& rect,
COLORREF clrFill,
COLORREF clrLine);
Parameter
rect
[in] Das umgebende Rechteck für die Ellipse.
clrFill
[in] Die Farbe, die diese Methode verwendet, um die Auslassungspunkte auszufüllen.
clrLine
[in] Die Farbe, die diese Methode als Rahmen der Ellipse verwendet.
Hinweise
Diese Methode gibt ohne Zeichnen einer Ellipse zurück, wenn eine der Farben auf -1 festgelegt ist. Es wird auch ohne Zeichnen einer Ellipse zurückgegeben, wenn eine der Dimensionen des umgebenden Rechtecks 0 ist.
CDrawingManager::D rawGradientRing
Zeichnet einen Ring und füllt ihn mit einem Farbverlauf.
BOOL DrawGradientRing(
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
COLORREF colorBorder,
int nAngle,
int nWidth,
COLORREF clrFace = (COLORREF)-1);
Parameter
rect
[in] Ein CRect-Parameter , der die Grenze für den Farbverlaufsring angibt.
colorStart
[in] Die erste Farbe für den Farbverlauf.
colorFinish
[in] Die letzte Farbe für den Farbverlauf.
colorBorder
[in] Die Farbe des Rahmens.
nAngle
[in] Ein Parameter, der den anfänglichen Zeichnungswinkel des Farbverlaufs angibt. Dieser Wert sollte zwischen 0 und 360 sein.
nWidth
[in] Die Breite des Rahmens für den Ring.
clrFace
[in] Die Farbe des Innenbereichs des Rings.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Das durch rechteck definierte Rechteck muss mindestens 5 Pixel breit und 5 Pixel hoch sein.
CDrawingManager::D rawLine, CDrawingManager::D rawLineA
Zeichnet eine Linie.
void DrawLine(
int x1,
int y1,
int x2,
int y2,
COLORREF clrLine);
void DrawLineA(
double x1,
double y1,
double x2,
double y2,
COLORREF clrLine);
Parameter
x1
[in] Die x-Koordinate, an der die Linie beginnt.
y1
[in] Die y-Koordinate, an der die Linie beginnt.
x2
[in] Die x-Koordinate, an der die Linie endet.
y2
[in] Die y-Koordinate, an der die Linie endet.
clrLine
[in] Die Farbe der Linie.
Hinweise
Diese Methode schlägt fehl, wenn clrLine gleich -1 ist.
CDrawingManager::D rawRect
Zeichnet ein Rechteck mit den angegebenen Füll- und Rahmenfarben.
void DrawRect(
const CRect& rect,
COLORREF clrFill,
COLORREF clrLine);
Parameter
rect
[in] Die Begrenzungen für das Rechteck.
clrFill
[in] Die Farbe, die diese Methode verwendet, um das Rechteck auszufüllen.
clrLine
[in] Die Farbe, die diese Methode für den Rahmen des Rechtecks verwendet.
Hinweise
Diese Methode gibt ohne Zeichnen eines Rechtecks zurück, wenn eine der Farben auf -1 festgelegt ist. Es wird auch zurückgegeben, wenn eine der Dimensionen des Rechtecks 0 ist.
CDrawingManager::D rawShadow
Zeichnet einen Schatten für einen rechteckigen Bereich.
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);
Parameter
rect
[in] Ein rechteckiger Bereich in Ihrer Anwendung. Der Zeichnungs-Manager zeichnet unter diesem Bereich einen Schatten.
nDepth
[in] Die Breite und Höhe des Schattens.
iMinBrightness
[in] Die minimale Helligkeit des Schattens.
iMaxBrightness
[in] Die maximale Helligkeit des Schattens.
pBmpSaveBottom
[in] Ein Zeiger auf eine Bitmap, die das Bild für den unteren Teil des Schattens enthält.
pBmpSaveRight
[in] Ein Zeiger auf eine Bitmap, die das Bild für den Schatten enthält, der auf der rechten Seite des Rechtecks gezeichnet wird.
clrBase
[in] Die Farbe des Schattens.
bRightShadow
[in] Ein boolescher Parameter, der angibt, wie der Schatten gezeichnet wird. Wenn bRightShadow ist TRUE
, DrawShadow
zeichnet ein Schatten auf der rechten Seite des Rechtecks.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Sie können zwei gültige Bitmaps für die unteren und rechten Schatten bereitstellen, indem Sie die Parameter pBmpSaveBottom und pBmpSaveRight verwenden. Wenn diese CBitmap-Objekte über ein angefügtes GDI-Objekt verfügen, DrawShadow
werden diese Bitmaps als Schatten verwendet. Wenn die CBitmap
Parameter nicht über ein angefügtes GDI-Objekt verfügen, DrawShadow
zeichnet der Schatten und fügt die Bitmaps an die Parameter an. In zukünftigen Aufrufen DrawShadow
können Sie diese Bitmaps bereitstellen, um den Zeichnungsprozess zu beschleunigen. Weitere Informationen zu den CBitmap
Klassen- und GDI-Objekten finden Sie unter Graphic Objects.
Wenn einer dieser Parameter lautet NULL
, DrawShadow
wird der Schatten automatisch gezeichnet.
Wenn Sie bRightShadow auf FALSE festlegen, wird der Schatten unter und links neben dem rechteckigen Bereich gezeichnet.
Beispiel
Im folgenden Beispiel wird die Verwendung der DrawShadow
Methode der CDrawingManager
Klasse veranschaulicht. Dieser Codeausschnitt ist Teil des Prop Sheet Demo-Beispiels.
// 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
Füllt einen rechteckigen Bereich mit zwei Farbverläufen.
void Fill4ColorsGradient(
CRect rect,
COLORREF colorStart1,
COLORREF colorFinish1,
COLORREF colorStart2,
COLORREF colorFinish2,
BOOL bHorz = TRUE,
int nPercentage = 50);
Parameter
rect
[in] Das zu füllende Rechteck.
colorStart1
[in] Die erste Farbe für den ersten Farbverlauf.
colorFinish1
[in] Die letzte Farbe für den ersten Farbverlauf.
colorStart2
[in] Die erste Farbe für den zweiten Farbverlauf.
colorFinish2
[in] Die letzte Farbe für den zweiten Farbverlauf.
bHorz
[in] Ein boolescher Parameter, der angibt, ob Fill4ColorsGradient
ein horizontaler oder vertikaler Farbverlauf farben ist. TRUE gibt einen horizontalen Farbverlauf an.
nPercentage
[in] Eine ganze Zahl zwischen 0 und 100. Dieser Wert gibt den Prozentsatz des Rechtecks an, das mit dem ersten Farbverlauf gefüllt werden soll.
Hinweise
Wenn ein Rechteck mit zwei Farbverläufen gefüllt ist, befinden sie sich je nach Wert von bHorz entweder übereinander oder nebeneinander. Jeder Farbverlauf wird unabhängig von der Methode CDrawingManager::FillGradient berechnet.
Diese Methode generiert einen Assertionsfehler, wenn nPercentage kleiner als 0 oder mehr als 100 ist.
CDrawingManager::FillGradient
Füllt einen rechteckigen Bereich mit dem angegebenen Farbverlauf.
void FillGradient(
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
BOOL bHorz = TRUE,
int nStartFlatPercentage = 0,
int nEndFlatPercentage = 0);
Parameter
rect
[in] Der rechteckige Bereich, der ausgefüllt werden soll.
colorStart
[in] Die erste Farbe für den Farbverlauf.
colorFinish
[in] Die letzte Farbe für den Farbverlauf.
bHorz
[in] Ein boolescher Parameter, der angibt, ob FillGradient
ein horizontaler oder vertikaler Farbverlauf gezeichnet werden soll.
nStartFlatPercentage
[in] Der Prozentsatz des Rechtecks, das FillGradient
mit colorStart gefüllt wird, bevor der Farbverlauf beginnt.
nEndFlatPercentage
[in] Der Prozentsatz des Rechtecks, das FillGradient
nach Abschluss des Farbverlaufs mit colorFinish gefüllt wird.
Beispiel
Im folgenden Beispiel wird die Verwendung der FillGradient
Methode der CDrawingManager
Klasse veranschaulicht. Dieser Codeausschnitt ist Teil des MS Office 2007-Demobeispiels.
// CRect rectScreen
// CDrawingManager dm
dm.FillGradient(rectScreen, RGB(114, 125, 152), RGB(178, 185, 202), TRUE);
CDrawingManager::FillGradient2
Füllt einen rechteckigen Bereich mit einem angegebenen Farbverlauf.
void FillGradient2 (
CRect rect,
COLORREF colorStart,
COLORREF colorFinish,
int nAngle = 0);
Parameter
rect
[in] Der rechteckige Bereich, der ausgefüllt werden soll.
colorStart
[in] Die erste Farbe des Farbverlaufs.
colorFinish
[in] Die letzte Farbe des Farbverlaufs.
nAngle
[in] Eine ganze Zahl zwischen 0 und 360. Dieser Parameter gibt die Richtung des Farbverlaufs an.
Hinweise
Verwenden Sie nAngle , um die Richtung des Farbverlaufs anzugeben. Wenn Sie die Richtung des Farbverlaufs angeben, geben Sie auch an, wo der Farbverlauf beginnt. Ein Wert von 0 für nAngle gibt an, dass der Farbverlauf vom oberen Rand des Rechtecks beginnt. Wenn nAngle zunimmt, bewegt sich die Ausgangsposition für den Farbverlauf basierend auf dem Winkel in eine gegen den Uhrzeigersinn ausgerichtete Richtung.
Beispiel
Im folgenden Beispiel wird die Verwendung der FillGradient2
Methode der CDrawingManager
Klasse veranschaulicht. Dieser Codeausschnitt ist Teil des Beispiels "Neue Steuerelemente".
// 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
Füllt ein Rechteck mit einer angegebenen grauen Farbe.
BOOL GrayRect(
CRect rect,
int nPercentage = -1,
COLORREF clrTransparent = (COLORREF)-1,
COLORREF clrDisabled = (COLORREF)-1);
Parameter
rect
[in] Der rechteckige Bereich, der ausgefüllt werden soll.
nPercentage
[in] Der Prozentsatz von Grau, der im Rechteck angezeigt werden soll.
clrTransparent
[in] Die transparente Farbe.
clrDisabled
[in] Die Farbe, die diese Methode für die Desättigung verwendet, wenn nPercentage auf -1 festgelegt ist.
Rückgabewert
TRUE, wenn die Methode erfolgreich war; andernfalls FALSE.
Hinweise
Für den Parameter nPercentage gibt ein niedrigerer Wert eine dunkleere Farbe an.
Der Maximalwert für nPercentage beträgt 200. Ein Wert, der größer als 200 ist, ändert nicht die Darstellung des Rechtecks. Wenn der Wert -1 ist, verwendet diese Methode clrDisabled , um die Sättigung des Rechtecks einzuschränken.
CDrawingManager::HighlightRect
Hebt einen rechteckigen Bereich hervor.
BOOL HighlightRect(
CRect rect,
int nPercentage = -1,
COLORREF clrTransparent = (COLORREF)-1,
int nTolerance = 0,
COLORREF clrBlend = (COLORREF)-1);
Parameter
rect
[in] Ein rechteckiger Bereich, der hervorgehoben werden soll.
nPercentage
[in] Ein Prozentsatz, der angibt, wie transparent die Hervorhebung sein soll.
clrTransparent
[in] Die transparente Farbe.
nTolerance
[in] Eine ganze Zahl zwischen 0 und 255, die die Farbtoleranz angibt.
clrBlend
[in] Die Basisfarbe für die Vermischung.
Rückgabewert
TRUE, wenn die Methode erfolgreich ist; andernfalls FALSE.
Hinweise
Wenn nPercentage zwischen 0 und 99 liegt, HighlightRect
wird der Alphamischungsalgorithmus verwendet. Weitere Informationen zur Alphamischung finden Sie unter Alpha-Blending-Linien und -Füllungen. Wenn nPercentage -1 ist, verwendet diese Methode die Standardheraufhebungsebene . Wenn nPercentage 100 ist, führt diese Methode nichts aus und gibt WAHR zurück.
Die Methode verwendet den Parameter "nTolerance ", um zu bestimmen, ob der rechteckige Bereich hervorgehoben werden soll. Um das Rechteck hervorzuheben, muss der Unterschied zwischen der Hintergrundfarbe Ihrer Anwendung und clrTransparent in jeder Farbkomponente (Rot, Grün und Blau) kleiner als nTolerance sein.
CDrawingManager::HLStoRGB_ONE
Konvertiert eine Farbe aus einer HLS-Darstellung in eine RGB-Darstellung.
static COLORREF __stdcall HLStoRGB_ONE(
double H,
double L,
double S);
Parameter
H
[in] Eine Zahl zwischen 0 und 1, die den Farbton für die Farbe darstellt.
L
[in] Eine Zahl zwischen 0 und 1, die die Leuchtdichte für die Farbe angibt.
S
[in] Eine Zahl zwischen 0 und 1, die die Sättigung für die Farbe angibt.
Rückgabewert
Die RGB-Darstellung der bereitgestellten HLS-Farbe.
Hinweise
Eine Farbe kann als HSV (Farbton, Sättigung und Wert), HSL (Farbton, Sättigung und Leuchtdichte) oder RGB (Rot, Grün und Blau) dargestellt werden. Weitere Informationen zu den verschiedenen Farbdarstellungen finden Sie unter "Farbe".
Diese Methode und die CDrawingManager::HLStoRGB_TWO
Methode führen denselben Vorgang aus, erfordern jedoch unterschiedliche Werte für den H-Parameter . In dieser Methode ist H ein Prozentsatz des Kreises. In der CDrawingManager::HLStoRGB_TWO
Methode ist H ein Gradwert zwischen 0 und 360, der beide rot darstellt. Beispielsweise entspricht ein HLStoRGB_ONE
Wert von 0,25 für H einem Wert von 90 mit HLStoRGB_TWO
.
CDrawingManager::HLStoRGB_TWO
Konvertiert eine Farbe aus einer HLS-Darstellung in eine RGB-Darstellung.
static COLORREF __stdcall HLStoRGB_TWO(
double H,
double L,
double S);
Parameter
H
[in] Eine Zahl zwischen 0 und 360, die den Farbton für die Farbe darstellt.
L
[in] Eine Zahl zwischen 0 und 1, die die Leuchtdichte für die Farbe angibt.
S
[in] Eine Zahl zwischen 0 und 1, die die Sättigung für die Farbe angibt.
Rückgabewert
Die RGB-Darstellung der bereitgestellten HLS-Farbe.
Hinweise
Eine Farbe kann als HSV (Farbton, Sättigung und Wert), HSL (Farbton, Sättigung und Leuchtdichte) oder RGB (Rot, Grün und Blau) dargestellt werden. Weitere Informationen zu den verschiedenen Farbdarstellungen finden Sie unter "Farbe".
Diese Methode und die CDrawingManager::HLStoRGB_ONE-Methode führen denselben Vorgang aus, erfordern jedoch unterschiedliche Werte für den H-Parameter . Bei dieser Methode ist H ein Gradwert zwischen 0 und 360, der rot darstellt. In der CDrawingManager::HLStoRGB_ONE-Methode ist H ein Prozentsatz des Kreises. Beispielsweise entspricht ein HLStoRGB_ONE
Wert von 0,25 für H einem Wert von 90 mit HLStoRGB_TWO
.
CDrawingManager::HSVtoRGB
Konvertiert eine Farbe aus einer HSV-Darstellung in eine RGB-Darstellung.
static COLORREF __stdcall HSVtoRGB(
double H,
double S,
double V);
Parameter
H
[in] Eine Zahl zwischen 0 und 360, die den Farbton für die Farbe angibt.
S
[in] Eine Zahl zwischen 0 und 1, die die Sättigung für die Farbe angibt.
B
[in] Eine Zahl zwischen 0 und 1, die den Wert für die Farbe angibt.
Rückgabewert
Die RGB-Darstellung der bereitgestellten HSV-Farbe.
Hinweise
Eine Farbe kann als HSV (Farbton, Sättigung und Wert), HSL (Farbton, Sättigung und Leuchtdichte) oder RGB (Rot, Grün und Blau) dargestellt werden. Weitere Informationen zu den verschiedenen Farbdarstellungen finden Sie unter "Farbe".
CDrawingManager::HuetoRGB
Wandelt einen Farbtonwert in eine rote, grüne oder blaue Komponente um.
static double __stdcall HuetoRGB(
double m1,
double m2,
double h);
static BYTE __stdcall HueToRGB(
float rm1,
float rm2,
float rh);
Parameter
m1
[in] Siehe Anmerkungen.
m2
[in] Siehe Anmerkungen.
h
[in] Siehe Anmerkungen.
rm1
[in] Siehe Anmerkungen.
rm2
[in] Siehe Anmerkungen.
Rh
[in] Siehe Anmerkungen.
Rückgabewert
Die individuelle rote, grüne oder blaue Komponente für den bereitgestellten Farbton.
Hinweise
Diese Methode ist eine Hilfsmethode, die von der CDrawingManager
Klasse verwendet wird, um die einzelnen roten, grünen und blauen Komponenten einer Farbe in einer HSV- oder HSL-Darstellung zu berechnen. Diese Methode ist nicht so konzipiert, dass sie direkt vom Programmierer aufgerufen wird. Die Eingabeparameter sind Werte, die vom Konvertierungsalgorithmus abhängen.
Rufen Sie eine der folgenden Methoden auf, um eine HSV- oder HSL-Farbe in eine RGB-Darstellung zu konvertieren:
CDrawingManager::MirrorRect
Kippt einen rechteckigen Bereich.
void MirrorRect(
CRect rect,
BOOL bHorz = TRUE);
Parameter
rect
[in] Das umgebende Rechteck des zu kippenden Bereichs.
bHorz
[in] Ein boolescher Parameter, der angibt, ob das Rechteck horizontal oder vertikal kippt.
Hinweise
Diese Methode kann einen beliebigen Bereich des Gerätekontexts kippen, der sich im Besitz der CDrawingManager
Klasse befindet. Wenn bHorz auf TRUE festgelegt ist, kippt diese Methode den Bereich horizontal. Andernfalls kippt er den Bereich vertikal.
CDrawingManager::P ixelAlpha
Berechnet die endgültige Farbe für ein halbtransparentes Pixel.
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);
Parameter
srcPixel
[in] Die erste Farbe für das Pixel.
Prozent
[in] Eine Zahl zwischen 0 und 100, die den Prozentsatz der Transparenz darstellt. Der Wert 100 gibt an, dass die ursprüngliche Farbe vollständig transparent ist.
PercentR
[in] Eine Zahl zwischen 0 und 100, die den Prozentsatz der Transparenz für die rote Komponente darstellt.
PercentG
[in] Eine Zahl zwischen 0 und 100, die den Prozentsatz der Transparenz für die grüne Komponente darstellt.
PercentB
[in] Eine Zahl zwischen 0 und 100, die den Prozentsatz der Transparenz für die blaue Komponente darstellt.
dstPixel
[in] Die Basisfarbe für das Pixel.
Rückgabewert
Die endgültige Farbe für das semitransparente Pixel.
Hinweise
Dies ist eine Hilfsklasse zum Färben von semitransparenten Bitmaps und ist nicht so konzipiert, dass sie direkt vom Programmierer aufgerufen werden.
Wenn Sie die Version der Methode mit dstPixel verwenden, ist die endgültige Farbe eine Kombination aus dstPixel und srcPixel. Die srcPixel-Farbe ist die teilweise transparente Farbe über der Basisfarbe von dstPixel.
CDrawingManager::P repareShadowMask
Erstellt eine Bitmap, die als Schatten verwendet werden kann.
static HBITMAP __stdcall PrepareShadowMask (
int nDepth,
COLORREF clrBase,
int iMinBrightness = 0,
int iMaxBrightness = 100);
Parameter
nDepth
[in] Die Breite und Höhe des Schattens.
clrBase
[in] Die Farbe des Schattens.
iMinBrightness
[in] Die minimale Helligkeit des Schattens.
iMaxBrightness
[in] Die maximale Helligkeit des Schattens.
Rückgabewert
Ein Handle für die erstellte Bitmap, wenn diese Methode erfolgreich ist; andernfalls NULL.
Hinweise
Wenn nDepth auf 0 festgelegt ist, beendet und gibt NULL zurück. Wenn nDepth kleiner als 3 ist, wird die Breite und Höhe des Schattens auf 3 Pixel festgelegt.
CDrawingManager::RGBtoHSL
Wandelt eine Farbe aus einer Rot-, Grün- und Blaudarstellung (RGB) in eine Farbton-, Sättigungs- und Helligkeitsdarstellung (HSL) um.
static void __stdcall RGBtoHSL(
COLORREF rgb,
double* H,
double* S,
double* L);
Parameter
RGB
[in] Die Farbe in RGB-Werten.
H
[out] Ein Zeiger auf ein Double, in dem die Methode den Farbton für die Farbe speichert.
S
[out] Ein Zeiger auf ein Double, in dem die Methode die Sättigung für die Farbe speichert.
L
[out] Ein Zeiger auf ein Double, in dem die Methode die Leichtigkeit für die Farbe speichert.
Hinweise
Eine Farbe kann als HSV (Farbton, Sättigung und Wert), HSL (Farbton, Sättigung und Leuchtdichte) oder RGB (Rot, Grün und Blau) dargestellt werden. Weitere Informationen zu den verschiedenen Farbdarstellungen finden Sie unter "Farbe".
Der zurückgegebene Wert für H wird als Bruch zwischen 0 und 1 dargestellt, wobei sowohl 0 als auch 1 rot dargestellt werden. Die zurückgegebenen Werte für S und L sind Zahlen zwischen 0 und 1.
CDrawingManager::RGBtoHSV
Konvertiert eine Farbe aus einer RGB-Darstellung in eine HSV-Darstellung.
static void __stdcall RGBtoHSV(
COLORREF rgb,
double* H,
double* S,
double* V);
Parameter
RGB
[in] Die Farbe, die in einer RGB-Darstellung konvertiert werden soll.
H
[out] Ein Zeiger auf ein Double, in dem diese Methode den resultierenden Farbton für die Farbe speichert.
S
[out] Ein Zeiger auf ein Double, in dem diese Methode die resultierende Sättigung für die Farbe speichert.
B
[out] Ein Zeiger auf ein Double, in dem diese Methode den resultierenden Wert für die Farbe speichert.
Hinweise
Eine Farbe kann als HSV (Farbton, Sättigung und Wert), HSL (Farbton, Sättigung und Leuchtdichte) oder RGB (Rot, Grün und Blau) dargestellt werden. Weitere Informationen zu den verschiedenen Farbdarstellungen finden Sie unter "Farbe".
Der zurückgegebene Wert für H ist eine Zahl zwischen 0 und 360, wobei sowohl 0 als auch 360 rot angeben. Die Rückgabewerte für S und V sind Zahlen zwischen 0 und 1.
CDrawingManager::SetAlphaPixel
Farben eines transparenten Pixels in einer Bitmap.
static void __stdcall SetAlphaPixel(
COLORREF* pBits,
CRect rect,
int x,
int y,
int percent,
int iShadowSize,
COLORREF clrBase = (COLORREF)-1,
BOOL bIsRight = TRUE);
Parameter
pBits
[in] Ein Zeiger auf die Bitwerte für die Bitmap.
rect
[in] Ein rechteckiger Bereich in Ihrer Anwendung. Der Zeichnungsmanager zeichnet unter und rechts neben diesem Bereich einen Schatten.
x
[in] Die horizontale Koordinate des Pixels in Farbe.
y
[in] Die vertikale Koordinate des zu farbende Pixels.
Prozent
[in] Der Prozentsatz der Transparenz.
iShadowSize
[in] Die Breite und Höhe des Schattens.
clrBase
[in] Die Farbe des Schattens.
bIsRight
[in] Ein boolescher Parameter, der angibt, welches Pixel farbe soll. Weitere Informationen finden Sie im Abschnitt Hinweise.
Hinweise
Diese Methode ist eine Hilfsmethode, die von der CDrawingManager::D rawShadow-Methode verwendet wird. Es wird empfohlen, CDrawingManager::DrawShadow
stattdessen einen Schatten zu zeichnen.
Wenn bIsRight auf TRUE festgelegt ist, wird das Pixel zu Farbe x Pixel vom rechten Rand des Rechtecks gemessen. Wenn es FALSCH ist, wird das zu farbende Pixel x Pixel vom linken Rand des Rechtecks gemessen.
CDrawingManager::SetPixel
Ändert ein einzelnes Pixel in einer Bitmap in die angegebene Farbe.
static void __stdcall SetPixel(
COLORREF* pBits,
int cx,
int cy,
int x,
int y,
COLORREF color);
Parameter
pBits
[in] Ein Zeiger auf die Bitwerte der Bitmap.
cx
[in] Die Gesamtbreite der Bitmap.
Cy
[in] Die Gesamthöhe der Bitmap.
x
[in] Die x-Koordinate des Pixels in der Bitmap, die geändert werden soll.
y
[in] Die y-Koordinate des Pixels in der Bitmap, die geändert werden soll.
color
[in] Die neue Farbe für das Pixel, das durch die angegebenen Koordinaten identifiziert wird.
CDrawingManager::SmartMixColors
Kombiniert zwei Farben basierend auf einem gewichteten Verhältnis.
static COLORREF __stdcall SmartMixColors(
COLORREF color1,
COLORREF color2,
double dblLumRatio = 1.,
int k1 = 1,
int k2 = 1);
Parameter
Farbe 1
[in] Die erste zu mischende Farbe.
Farbe 2
[in] Die zweite zu mischende Farbe.
dblLumRatio
[in] Das Verhältnis für die Leuchtdichte der neuen Farbe. SmartMixColors
Multipliziert die Leuchtdichte der gemischten Farbe um dieses Verhältnis, bevor eine endgültige Farbe ermittelt wird.
k1
[in] Das gewichtete Verhältnis für die erste Farbe.
k2
[in] Das gewichtete Verhältnis für die zweite Farbe.
Rückgabewert
Eine Farbe, die eine gewichtete Mischung der bereitgestellten Farben darstellt.
Hinweise
Diese Methode schlägt mit einem Fehler fehl, wenn k1 oder k2 kleiner als 0 ist. Wenn beide Parameter auf 0 festgelegt sind, gibt die Methode zurück RGB(0, 0, 0)
.
Das gewichtete Verhältnis wird mit der folgenden Formel berechnet: (Farbe1 * k1 + Farbe2 * k2)/(k1 + k2). Nachdem das gewichtete Verhältnis bestimmt wurde, berechnet die Methode die Leuchtdichte für die gemischte Farbe. Anschließend multipliziert sie die Leuchtdichte durch dblLumRatio. Wenn der Wert größer als 1,0 ist, legt die Methode die Leuchtdichte für die gemischte Farbe auf den neuen Wert fest. Andernfalls wird die Leuchtdichte auf 1,0 festgelegt.
CDrawingManager::D rawRotated
Dreht einen Quell-DC-Inhalt innerhalb des angegebenen Rechtecks um 90 Grad.
void DrawRotated(
CRect rectDest,
CDC& dcSrc,
BOOL bClockWise);
Parameter
rectDest
Zielrechteck.
dcSrc
Der Quellgerätekontext.
bClockWise
WAHR gibt an, dass +90 Grad gedreht wird; FALSE gibt an, dass sie um -90 Grad gedreht wird.