Freigeben über


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 DrawShadowkö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_ONEWert 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_ONEWert 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.

Hinweise

Weitere Informationen

Hierarchiediagramm
Klassen