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_ONE
nilai 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_ONE
nilai 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.