Bagikan melalui


Kelas CDrawingManager

Kelas ini CDrawingManager mengimplementasikan algoritma gambar yang kompleks.

Sintaks

class CDrawingManager : public CObject

Anggota

Konstruktor Publik

Nama Deskripsi
CDrawingManager::CDrawingManager Membuat CDrawingManager objek.
CDrawingManager::~CDrawingManager Destruktor.

Metode Publik

Nama Deskripsi
CDrawingManager::CreateBitmap_32 Membuat bitmap independen perangkat 32-bit (DIB) yang dapat ditulis aplikasi secara langsung.
CDrawingManager::D rawAlpha Menampilkan bitmap yang memiliki piksel transparan atau semitransparan.
CDrawingManager::D rawRotated Memutar konten DC sumber di dalam persegi panjang yang diberikan sebesar +/- 90 derajat
CDrawingManager::D rawEllipse Menggambar elips dengan warna isian dan batas yang disediakan.
CDrawingManager::D rawGradientRing Menggambar cincin dan mengisinya dengan gradien warna.
CDrawingManager::D rawLine, CDrawingManager::D rawLineA Menggambar garis.
CDrawingManager::D rawRect Menggambar persegi panjang dengan isian dan warna batas yang disediakan.
CDrawingManager::D rawShadow Menggambar bayangan untuk area persegi panjang.
CDrawingManager::Fill4ColorsGradient Mengisi area persegi panjang dengan dua gradien warna.
CDrawingManager::FillGradient Mengisi area persegi panjang dengan gradien warna tertentu.
CDrawingManager::FillGradient2 Mengisi area persegi panjang dengan gradien warna tertentu. Arah perubahan warna gradien juga ditentukan.
CDrawingManager::GrayRect Mengisi persegi panjang dengan warna abu-abu tertentu.
CDrawingManager::HighlightRect Menyoroti area persegi panjang.
CDrawingManager::HLStoRGB_ONE Mengonversi warna dari representasi HLS menjadi representasi RGB.
CDrawingManager::HLStoRGB_TWO Mengonversi warna dari representasi HLS menjadi representasi RGB.
CDrawingManager::HSVtoRGB Mengonversi warna dari representasi HSV menjadi representasi RGB.
CDrawingManager::HuetoRGB Metode pembantu yang mengonversi nilai warna menjadi komponen merah, hijau, atau biru.
CDrawingManager::MirrorRect Membalikkan area persegi panjang.
CDrawingManager::P ixelAlpha Metode pembantu yang menentukan warna akhir untuk piksel semitransparan.
CDrawingManager::P repareShadowMask Membuat bitmap yang dapat digunakan sebagai bayangan.
CDrawingManager::RGBtoHSL Mengonversi warna dari representasi RGB menjadi representasi HSL.
CDrawingManager::RGBtoHSV Mengonversi warna dari representasi RGB menjadi representasi HSV.
CDrawingManager::SetAlphaPixel Metode pembantu yang mewarnai piksel transparan sebagian dalam bitmap.
CDrawingManager::SetPixel Metode pembantu yang mengubah satu piksel dalam bitmap ke warna yang ditentukan.
CDrawingManager::SmartMixColors Menggabungkan dua warna berdasarkan rasio tertimbang.

Keterangan

Kelas ini CDrawingManager menyediakan fungsi untuk menggambar bayangan, gradien warna, dan persegi panjang yang disorot. Ini juga melakukan alpha-blending. Anda dapat menggunakan kelas ini untuk langsung mengubah UI aplikasi Anda.

Hierarki Warisan

CObject
CDrawingManager

Persyaratan

Header: afxdrawmanager.h

CDrawingManager::CDrawingManager

Membuat objek CDrawingManager .

CDrawingManager(CDC& dc);

Parameter

arus searah
[di] Referensi ke konteks perangkat. menggunakan CDrawingManager konteks ini untuk menggambar.

CDrawingManager::CreateBitmap_32

Membuat bitmap independen perangkat 32-bit (DIB) yang dapat ditulis aplikasi secara langsung.

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

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

Parameter

ukuran
[di] Parameter CSize yang menunjukkan ukuran bitmap.

pBits
[out] Penunjuk ke penunjuk data yang menerima lokasi nilai bit DIB.

Bitmap
Handel ke bitmap asli

clrTransparent
Nilai RGB yang menentukan warna transparan dari bitmap asli.

Tampilkan Nilai

Handel ke bitmap DIB yang baru dibuat jika metode ini berhasil; jika tidak, NULL.

Keterangan

Untuk informasi selengkapnya tentang cara membuat bitmap DIB, lihat CreateDIBSection.

CDrawingManager::D rawAlpha

Menampilkan bitmap yang memiliki piksel transparan atau semitransparan.

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

Parameter

pDstDC
[di] Penunjuk ke konteks perangkat untuk tujuan.

rectDst
[di] Persegi panjang tujuan.

pSrcDC
[di] Penunjuk ke konteks perangkat untuk sumber.

rectSrc
[di] Persegi panjang sumber.

Keterangan

Metode ini melakukan alpha-blending untuk dua bitmap. Untuk informasi selengkapnya tentang alpha-blending, lihat AlphaBlend di Windows SDK.

CDrawingManager::D rawEllipse

Menggambar elips dengan warna isian dan batas yang disediakan.

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

Parameter

rect
[di] Persegi panjang pembatas untuk elips.

clrFill
[di] Warna yang digunakan metode ini untuk mengisi elips.

clrLine
[di] Warna yang digunakan metode ini sebagai batas elips.

Keterangan

Metode ini mengembalikan tanpa menggambar elips jika salah satu warna diatur ke -1. Ini juga mengembalikan tanpa menggambar elips jika salah satu dimensi persegi panjang pembatas adalah 0.

CDrawingManager::D rawGradientRing

Menggambar cincin dan mengisinya dengan gradien warna.

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

Parameter

rect
[di] Parameter CRect yang menentukan batas untuk cincin gradien.

colorStart
[di] Warna pertama untuk gradien.

colorFinish
[di] Warna terakhir untuk gradien.

colorBorder
[di] Warna batas.

nAngle
[di] Parameter yang menentukan sudut gambar gradien awal. Nilai ini harus antara 0 dan 360.

nWidth
[di] Lebar batas untuk cincin.

clrFace
[di] Warna interior cincin.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Persegi panjang yang ditentukan oleh rect harus memiliki lebar minimal 5 piksel dan tinggi 5 piksel.

CDrawingManager::D rawLine, CDrawingManager::D rawLineA

Menggambar garis.

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
[di] Koordinat x tempat garis dimulai.

y1
[di] Koordinat y tempat garis dimulai.

x2
[di] Koordinat x tempat garis berakhir.

y2
[di] Koordinat y tempat garis berakhir.

clrLine
[di] Warna garis.

Keterangan

Metode ini gagal jika clrLine sama dengan -1.

CDrawingManager::D rawRect

Menggambar persegi panjang dengan isian dan warna batas yang disediakan.

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

Parameter

rect
[di] Batas untuk persegi panjang.

clrFill
[di] Warna yang digunakan metode ini untuk mengisi persegi panjang.

clrLine
[di] Warna yang digunakan metode ini untuk batas persegi panjang.

Keterangan

Metode ini mengembalikan tanpa menggambar persegi jika salah satu warna diatur ke -1. Ini juga mengembalikan jika salah satu dimensi persegi panjang adalah 0.

CDrawingManager::D rawShadow

Menggambar bayangan untuk area persegi panjang.

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
[di] Area persegi panjang di aplikasi Anda. Manajer gambar akan menggambar bayangan di bawah area ini.

nDepth
[di] Lebar dan tinggi bayangan.

iMinBrightness
[di] Kecerahan minimum bayangan.

iMaxBrightness
[di] Kecerahan maksimum bayangan.

pBmpSaveBottom
[di] Penunjuk ke bitmap yang berisi gambar untuk bagian bawah bayangan.

pBmpSaveRight
[di] Penunjuk ke bitmap yang berisi gambar untuk bayangan yang digambar di sisi kanan persegi.

clrBase
[di] Warna bayangan.

bRightShadow
[di] Parameter Boolean yang menunjukkan bagaimana bayangan digambar. Jika bRightShadow adalah TRUE, DrawShadow menggambar bayangan di sisi kanan persegi panjang.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Anda dapat memberikan dua bitmap yang valid untuk bayangan bawah dan kanan dengan menggunakan parameter pBmpSaveBottom dan pBmpSaveRight. Jika objek CBitmap ini memiliki objek GDI yang terpasang, DrawShadow akan menggunakan bitmap tersebut sebagai bayangan. CBitmap Jika parameter tidak memiliki objek GDI yang terpasang, DrawShadow gambar bayangan dan lampirkan bitmap ke parameter. Dalam panggilan mendatang ke DrawShadow, Anda dapat menyediakan bitmap ini untuk mempercepat proses menggambar. Untuk informasi selengkapnya tentang CBitmap kelas dan objek GDI, lihat Objek Grafis.

Jika salah satu parameter ini adalah NULL, DrawShadow akan secara otomatis menggambar bayangan.

Jika Anda mengatur bRightShadow ke FALSE, bayangan akan digambar di bawah dan di sebelah kiri area persegi panjang.

Contoh

Contoh berikut menunjukkan cara menggunakan DrawShadow metode CDrawingManager kelas. Cuplikan kode ini adalah bagian dari sampel Demo Lembar 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

Mengisi area persegi panjang dengan dua gradien warna.

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

Parameter

rect
[di] Persegi panjang untuk diisi.

colorStart1
[di] Warna awal untuk gradien warna pertama.

colorFinish1
[di] Warna akhir untuk gradien warna pertama.

colorStart2
[di] Warna awal untuk gradien warna kedua.

colorFinish2
[di] Warna akhir untuk gradien warna kedua.

bHorz
[di] Parameter Boolean yang menunjukkan apakah Fill4ColorsGradient mewarnai gradien horizontal atau vertikal. TRUE menunjukkan gradien horizontal.

nPercentage
[di] Bilangan bulat dari 0-100. Nilai ini menunjukkan persentase persegi panjang untuk diisi dengan gradien warna pertama.

Keterangan

Ketika persegi panjang diisi dengan dua gradien warna, mereka terletak di atas satu sama lain atau di samping satu sama lain, tergantung pada nilai bHorz. Setiap gradien warna dihitung secara independen dengan metode CDrawingManager::FillGradient.

Metode ini menghasilkan kegagalan pernyataan jika nPercentage kurang dari 0 atau lebih dari 100.

CDrawingManager::FillGradient

Mengisi area persegi panjang dengan gradien warna yang ditentukan.

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

Parameter

rect
[di] Area persegi panjang untuk diisi.

colorStart
[di] Warna pertama untuk gradien.

colorFinish
[di] Warna akhir untuk gradien.

bHorz
[di] Parameter Boolean yang menentukan apakah FillGradient harus menggambar gradien horizontal atau vertikal.

nStartFlatPercentage
[di] Persentase persegi panjang yang FillGradient diisi dengan colorStart sebelum memulai gradien.

nEndFlatPercentage
[di] Persentase persegi panjang yang FillGradient diisi dengan colorFinish setelah selesai gradien.

Contoh

Contoh berikut menunjukkan cara menggunakan FillGradient metode CDrawingManager kelas. Cuplikan kode ini adalah bagian dari sampel Demo MS Office 2007.

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

CDrawingManager::FillGradient2

Mengisi area persegi panjang dengan gradien warna tertentu.

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

Parameter

rect
[di] Area persegi panjang untuk diisi.

colorStart
[di] Warna pertama gradien.

colorFinish
[di] Warna terakhir gradien.

nAngle
[di] Bilangan bulat antara 0 dan 360. Parameter ini menentukan arah gradien warna.

Keterangan

Gunakan nAngle untuk menentukan arah gradien warna. Saat Anda menentukan arah gradien warna, Anda juga menentukan di mana gradien warna dimulai. Nilai 0 untuk nAngle menunjukkan gradien dimulai dari bagian atas persegi panjang. Saat nAngle meningkat, lokasi awal untuk gradien bergerak dalam arah berlawanan arah searah jarum jam berdasarkan sudut.

Contoh

Contoh berikut menunjukkan cara menggunakan FillGradient2 metode CDrawingManager kelas. Cuplikan kode ini adalah bagian dari sampel Kontrol Baru.

// 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

Mengisi persegi panjang dengan warna abu-abu tertentu.

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

Parameter

rect
[di] Area persegi panjang untuk diisi.

nPercentage
[di] Persentase abu-abu yang Anda inginkan di persegi panjang.

clrTransparent
[di] Warna transparan.

clrDisabled
[di] Warna yang digunakan metode ini untuk de-saturasi jika nPercentage diatur ke -1.

Tampilkan Nilai

TRUE jika metode berhasil; jika tidak FALSE.

Keterangan

Untuk parameter nPercentage, nilai yang lebih rendah menunjukkan warna yang lebih gelap.

Nilai maksimum untuk nPercentage adalah 200. Nilai yang lebih besar dari 200 tidak mengubah tampilan persegi panjang. Jika nilainya adalah -1, metode ini menggunakan clrDisabled untuk membatasi saturasi persegi panjang.

CDrawingManager::HighlightRect

Menyoroti area persegi panjang.

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

Parameter

rect
[di] Area persegi panjang untuk disorot.

nPercentage
[di] Persentase yang menunjukkan seberapa transparan sorotannya.

clrTransparent
[di] Warna transparan.

nTolerance
[di] Bilangan bulat antara 0 dan 255 yang menunjukkan toleransi warna.

clrBlend
[di] Warna dasar untuk blending.

Tampilkan Nilai

TRUE jika metode berhasil; jika tidak FALSE.

Keterangan

Jika nPercentage adalah antara 0 dan 99, HighlightRect menggunakan algoritma pencambukan alfa. Untuk informasi selengkapnya tentang pencambulan alfa, lihat Garis dan Isian Campuran Alfa. Jika nPercentage adalah -1, metode ini menggunakan tingkat sorotan default. Jika nPercentage adalah 100, metode ini tidak melakukan apa pun dan mengembalikan TRUE.

Metode ini menggunakan parameter nTolerance untuk menentukan apakah akan menyoroti area persegi panjang. Untuk menyoroti persegi panjang, perbedaan antara warna latar belakang aplikasi Anda dan clrTransparent harus kurang dari nTolerance di setiap komponen warna (merah, hijau, dan biru).

CDrawingManager::HLStoRGB_ONE

Mengonversi warna dari representasi HLS menjadi representasi RGB.

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

Parameter

H
[di] Angka antara 0 dan 1 yang mewakili rona untuk warna.

L
[di] Angka antara 0 dan 1 yang menunjukkan luminositas untuk warna.

S
[di] Angka antara 0 dan 1 yang menunjukkan saturasi untuk warna.

Tampilkan Nilai

Representasi RGB dari warna HLS yang disediakan.

Keterangan

Warna dapat direpresentasikan sebagai HSV (hue, saturation, dan value), HSL (hue, saturation, dan luminosity), atau RGB (merah, hijau, dan biru). Untuk informasi selengkapnya tentang representasi warna yang berbeda, lihat Warna.

Metode ini dan metode melakukan CDrawingManager::HLStoRGB_TWO operasi yang sama, tetapi memerlukan nilai yang berbeda untuk parameter H . Dalam metode ini, H adalah persentase lingkaran. Dalam metode , CDrawingManager::HLStoRGB_TWO H adalah nilai derajat antara 0 dan 360, yang keduanya mewakili merah. Misalnya, dengan , nilai 0,25 untuk H setara dengan HLStoRGB_ONEnilai 90 dengan HLStoRGB_TWO.

CDrawingManager::HLStoRGB_TWO

Mengonversi warna dari representasi HLS menjadi representasi RGB.

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

Parameter

H
[di] Angka antara 0 dan 360 yang mewakili warna untuk warna.

L
[di] Angka antara 0 dan 1 yang menunjukkan luminositas untuk warna.

S
[di] Angka antara 0 dan 1 yang menunjukkan saturasi untuk warna.

Tampilkan Nilai

Representasi RGB dari warna HLS yang disediakan.

Keterangan

Warna dapat direpresentasikan sebagai HSV (hue, saturation, dan value), HSL (hue, saturation, dan luminosity), atau RGB (merah, hijau, dan biru). Untuk informasi selengkapnya tentang representasi warna yang berbeda, lihat Warna.

Metode ini dan metode CDrawingManager::HLStoRGB_ONE melakukan operasi yang sama, tetapi memerlukan nilai yang berbeda untuk parameter H . Dalam metode ini, H adalah nilai derajat antara 0 dan 360, yang keduanya mewakili merah. Dalam metode CDrawingManager::HLStoRGB_ONE, H adalah persentase lingkaran. Misalnya, dengan , nilai 0,25 untuk H setara dengan HLStoRGB_ONEnilai 90 dengan HLStoRGB_TWO.

CDrawingManager::HSVtoRGB

Mengonversi warna dari representasi HSV menjadi representasi RGB.

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

Parameter

H
[di] Angka antara 0 dan 360 yang menunjukkan warna untuk warna.

S
[di] Angka antara 0 dan 1 yang menunjukkan saturasi untuk warna.

V
[di] Angka antara 0 dan 1 yang menunjukkan nilai untuk warna.

Tampilkan Nilai

Representasi RGB dari warna HSV yang disediakan.

Keterangan

Warna dapat direpresentasikan sebagai HSV (hue, saturation, dan value), HSL (hue, saturation, dan luminosity), atau RGB (merah, hijau, dan biru). Untuk informasi selengkapnya tentang representasi warna yang berbeda, lihat Warna.

CDrawingManager::HuetoRGB

Mengonversi nilai hue menjadi komponen merah, hijau, atau biru.

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

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

Parameter

m1
[di] Lihat Komentar.

m2
[di] Lihat Komentar.

h
[di] Lihat Komentar.

rm1
[di] Lihat Komentar.

rm2
[di] Lihat Komentar.

Rh
[di] Lihat Komentar.

Tampilkan Nilai

Komponen merah, hijau, atau biru individu untuk rona yang disediakan.

Keterangan

Metode ini adalah metode pembantu yang CDrawingManager digunakan kelas untuk menghitung komponen merah, hijau, dan biru individu dari warna dalam representasi HSV atau HSL. Metode ini tidak dirancang untuk dipanggil langsung oleh programmer. Parameter input adalah nilai yang bergantung pada algoritma konversi.

Untuk mengonversi warna HSV atau HSL ke representasi RGB, panggil salah satu metode berikut:

CDrawingManager::MirrorRect

Membalikkan area persegi panjang.

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

Parameter

rect
[di] Persegi panjang pembatas area untuk membalik.

bHorz
[di] Parameter Boolean yang menunjukkan apakah persegi panjang membalik secara horizontal atau vertikal.

Keterangan

Metode ini dapat membalik area mana pun dari konteks perangkat yang dimiliki oleh CDrawingManager kelas. Jika bHorz diatur ke TRUE, metode ini membalik area secara horizontal. Jika tidak, itu membalik area secara vertikal.

CDrawingManager::P ixelAlpha

Menghitung warna akhir untuk piksel semitransparan.

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
[di] Warna awal untuk piksel.

persen
[di] Angka antara 0 dan 100 yang menunjukkan persentase transparansi. Nilai 100 menunjukkan bahwa warna awal benar-benar transparan.

percentR
[di] Angka antara 0 dan 100 yang menunjukkan persentase transparansi untuk komponen merah.

percentG
[di] Angka antara 0 dan 100 yang menunjukkan persentase transparansi untuk komponen hijau.

persenB
[di] Angka antara 0 dan 100 yang menunjukkan persentase transparansi untuk komponen biru.

dstPixel
[di] Warna dasar untuk piksel.

Tampilkan Nilai

Warna akhir untuk piksel semitransparan.

Keterangan

Ini adalah kelas pembantu untuk mewarnai bitmap semitransparan dan tidak dirancang untuk dipanggil langsung oleh programmer.

Ketika Anda menggunakan versi metode yang memiliki dstPixel, warna akhir adalah kombinasi dari dstPixel dan srcPixel. Warna srcPixel adalah warna transparan sebagian di atas warna dasar dstPixel.

CDrawingManager::P repareShadowMask

Membuat bitmap yang dapat digunakan sebagai bayangan.

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

Parameter

nDepth
[di] Lebar dan tinggi bayangan.

clrBase
[di] Warna bayangan.

iMinBrightness
[di] Kecerahan minimum bayangan.

iMaxBrightness
[di] Kecerahan maksimum bayangan.

Tampilkan Nilai

Handel ke bitmap yang dibuat jika metode ini berhasil; jika tidak, NULL.

Keterangan

Jika nDepth diatur ke 0, metode ini keluar dan mengembalikan NULL. Jika nDepth kurang dari 3, lebar dan tinggi bayangan diatur ke 3 piksel.

CDrawingManager::RGBtoHSL

Mengonversi warna dari representasi merah, hijau, dan biru (RGB) menjadi representasi warna, saturasi, dan cahaya (HSL).

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

Parameter

Rgb
[di] Warna dalam nilai RGB.

H
[out] Penunjuk ke ganda di mana metode menyimpan rona untuk warna.

S
[out] Penunjuk ke ganda di mana metode menyimpan saturasi untuk warna.

L
[out] Penunjuk ke ganda di mana metode menyimpan kecerahan untuk warna.

Keterangan

Warna dapat direpresentasikan sebagai HSV (hue, saturation, dan value), HSL (hue, saturation, dan luminosity), atau RGB (merah, hijau, dan biru). Untuk informasi selengkapnya tentang representasi warna yang berbeda, lihat Warna.

Nilai yang dikembalikan untuk H direpresentasikan sebagai pecahan antara 0 dan 1 di mana 0 dan 1 mewakili merah. Nilai yang dikembalikan untuk S dan L adalah angka antara 0 dan 1.

CDrawingManager::RGBtoHSV

Mengonversi warna dari representasi RGB menjadi representasi HSV.

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

Parameter

Rgb
[di] Warna yang akan dikonversi dalam representasi RGB.

H
[out] Pointer ke ganda di mana metode ini menyimpan rona yang dihasilkan untuk warna.

S
[out] Penunjuk ke ganda di mana metode ini menyimpan saturasi yang dihasilkan untuk warna.

V
[out] Pointer ke ganda di mana metode ini menyimpan nilai yang dihasilkan untuk warna.

Keterangan

Warna dapat direpresentasikan sebagai HSV (hue, saturation, dan value), HSL (hue, saturation, dan luminosity), atau RGB (merah, hijau, dan biru). Untuk informasi selengkapnya tentang representasi warna yang berbeda, lihat Warna.

Nilai yang dikembalikan untuk H adalah angka antara 0 dan 360 di mana 0 dan 360 menunjukkan merah. Nilai yang dikembalikan untuk S dan V adalah angka antara 0 dan 1.

CDrawingManager::SetAlphaPixel

Mewarnai piksel transparan dalam 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
[di] Penunjuk ke nilai bit untuk bitmap.

rect
[di] Area persegi panjang di aplikasi Anda. Manajer gambar menggambar menggambar bayangan di bawah dan di sebelah kanan area ini.

x
[di] Koordinat horizontal piksel yang akan diwarnai.

y
[di] Koordinat vertikal piksel yang akan diwarnai.

persen
[di] Persentase transparansi.

iShadowSize
[di] Lebar dan tinggi bayangan.

clrBase
[di] Warna bayangan.

bIsRight
[di] Parameter Boolean yang menunjukkan piksel mana yang akan diwarnai. Lihat bagian Keterangan untuk informasi lebih lanjut.

Keterangan

Metode ini adalah metode pembantu yang digunakan oleh metode CDrawingManager::D rawShadow . Kami menyarankan agar jika Anda ingin menggambar bayangan, panggil CDrawingManager::DrawShadow sebagai gantinya.

Jika bIsRight diatur ke TRUE, piksel ke warna diukur x piksel dari tepi kanan rect. Jika FALSE, piksel yang akan diwarnai diukur x piksel dari tepi kiri rect.

CDrawingManager::SetPixel

Mengubah satu piksel dalam bitmap ke warna yang ditentukan.

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

Parameter

pBits
[di] Penunjuk ke nilai bit bitmap.

cx
[di] Lebar total bitmap.

Cy
[di] Tinggi total bitmap.

x
[di] Koordinat x piksel dalam bitmap yang akan diubah.

y
[di] Koordinat y piksel dalam bitmap yang akan diubah.

warna
[di] Warna baru untuk piksel yang diidentifikasi oleh koordinat yang disediakan.

CDrawingManager::SmartMixColors

Menggabungkan dua warna berdasarkan rasio tertimbang.

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

Parameter

color1
[di] Warna pertama untuk dicampur.

color2
[di] Warna kedua untuk dicampur.

dblLumRatio
[di] Rasio untuk luminositas warna baru. SmartMixColors mengalikan luminositas warna campuran dengan rasio ini sebelum menentukan warna akhir.

k1
[di] Rasio tertimbang untuk warna pertama.

k2
[di] Rasio tertimbang untuk warna kedua.

Tampilkan Nilai

Warna yang mewakili campuran tertimbang dari warna yang disediakan.

Keterangan

Metode ini gagal dengan kesalahan jika k1 atau k2 kurang dari nol. Jika kedua parameter ini diatur ke 0, metode mengembalikan RGB(0, 0, 0).

Rasio tertimbang dihitung dengan rumus berikut: (warna1 * k1 + warna2 * k2)/(k1 + k2). Setelah rasio tertimbang ditentukan, metode menghitung luminositas untuk warna campuran. Kemudian mengalikan luminositas dengan dblLumRatio. Jika nilainya lebih besar dari 1,0, metode mengatur luminositas untuk warna campuran ke nilai baru. Jika tidak, luminositas diatur ke 1.0.

CDrawingManager::D rawRotated

Memutar konten DC sumber di dalam persegi panjang yang diberikan sebesar 90 derajat.

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

Parameter

rectDest
Persegi tujuan.

dcSrc
Konteks perangkat sumber.

bClockWise
TRUE menunjukkan putar +90 derajat; FALSE menunjukkan putar -90 derajat.

Keterangan

Lihat juga

Bagan Hierarki
Kelas