CDC
Třída
Definuje třídu objektů kontextu zařízení.
Syntaxe
class CDC : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDC::CDC |
CDC Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CDC::AbortDoc |
Ukončí aktuální tiskovou úlohu a vymaže všechno, co aplikace napsala do zařízení od posledního StartDoc volání členské funkce. |
CDC::AbortPath |
Zavře a zahodí všechny cesty v kontextu zařízení. |
CDC::AddMetaFileComment |
Zkopíruje komentář z vyrovnávací paměti do zadaného metasouboru rozšířeného formátu. |
CDC::AlphaBlend |
Zobrazí rastrové obrázky, které mají průhledné nebo poloprůhledné pixely. |
CDC::AngleArc |
Nakreslí segment čáry a oblouk a přesune aktuální pozici na koncový bod oblouku. |
CDC::Arc |
Nakreslí elipsický oblouk. |
CDC::ArcTo |
Nakreslí elipsický oblouk. Tato funkce je podobná s tím rozdílem Arc , že aktuální pozice je aktualizována. |
CDC::Attach |
Připojí k tomuto CDC objektu kontext zařízení s Windows. |
CDC::BeginPath |
Otevře závorku cesty v kontextu zařízení. |
CDC::BitBlt |
Zkopíruje rastrový obrázek ze zadaného kontextu zařízení. |
CDC::Chord |
Nakreslí akord (uzavřený obrázek ohraničený průsečíkem tří teček a segmentu čáry). |
CDC::CloseFigure |
Zavře otevřený obrázek v cestě. |
CDC::CreateCompatibleDC |
Vytvoří kontext paměťového zařízení, který je kompatibilní s jiným kontextem zařízení. Můžete ho použít k přípravě obrázků v paměti. |
CDC::CreateDC |
Vytvoří kontext zařízení pro konkrétní zařízení. |
CDC::CreateIC |
Vytvoří kontext informací pro konkrétní zařízení. To poskytuje rychlý způsob, jak získat informace o zařízení bez vytvoření kontextu zařízení. |
CDC::DeleteDC |
Odstraní kontext zařízení s Windows přidružený k tomuto CDC objektu. |
CDC::DeleteTempMap |
Volá se obslužnou rutinou CWinApp nečinnosti k odstranění libovolného dočasného CDC objektu vytvořeného FromHandle . Odpojte také kontext zařízení. |
CDC::Detach |
Odpojte kontext zařízení s Windows od tohoto CDC objektu. |
CDC::DPtoHIMETRIC |
Převede jednotky zařízení na HIMETRIC jednotky. |
CDC::DPtoLP |
Převede jednotky zařízení na logické jednotky. |
CDC::Draw3dRect |
Nakreslí trojrozměrný obdélník. |
CDC::DrawDragRect |
Při přetahování vymaže a překreslí obdélník. |
CDC::DrawEdge |
Nakreslí okraje obdélníku. |
CDC::DrawEscape |
Přistupuje k možnostem kreslení zobrazení videa, které nejsou přímo dostupné prostřednictvím rozhraní grafického zařízení (GDI). |
CDC::DrawFocusRect |
Nakreslí obdélník ve stylu použitém k označení fokusu. |
CDC::DrawFrameControl |
Nakreslete ovládací prvek rámečku. |
CDC::DrawIcon |
Nakreslí ikonu. |
CDC::DrawState |
Zobrazí obrázek a použije vizuální efekt pro označení stavu. |
CDC::DrawText |
Nakreslí formátovaný text v zadaném obdélníku. |
CDC::DrawTextEx |
Nakreslí formátovaný text v zadaném obdélníku pomocí jiných formátů. |
CDC::Ellipse |
Nakreslí tři tečky. |
CDC::EndDoc |
Ukončí tiskovou úlohu spuštěnou členovou StartDoc funkcí. |
CDC::EndPage |
Informuje ovladač zařízení, že stránka končí. |
CDC::EndPath |
Zavře závorku cesty a vybere cestu definovanou závorkou do kontextu zařízení. |
CDC::EnumObjects |
Vytvoří výčet per a štětců dostupných v kontextu zařízení. |
CDC::Escape |
Umožňuje aplikacím přístup k zařízením, které nejsou přímo dostupné z konkrétního zařízení prostřednictvím GDI. Umožňuje také přístup k řídicím funkcím Windows. Řídicí volání provedená aplikací se přeloží a odešlou do ovladače zařízení. |
CDC::ExcludeClipRect |
Vytvoří novou oblast výřezu, která se skládá z existující oblasti výřezu minus zadaný obdélník. |
CDC::ExcludeUpdateRgn |
Zabrání kreslení v neplatných oblastech okna vyloučením aktualizované oblasti v okně z oblasti výřezu. |
CDC::ExtFloodFill |
Vyplní oblast aktuálním štětcem. Poskytuje větší flexibilitu než členová CDC::FloodFill funkce. |
CDC::ExtTextOut |
Zapíše řetězec znaků v obdélníkové oblasti pomocí aktuálně vybraného písma. |
CDC::FillPath |
Zavře všechny otevřené obrázky v aktuální cestě a vyplní jeho interiér pomocí aktuálního štětce a polygonového režimu. |
CDC::FillRect |
Vyplní daný obdélník pomocí štětce. |
CDC::FillRgn |
Vyplní konkrétní oblast zadaným štětcem. |
CDC::FillSolidRect |
Vyplní obdélník plnou barvou. |
CDC::FlattenPath |
Transformuje všechny křivky v cestě vybrané na aktuální kontext zařízení a změní každou křivku na posloupnost čar. |
CDC::FloodFill |
Vyplní oblast aktuálním štětcem. |
CDC::FrameRect |
Nakreslí ohraničení kolem obdélníku. |
CDC::FrameRgn |
Nakreslí ohraničení kolem konkrétní oblasti pomocí štětce. |
CDC::FromHandle |
Vrátí ukazatel na CDC objekt při zadání popisovače kontextu zařízení. CDC Pokud objekt není připojený k popisovači, vytvoří se dočasný CDC objekt a připojí se. |
CDC::GetArcDirection |
Vrátí aktuální směr oblouku pro kontext zařízení. |
CDC::GetAspectRatioFilter |
Načte nastavení aktuálního filtru poměru stran. |
CDC::GetBkColor |
Načte aktuální barvu pozadí. |
CDC::GetBkMode |
Načte režim pozadí. |
CDC::GetBoundsRect |
Vrátí aktuální kumulovaný ohraničující obdélník pro zadaný kontext zařízení. |
CDC::GetBrushOrg |
Načte původ aktuálního štětce. |
CDC::GetCharABCWidths |
Načte šířky v logických jednotkách po sobě jdoucích znaků v daném rozsahu z aktuálního písma. |
CDC::GetCharABCWidthsI |
Načte šířky v logických jednotkách po sobě jdoucích indexů glyfů v zadaném rozsahu z aktuálního písma TrueType. |
CDC::GetCharacterPlacement |
Načte různé typy informací o řetězci znaků. |
CDC::GetCharWidth |
Načte desetinné šířky po sobě jdoucích znaků v daném rozsahu z aktuálního písma. |
CDC::GetCharWidthI |
Načte šířky v logických souřadnicích po sobě jdoucích indexů glyfů v zadaném rozsahu od aktuálního písma. |
CDC::GetClipBox |
Načte rozměry nejtěsnějšího ohraničujícího obdélníku kolem aktuální hranice oříznutí. |
CDC::GetColorAdjustment |
Načte hodnoty úprav barev pro kontext zařízení. |
CDC::GetCurrentBitmap |
Vrátí ukazatel na aktuálně vybraný CBitmap objekt. |
CDC::GetCurrentBrush |
Vrátí ukazatel na aktuálně vybraný CBrush objekt. |
CDC::GetCurrentFont |
Vrátí ukazatel na aktuálně vybraný CFont objekt. |
CDC::GetCurrentPalette |
Vrátí ukazatel na aktuálně vybraný CPalette objekt. |
CDC::GetCurrentPen |
Vrátí ukazatel na aktuálně vybraný CPen objekt. |
CDC::GetCurrentPosition |
Načte aktuální pozici pera (v logických souřadnicích). |
CDC::GetDCBrushColor |
Načte aktuální barvu štětce. |
CDC::GetDCPenColor |
Načte aktuální barvu pera. |
CDC::GetDeviceCaps |
Načte zadaný druh informací specifických pro zařízení o schopnostech daného zařízení pro zobrazení. |
CDC::GetFontData |
Načte informace o metrikách písma ze škálovatelného souboru písma. Informace k načtení jsou identifikovány zadáním posunu do souboru písma a délky informací, které se mají vrátit. |
CDC::GetFontLanguageInfo |
Vrátí informace o aktuálně vybraném písmu pro zadaný kontext zobrazení. |
CDC::GetGlyphOutline |
Načte křivku obrysu nebo rastrový obrázek pro znak osnovy v aktuálním písmu. |
CDC::GetGraphicsMode |
Načte aktuální grafický režim pro zadaný kontext zařízení. |
CDC::GetHalftoneBrush |
Načte půltónový štětec. |
CDC::GetKerningPairs |
Načte dvojice prokládání znaků pro písmo, které je aktuálně vybrané v zadaném kontextu zařízení. |
CDC::GetLayout |
Načte rozložení kontextu zařízení (DC). Rozložení může být zleva doprava (výchozí) nebo zprava doleva (zrcadlené). |
CDC::GetMapMode |
Načte aktuální režim mapování. |
CDC::GetMiterLimit |
Vrátí limit miter pro kontext zařízení. |
CDC::GetNearestColor |
Načte nejbližší logickou barvu k zadané logické barvě, kterou může dané zařízení reprezentovat. |
CDC::GetOutlineTextMetrics |
Načte informace o metrice písma typu TrueType. |
CDC::GetOutputCharWidth |
Načte šířky jednotlivých znaků v po sobě jdoucí skupině znaků z aktuálního písma pomocí kontextu výstupního zařízení. |
CDC::GetOutputTabbedTextExtent |
Vypočítá šířku a výšku řetězce znaků v kontextu výstupního zařízení. |
CDC::GetOutputTextExtent |
Vypočítá šířku a výšku řádku textu ve výstupním kontextu zařízení pomocí aktuálního písma k určení rozměrů. |
CDC::GetOutputTextMetrics |
Načte metriky pro aktuální písmo z kontextu výstupního zařízení. |
CDC::GetPath |
Načte souřadnice definující koncové body čar a kontrolní body křivek nalezených v cestě vybrané v kontextu zařízení. |
CDC::GetPixel |
Načte hodnotu barvy RGB pixelu v zadaném bodě. |
CDC::GetPolyFillMode |
Načte aktuální režim vyplňování mnohoúhelníku. |
CDC::GetROP2 |
Načte aktuální režim výkresu. |
CDC::GetSafeHdc |
Vrátí CDC::m_hDC kontext výstupního zařízení. |
CDC::GetStretchBltMode |
Načte aktuální režim roztažení rastrového obrázku. |
CDC::GetTabbedTextExtent |
Vypočítá šířku a výšku řetězce znaků v kontextu zařízení atributu. |
CDC::GetTextAlign |
Načte příznaky zarovnání textu. |
CDC::GetTextCharacterExtra |
Načte aktuální nastavení pro množství mezer mezi znaky. |
CDC::GetTextColor |
Načte aktuální barvu textu. |
CDC::GetTextExtent |
Vypočítá šířku a výšku řádku textu v kontextu zařízení atributu pomocí aktuálního písma k určení rozměrů. |
CDC::GetTextExtentExPointI |
Načte počet znaků v zadaném řetězci, který se vejde do zadaného místa, a vyplní matici textovým rozsahem pro každý z těchto znaků. |
CDC::GetTextExtentPointI |
Načte šířku a výšku zadaného pole indexů glyfů. |
CDC::GetTextFace |
Zkopíruje název písma aktuálního písma do vyrovnávací paměti jako řetězec ukončený hodnotou null. |
CDC::GetTextMetrics |
Načte metriky pro aktuální písmo z kontextu zařízení atributu. |
CDC::GetViewportExt |
Načte rozsahy x a y oblasti zobrazení. |
CDC::GetViewportOrg |
Načte souřadnice x a y původu oblasti zobrazení. |
CDC::GetWindow |
Vrátí okno přidružené k kontextu zařízení pro zobrazení. |
CDC::GetWindowExt |
Načte rozsahy x a y přidruženého okna. |
CDC::GetWindowOrg |
Načte souřadnice x a y původu přidruženého okna. |
CDC::GetWorldTransform |
Načte aktuální světovou mezeru na transformaci stránkového prostoru. |
CDC::GradientFill |
Vyplní obdélníkové a trojúhelníkové struktury s barvou známkování. |
CDC::GrayString |
Nakreslí šedě (šedě) text na daném místě. |
CDC::HIMETRICtoDP |
Převede jednotky HIMETRIC na jednotky zařízení. |
CDC::HIMETRICtoLP |
Převede jednotky HIMETRIC na logické jednotky. |
CDC::IntersectClipRect |
Vytvoří novou oblast výřezu vytvořením průsečíku aktuální oblasti a obdélníku. |
CDC::InvertRect |
Invertuje obsah obdélníku. |
CDC::InvertRgn |
Invertuje barvy v oblasti. |
CDC::IsPrinting |
Určuje, jestli se pro tisk používá kontext zařízení. |
CDC::LineTo |
Nakreslí čáru z aktuální pozice nahoru, ale neobsahuje ani bod. |
CDC::LPtoDP |
Převede logické jednotky na jednotky zařízení. |
CDC::LPtoHIMETRIC |
Převede logické jednotky na jednotky HIMETRIC. |
CDC::MaskBlt |
Kombinuje barevná data pro zdrojové a cílové rastrové obrázky pomocí dané masky a rastrové operace. |
CDC::ModifyWorldTransform |
Změní světovou transformaci kontextu zařízení pomocí zadaného režimu. |
CDC::MoveTo |
Přesune aktuální pozici. |
CDC::OffsetClipRgn |
Přesune oblast výřezu daného zařízení. |
CDC::OffsetViewportOrg |
Upraví původ oblasti zobrazení vzhledem ke souřadnicím aktuálního původu oblasti zobrazení. |
CDC::OffsetWindowOrg |
Upraví původ okna vzhledem ke souřadnicím aktuálního původu okna. |
CDC::PaintRgn |
Vyplní oblast vybraným štětcem. |
CDC::PatBlt |
Vytvoří bitový vzor. |
CDC::Pie |
Nakreslí výsečový klín. |
CDC::PlayMetaFile |
Přehraje obsah zadaného metasouboru na daném zařízení. Vylepšená verze zobrazí obrázek uložený v daném metasouboru rozšířeného PlayMetaFile formátu. Metasoubor lze přehrát libovolný počet. |
CDC::PlgBlt |
Provede bitový blok přenosu bitů barevných dat ze zadaného obdélníku v kontextu zdrojového zařízení do zadaného paralelogramu v daném kontextu zařízení. |
CDC::PolyBezier |
Nakreslí jednu nebo více čar Bzier. Aktuální pozice se nepoužívá ani neaktualizuje. |
CDC::PolyBezierTo |
Nakreslí jeden nebo více Bzier splines a přesune aktuální pozici na koncový bod posledního Bzier spline. |
CDC::PolyDraw |
Nakreslí sadu segmentů čar a Bzier splines. Tato funkce aktualizuje aktuální pozici. |
CDC::Polygon |
Nakreslí mnohoúhelník skládající se ze dvou nebo více bodů (vrcholů) spojených spojnicemi. |
CDC::Polyline |
Nakreslí sadu segmentů čar spojujících zadané body. |
CDC::PolylineTo |
Nakreslí jednu nebo více rovných čar a přesune aktuální pozici na koncový bod poslední čáry. |
CDC::PolyPolygon |
Vytvoří dva nebo více mnohoúhelníku, které jsou vyplněny pomocí aktuálního režimu mnohoúhelníku. Mnohoúhelníky mohou být oddělené nebo se mohou překrývat. |
CDC::PolyPolyline |
Nakreslí více řad propojených segmentů čar. Tato funkce nepoužívá ani neaktualizuje aktuální pozici. |
CDC::PtVisible |
Určuje, jestli se daný bod nachází v oblasti výřezu. |
CDC::RealizePalette |
Mapuje položky palety v aktuální logické paletě na systémovou paletu. |
CDC::Rectangle |
Nakreslí obdélník pomocí aktuálního pera a vyplní ho pomocí aktuálního štětce. |
CDC::RectVisible |
Určuje, zda některá část daného obdélníku leží v oblasti výřezu. |
CDC::ReleaseAttribDC |
Vydané verze m_hAttribDC , kontext zařízení atributu. |
CDC::ReleaseOutputDC |
Vydané verze m_hDC , kontext výstupního zařízení. |
CDC::ResetDC |
m_hAttribDC Aktualizuje kontext zařízení. |
CDC::RestoreDC |
Obnoví kontext zařízení do předchozího stavu uloženého v SaveDC souboru . |
CDC::RoundRect |
Nakreslí obdélník se zaoblenými rohy pomocí aktuálního pera a vyplní aktuálním štětcem. |
CDC::SaveDC |
Uloží aktuální stav kontextu zařízení. |
CDC::ScaleViewportExt |
Upraví rozsah oblasti zobrazení vzhledem k aktuálním hodnotám. |
CDC::ScaleWindowExt |
Upraví rozsahy okna vzhledem k aktuálním hodnotám. |
CDC::ScrollDC |
Posune obdélník bitů vodorovně a svisle. |
CDC::SelectClipPath |
Vybere aktuální cestu jako oblast výřezu kontextu zařízení a zkombinuje novou oblast s jakoukoli existující oblastí výřezu pomocí zadaného režimu. |
CDC::SelectClipRgn |
Kombinuje danou oblast s aktuální oblastí výřezu pomocí zadaného režimu. |
CDC::SelectObject |
Vybere nakreslený objekt GDI, například pero. |
CDC::SelectPalette |
Vybere logickou paletu. |
CDC::SelectStockObject |
Vybere jedno z předdefinovaných per, štětců nebo písem poskytovaných systémem Windows. |
CDC::SetAbortProc |
Nastaví programátorem zadanou funkci zpětného volání, kterou systém Windows volá, pokud je nutné přerušit tiskovou úlohu. |
CDC::SetArcDirection |
Nastaví směr kreslení, který se má použít pro obloukové a obdélníkové funkce. |
CDC::SetAttribDC |
Nastaví m_hAttribDC kontext zařízení atributu. |
CDC::SetBkColor |
Nastaví aktuální barvu pozadí. |
CDC::SetBkMode |
Nastaví režim pozadí. |
CDC::SetBoundsRect |
Řídí akumulace informací o ohraničujícího obdélníku pro zadaný kontext zařízení. |
CDC::SetBrushOrg |
Určuje původ dalšího štětce vybraného v kontextu zařízení. |
CDC::SetColorAdjustment |
Nastaví hodnoty úprav barev pro kontext zařízení pomocí zadaných hodnot. |
CDC::SetDCBrushColor |
Nastaví aktuální barvu štětce. |
CDC::SetDCPenColor |
Nastaví aktuální barvu pera. |
CDC::SetGraphicsMode |
Nastaví aktuální grafický režim pro zadaný kontext zařízení. |
CDC::SetLayout |
Změní rozložení kontextu zařízení (DC). |
CDC::SetMapMode |
Nastaví aktuální režim mapování. |
CDC::SetMapperFlags |
Změní algoritmus, který mapovač písem používá, když mapuje logická písma na fyzická písma. |
CDC::SetMiterLimit |
Nastaví limit pro délku spojení miterů pro kontext zařízení. |
CDC::SetOutputDC |
Nastaví m_hDC kontext výstupního zařízení. |
CDC::SetPixel |
Nastaví pixel v zadaném bodě na nejbližší aproximaci zadané barvy. |
CDC::SetPixelV |
Nastaví pixel na zadaných souřadnicích na nejbližší aproximaci zadané barvy. SetPixelV je rychlejší než SetPixel proto, že nemusí vracet barevnou hodnotu namalovaného bodu. |
CDC::SetPolyFillMode |
Nastaví režim mnohoúhelníku. |
CDC::SetROP2 |
Nastaví aktuální režim kreslení. |
CDC::SetStretchBltMode |
Nastaví režim rastrového roztažení. |
CDC::SetTextAlign |
Nastaví příznaky zarovnání textu. |
CDC::SetTextCharacterExtra |
Nastaví velikost mezer mezi znaky. |
CDC::SetTextColor |
Nastaví barvu textu. |
CDC::SetTextJustification |
Přidá mezeru ke znakům zalomení v řetězci. |
CDC::SetViewportExt |
Nastaví rozsahy x a y oblasti zobrazení. |
CDC::SetViewportOrg |
Nastaví zdroj oblasti zobrazení. |
CDC::SetWindowExt |
Nastaví rozsahy x a y přidruženého okna. |
CDC::SetWindowOrg |
Nastaví původ okna kontextu zařízení. |
CDC::SetWorldTransform |
Nastaví aktuální světovou mezeru na transformaci stránkového prostoru. |
CDC::StartDoc |
Informuje ovladač zařízení, že se spouští nová tisková úloha. |
CDC::StartPage |
Informuje ovladač zařízení, že se spouští nová stránka. |
CDC::StretchBlt |
V případě potřeby přesune rastrový obrázek ze zdrojového obdélníku a zařízení do cílového obdélníku, roztáhne nebo zkomprimuje rastrový obrázek tak, aby odpovídal rozměrům cílového obdélníku. |
CDC::StrokeAndFillPath |
Zavře všechny otevřené obrázky v cestě, přeškrtá obrys cesty pomocí aktuálního pera a vyplní jeho interiér pomocí aktuálního štětce. |
CDC::StrokePath |
Vykreslí zadanou cestu pomocí aktuálního pera. |
CDC::TabbedTextOut |
Zapíše řetězec znaků do zadaného umístění a rozbalí tabulátory na hodnoty zadané v poli pozic zarážky tabulátoru. |
CDC::TextOut |
Zapíše řetězec znaků do zadaného umístění pomocí aktuálně vybraného písma. |
CDC::TransparentBlt |
Přenese bitové bloky barevných dat ze zadaného kontextu zdrojového zařízení do kontextu cílového zařízení, čímž se v přenosu zobrazí zadaná barva průhledná. |
CDC::UpdateColors |
Aktualizuje oblast klienta kontextu zařízení tím, že odpovídá aktuálním barvám v klientské oblasti se systémovou paletou na pixel-by-pixel. |
CDC::WidenPath |
Předefinuje aktuální cestu jako oblast, která by byla vykreslena, pokud by byla cesta tahována pomocí pera aktuálně vybraného do kontextu zařízení. |
Veřejné operátory
Název | Popis |
---|---|
CDC::operator HDC |
Načte popisovač kontextu zařízení. |
Veřejné datové členy
Název | Popis |
---|---|
CDC::m_hAttribDC |
Kontext atributu zařízení používaný tímto CDC objektem. |
CDC::m_hDC |
Kontext výstupního zařízení používaný tímto CDC objektem. |
Poznámky
Objekt CDC
poskytuje členské funkce pro práci s kontextem zařízení, jako je zobrazení nebo tiskárna, a členy pro práci s kontextem zobrazení přidruženým k klientské oblasti okna.
Projděte si všechny členské funkce objektu CDC
. Třída poskytuje členské funkce pro operace kontextu zařízení, práce s nástroji kreslení, typově bezpečné rozhraní grafického zařízení (GDI) výběr objektů a práce s barvami a paletami. Poskytuje také členské funkce pro získávání a nastavení atributů výkresu, mapování, práci s oblastí zobrazení, práci s rozsahem okna, převod souřadnic, práci s oblastmi, oříznutí, kreslení čar a kreslení jednoduchých obrazců, elips a mnohoúhelníku. Členské funkce jsou také k dispozici pro kreslení textu, práci s písmy, použití řídicích znaků tiskárny, posouvání a přehrávání metasouborů.
Pokud chcete použít CDC
objekt, vytvořte ho a potom volejte jeho členské funkce, které paralelně používají funkce Systému Windows, které používají kontexty zařízení.
Poznámka:
Ve Windows 95/98 jsou všechny souřadnice obrazovky omezené na 16 bitů. int
CDC
Předání členské funkci proto musí být v rozsahu -32768 až 32767.
Pro konkrétní použití poskytuje knihovna tříd Microsoft Foundation několik tříd odvozených z CDC
. CPaintDC
zapouzdřuje volání do BeginPaint
a EndPaint
. CClientDC
spravuje kontext zobrazení přidružený k klientské oblasti okna. CWindowDC
spravuje kontext zobrazení přidružený k celému okně, včetně jeho rámce a ovládacích prvků. CMetaFileDC
přidruží kontext zařízení k metasouboru.
CDC
poskytuje dvě členské funkce GetLayout
a SetLayout
pro vrácení rozložení kontextu zařízení, které nedědí jeho rozložení z okna. Taková orientace zprava doleva je nezbytná pro aplikace napsané pro jazykové verze, jako je arabština nebo hebrejština, kde rozložení znaků není evropským standardem.
CDC
obsahuje dva kontexty zařízení, m_hDC
které m_hAttribDC
při vytváření objektu CDC
odkazují na stejné zařízení. CDC
směruje všechna volání GDI výstupu do m_hDC
a většina volání GDI atributu .m_hAttribDC
(Příklad volání atributu je GetTextColor
, zatímco SetTextColor
je výstupní volání.)
Architektura například používá tyto dva kontexty zařízení k implementaci objektu CMetaFileDC
, který bude odesílat výstup do metasouboru při čtení atributů z fyzického zařízení. Náhled tisku se implementuje v rámci podobným způsobem. V kódu specifickém pro aplikaci můžete také použít dva kontexty zařízení podobným způsobem.
Někdy můžete potřebovat informace o textové metrice z m_hDC
kontextu zařízení i m_hAttribDC
z kontextu zařízení. Následující páry funkcí poskytují tuto funkci:
Používá m_hAttribDC | Používá m_hDC |
---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Další informace najdete v CDC
tématu Kontexty zařízení.
Hierarchie dědičnosti
CDC
Požadavky
Záhlaví: afxwin.h
CDC::AbortDoc
Ukončí aktuální tiskovou úlohu a vymaže všechno, co aplikace napsala do zařízení od posledního StartDoc
volání členské funkce.
int AbortDoc();
Návratová hodnota
Hodnota větší nebo rovna 0, pokud byla úspěšná, nebo záporná hodnota, pokud došlo k chybě. Následující seznam obsahuje běžné chybové hodnoty a jejich významy:
SP_ERROR
Obecná chyba.SP_OUTOFDISK
Není k dispozici dostatek místa na disku pro zařazování a nebude k dispozici žádné další místo.SP_OUTOFMEMORY
Pro zařazování není k dispozici dostatek paměti.SP_USERABORT
Uživatel ukončil úlohu prostřednictvím Správce tisku.
Poznámky
Tato členová funkce nahrazuje řídicí znak tiskárny ABORTDOC
.
AbortDoc
by měly být použity k ukončení následujících:
Tiskové operace, které nezadávají funkci přerušení pomocí
SetAbortProc
.Tiskové operace, které ještě nedosáhly prvního
NEWFRAME
neboNEXTBAND
řídicího volání.
Pokud aplikace narazí na chybu tisku nebo zrušenou tiskovou operaci, nesmí se pokoušet ukončit operaci pomocí buď EndDoc
AbortDoc
pomocí nebo členské funkce třídy CDC
. GDI automaticky ukončí operaci před vrácením chybové hodnoty.
Pokud aplikace zobrazí dialogové okno, které uživateli umožní zrušit operaci tisku, musí před zničením dialogového okna volat AbortDoc
.
Pokud byl správce tisku použit ke spuštění tiskové úlohy, volání AbortDoc
vymaže celou úlohu zařazování – tiskárna neobdrží nic. Pokud správce tisku nebyl použit ke spuštění tiskové úlohy, data byla pravděpodobně odeslána do tiskárny předtím, než AbortDoc
byla volána. V takovém případě by ovladač tiskárny resetoval tiskárnu (pokud je to možné) a zavřel tiskovou úlohu.
Příklad
Podívejte se na příklad pro CDC::StartDoc
.
CDC::AbortPath
Zavře a zahodí všechny cesty v kontextu zařízení.
BOOL AbortPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Pokud je v kontextu zařízení otevřená závorka cesty, zavře se závorka cesty a cesta se zahodí. Pokud je v kontextu zařízení uzavřená cesta, cesta se zahodí.
CDC::AddMetaFileComment
Zkopíruje komentář z vyrovnávací paměti do zadaného metasouboru rozšířeného formátu.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Parametry
nDataSize
Určuje délku vyrovnávací paměti komentáře v bajtech.
pCommentData
Odkazuje na vyrovnávací paměť, která obsahuje komentář.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Komentář může obsahovat jakékoli soukromé informace – například zdroj obrázku a datum jeho vytvoření. Komentář by měl začínat podpisem aplikace následovaným daty. Komentáře by neměly obsahovat data specifická pro pozici. Data specifická pro pozici určují umístění záznamu a neměla by být zahrnuta, protože jeden metasoubor může být vložen do jiného metasouboru. Tuto funkci lze použít pouze s rozšířenými metasoubory.
CDC::AlphaBlend
Voláním této členské funkce zobrazíte rastrové obrázky, které mají průhledné nebo poloprůhledné pixely.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Parametry
xDest
Určuje souřadnici x v logických jednotkách v levém horním rohu cílového obdélníku.
yDest
Určuje souřadnici y v logických jednotkách v levém horním rohu cílového obdélníku.
nDestWidth
Určuje šířku cílového obdélníku v logických jednotkách.
nDestHeight
Určuje výšku cílového obdélníku v logických jednotkách.
pSrcDC
Ukazatel na kontext zdrojového zařízení
xSrc
Určuje souřadnici x v logických jednotkách v levém horním rohu zdrojového obdélníku.
ySrc
Určuje souřadnici y v logických jednotkách v levém horním rohu zdrojového obdélníku.
nSrcWidth
Určuje šířku zdrojového obdélníku v logických jednotkách.
nSrcHeight
Určuje výšku zdrojového obdélníku v logických jednotkách.
blend
Určuje BLENDFUNCTION
strukturu.
Návratová hodnota
TRUE
v případě úspěchu; jinak FALSE
.
Poznámky
Další informace najdete AlphaBlend
v sadě Windows SDK.
CDC::AngleArc
Nakreslí segment čáry a oblouk.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Parametry
x
Určuje logickou souřadnici x středu kruhu.
y
Určuje logickou souřadnici y středu kruhu.
nRadius
Určuje poloměr kruhu v logických jednotkách. Tato hodnota musí být kladná.
fStartAngle
Určuje počáteční úhel ve stupních vzhledem k ose x.
fSweepAngle
Určuje úhel úklidu ve stupních vzhledem k počátečnímu úhlu.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Segment čáry je nakreslen z aktuální pozice na začátek oblouku. Oblouk je nakreslen podél obvodu kruhu s daným poloměrem a středem. Délka oblouku je definována daným počátečním a uklidit úhly.
AngleArc
přesune aktuální pozici na koncový bod oblouku. Oblouk nakreslený touto funkcí se může zdát eliptický v závislosti na aktuálním režimu transformace a mapování. Před nakreslením oblouku tato funkce nakreslí segment čáry z aktuální pozice na začátek oblouku. Oblouk je vykreslen vytvořením imaginárního kruhu se zadaným poloměrem kolem zadaného středového bodu. Počáteční bod oblouku je určen měřením proti směru hodinových ručiček z osy x kruhu počtem stupňů v počátečním úhlu. Koncový bod je podobně umístěn měřením proti směru hodinových ručiček od počátečního bodu počtem stupňů v úhlu úklidu.
Pokud je úhel úklidu větší než 360 stupňů, oblouk se několikrát protáhl. Tato funkce nakreslí čáry pomocí aktuálního pera. Obrázek není vyplněný.
CDC::Arc
Nakreslí elipsický oblouk.
BOOL Arc(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Arc(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parametry
x1
Určuje souřadnici x levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
x3
Určuje souřadnici x bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y3
Určuje souřadnici y bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
x4
Určuje souřadnici x bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y4
Určuje souřadnici y bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
lpRect
Určuje ohraničující obdélník (v logických jednotkách). Pro tento parametr můžete předat objekt LPRECT
nebo CRect
objekt.
ptStart
Určuje souřadnice x a y bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
ptEnd
Určuje souřadnice x a y bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Oblouk nakreslený pomocí funkce je segment tří teček definovaný zadaným ohraničujícím obdélníkem.
Skutečný počáteční bod oblouku je bod, ve kterém paprsek nakreslený ze středu ohraničujícího obdélníku přes zadaný počáteční bod protíná tři tečky. Skutečný koncový bod oblouku je bod, ve kterém paprsek nakreslený ze středu ohraničujícího obdélníku přes zadaný koncový bod protíná tři tečky. Oblouk je nakreslen proti směru hodinových ručiček. Vzhledem k tomu, že oblouk není uzavřený obrázek, není vyplněný. Šířka i výška obdélníku musí být větší než 2 jednotky a menší než 32 767 jednotek.
Příklad
void CDCView::DrawArc(CDC *pDC)
{
// Fill the client area with a thin circle. The circle's
// interior is not filled. The circle's perimeter is
// blue from 6 o'clock to 3 o'clock and red from 3
// o'clock to 6 o'clock.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens.
CPen penBlue;
CPen penRed;
CPen *pOldPen;
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen.
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw from 6 o'clock to 3 o'clock, counterclockwise,
// in a red pen.
pDC->SelectObject(&penRed);
// Keep the same parameters, but reverse start
// and end points.
pDC->Arc(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::ArcTo
Nakreslí elipsický oblouk.
BOOL ArcTo(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL ArcTo(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parametry
x1
Určuje souřadnici x levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
x3
Určuje souřadnici x bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y3
Určuje souřadnici y bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
x4
Určuje souřadnici x bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y4
Určuje souřadnici y bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
lpRect
Určuje ohraničující obdélník (v logických jednotkách). Pro tento parametr můžete předat ukazatel na datovou RECT
strukturu nebo CRect
objekt.
ptStart
Určuje souřadnice x a y bodu, který definuje výchozí bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat datovou POINT
CPoint
strukturu nebo objekt.
ptEnd
Určuje souřadnice x a y bodu, který definuje koncový bod oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat datovou POINT
CPoint
strukturu nebo objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato funkce je podobná s tím rozdílem CDC::Arc
, že aktuální pozice je aktualizována. Body ( x1
, y1
) a ( x2
) y2
určují ohraničující obdélník. Elipsa tvořená daným ohraničujícím obdélníkem definuje křivku oblouku. Oblouk rozšiřuje proti směru hodinových ručiček (výchozí směr oblouku) od bodu, kde protíná paprskovou čáru ze středu ohraničujícího obdélníku na ( *x3*
, y3
). Oblouk končí tam, kde protíná paprskovou čáru ze středu ohraničujícího obdélníku na ( x4
, y4
). Pokud je počáteční bod a koncový bod stejný, je nakreslená úplná tři tečka.
Čára je nakreslena z aktuální pozice do počátečního bodu oblouku. Pokud nedojde k žádné chybě, je aktuální pozice nastavena na koncový bod oblouku. Oblouk je nakreslen pomocí aktuálního pera; není vyplněná.
CDC::Attach
Tato členová funkce slouží k připojení hDC
objektu CDC
.
BOOL Attach(HDC hDC);
Parametry
hDC
Kontext zařízení s Windows.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Objekt hDC
je uložen v m_hDC
kontextu výstupního zařízení i v m_hAttribDC
kontextu atributu zařízení.
CDC::BeginPath
Otevře závorku cesty v kontextu zařízení.
BOOL BeginPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Po otevření závorky cesty může aplikace začít volat funkce kreslení GDI, aby definovala body, které leží v cestě. Aplikace může zavřít otevřenou závorku cesty voláním EndPath
členské funkce. Při volání BeginPath
aplikace se všechny předchozí cesty zahodí.
Seznam BeginPath
funkcí výkresu, které definují body v cestě, najdete v sadě Windows SDK.
Příklad
// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
// Describe a 24-point truetype font of normal weight
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
lf.lfWeight = FW_NORMAL;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
// create and select it
CFont newFont;
if (!newFont.CreateFontIndirect(&lf))
return;
CFont *pOldFont = pDC->SelectObject(&newFont);
// use a path to record how the text was drawn
pDC->BeginPath();
pDC->TextOut(10, 10, _T("Outline this!"));
pDC->EndPath();
// Find out how many points are in the path. Note that
// for long strings or complex fonts, this number might be
// gigantic!
int nNumPts = pDC->GetPath(NULL, NULL, 0);
if (nNumPts == 0)
return;
// Allocate memory to hold points and stroke types from
// the path.
LPPOINT lpPoints = NULL;
LPBYTE lpTypes = NULL;
try
{
lpPoints = new POINT[nNumPts];
lpTypes = new BYTE[nNumPts];
}
catch (CException *pe)
{
delete[] lpPoints;
lpPoints = NULL;
delete[] lpTypes;
lpTypes = NULL;
pe->Delete();
}
if (lpPoints == NULL || lpTypes == NULL)
return;
// Now that we have the memory, really get the path data.
nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);
// If it worked, draw the lines. Windows 98 doesn't support
// the PolyDraw API, so we use our own member function to do
// similar work. If you're targeting only later versions of
// Windows, you can use the PolyDraw() API and avoid the
// COutlineView::PolyDraw() member function.
if (nNumPts != -1)
pDC->PolyDraw(lpPoints, lpTypes, nNumPts);
// Release the memory we used
delete[] lpPoints;
delete[] lpTypes;
// Put back the old font
pDC->SelectObject(pOldFont);
return;
}
CDC::BitBlt
Zkopíruje rastrový obrázek ze zdrojového kontextu zařízení do tohoto aktuálního kontextu zařízení.
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop);
Parametry
x
Určuje logickou souřadnici x levého horního rohu cílového obdélníku.
y
Určuje logickou souřadnici y levého horního rohu cílového obdélníku.
nWidth
Určuje šířku (v logických jednotkách) cílového obdélníku a zdrojového rastrového obrázku.
nHeight
Určuje výšku (v logických jednotkách) cílového obdélníku a zdrojového rastrového obrázku.
pSrcDC
Ukazatel na CDC
objekt, který identifikuje kontext zařízení, ze kterého se rastrový obrázek zkopíruje. Musí to být NULL
, pokud dwRop
určuje rastrovou operaci, která neobsahuje zdroj.
xSrc
Určuje logickou souřadnici x levého horního rohu zdrojového rastrového obrázku.
ySrc
Určuje logickou souřadnici y levého horního rohu zdrojového rastrového obrázku.
dwRop
Určuje rastrovou operaci, která má být provedena. Rastrové kódy operací definují, jak GDI kombinuje barvy ve výstupních operacích, které zahrnují aktuální štětec, možnou zdrojovou bitmapu a cílovou bitmapu. BitBlt
Seznam kódů dwRop
rastrových operací a jejich popisů najdete v sadě Windows SDK.
Úplný seznam kódů rastrových operací naleznete v tématu O raster operation codes in the Windows SDK.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Aplikace může zarovnat okna nebo klientské oblasti na hranicích bajtů, aby se zajistilo, že BitBlt
k operacím dochází na obdélníkech zarovnaných podle bajtů. (Nastavte CS_BYTEALIGNWINDOW
příznaky při CS_BYTEALIGNCLIENT
registraci tříd oken.)
BitBlt
operace s obdélníky zarovnané podle bajtů jsou výrazně rychlejší než BitBlt
operace s obdélníky, které nejsou zarovnané bajty. Pokud chcete zadat styly tříd, jako je zarovnání bajtů pro vlastní kontext zařízení, budete muset zaregistrovat třídu okna, a nemusíte se spoléhat na třídy Microsoft Foundation, aby to udělal za vás. Použijte globální funkci AfxRegisterWndClass
.
GDI transformuje nWidth
a nHeight
jednou pomocí kontextu cílového zařízení a jednou pomocí kontextu zdrojového zařízení. Pokud se výsledné rozsahy neshodují, GDI použije funkci Windows StretchBlt
ke komprimaci nebo roztažení zdrojového rastrového obrázku podle potřeby.
Pokud cílové, zdrojové a vzorové rastrové obrázky nemají stejný barevný formát, funkce převede zdrojové a vzorové rastrové obrázky tak, BitBlt
aby odpovídaly cíli. V převodu se používají barvy popředí a pozadí cílového rastrového obrázku.
BitBlt
Když funkce převede monochromatický rastr na barvu, nastaví bílé bity (1) na barvu pozadí a černé bity (0) na barvu popředí. Použijí se barvy popředí a pozadí kontextu cílového zařízení. Pokud chcete převést barvu na monochromatické, nastaví pixely, BitBlt
které odpovídají barvě pozadí, na bílou a nastaví všechny ostatní pixely na černou. BitBlt
používá barvy popředí a pozadí kontextu barevného zařízení k převodu z barvy na monochromatické.
Ne všechny kontexty zařízení podporují BitBlt
. Pokud chcete zkontrolovat, jestli daný kontext zařízení podporuje BitBlt
, použijte GetDeviceCaps
členovou funkci a zadejte index RASTERCAPS.
Příklad
Podívejte se na příklad pro CDC::CreateCompatibleDC
.
CDC::CDC
CDC
Vytvoří objekt.
CDC();
CDC::Chord
Nakreslí akord (uzavřený obrázek ohraničený průsečíkem tří teček a segmentu čáry).
BOOL Chord(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Chord(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parametry
x1
Určuje souřadnici x levého horního rohu ohraničujícího obdélníku chordu (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu ohraničujícího obdélníku chordu (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu ohraničujícího obdélníku chordu (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu ohraničujícího obdélníku chordu (v logických jednotkách).
x3
Určuje souřadnici x bodu, který definuje počáteční bod chordu (v logických jednotkách).
y3
Určuje souřadnici y bodu, který definuje výchozí bod chordu (v logických jednotkách).
x4
Určuje souřadnici x bodu, který definuje koncový bod chordu (v logických jednotkách).
y4
Určuje souřadnici y bodu, který definuje koncový bod chordu (v logických jednotkách).
lpRect
Určuje ohraničující obdélník (v logických jednotkách). Pro tento parametr můžete předat objekt LPRECT
nebo ho CRect
.
ptStart
Určuje souřadnice x a y bodu, který definuje výchozí bod chordu (v logických jednotkách). Tento bod nemusí lhát přesně na chordu. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
*ptEnd*
Určuje souřadnice x a y bodu, který definuje koncový bod chordu (v logických jednotkách). Tento bod nemusí lhát přesně na chordu. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Parametry ( , y1
) a ( x2
x1
, y2
) určují levé horní a pravé dolní rohy obdélníku ohraničující tři tečky, které jsou součástí chordu. Parametry ( , x3
y3
) a ( x4
, y4
) určují koncové body čáry, která protíná tři tečky. Akord je kreslen pomocí vybraného pera a vyplněn pomocí vybraného štětce.
Obrázek nakreslený Chord
funkcí se rozšiřuje až na, ale neobsahuje pravé a dolní souřadnice. To znamená, že výška obrázku je y2
- y1
a šířka obrázku je .x2
- x1
Příklad
void CDCView::DrawChord(CDC *pDC)
{
// Fill the client area with a circle. The circle is
// blue and filled with blue, but has a chord cut out
// of it from 3 o'clock to 6 o'clock. That chord is
// red and filled with a red diagonal hatch.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Chord(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter chord from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen
// with the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Keep the same parameters, but reverse start and
// end points.
pDC->Chord(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::CloseFigure
Zavře otevřený obrázek v cestě.
BOOL CloseFigure();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Funkce zavře obrázek tak, že nakreslí čáru z aktuální pozice na první bod obrázku (obvykle bod určený posledním voláním MoveTo
členské funkce) a spojí čáry pomocí stylu spojení čáry. Pokud je obrázek uzavřen pomocí LineTo
členské funkce místo CloseFigure
, koncová zakončení se použijí k vytvoření rohu místo spojení. CloseFigure
měla by být volána pouze v případě, že je v kontextu zařízení otevřená závorka cesty.
Obrázek v cestě je otevřený, pokud není explicitně uzavřen pomocí této funkce. (Obrázek může být otevřen i v případě, že aktuální bod a výchozí bod obrázku jsou stejné.) Jakákoli čára nebo křivka přidaná do cesty po CloseFigure
zahájení nového obrázku.
CDC::CreateCompatibleDC
Vytvoří kontext paměťového zařízení, který je kompatibilní se zařízením určeným pDC
nástrojem .
BOOL CreateCompatibleDC(CDC* pDC);
Parametry
pDC
Ukazatel na kontext zařízení. Pokud pDC
ano NULL
, funkce vytvoří kontext paměťového zařízení, který je kompatibilní se zobrazením systému.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Kontext paměťového zařízení je blok paměti, který představuje plochu zobrazení. Dá se použít k přípravě obrázků v paměti předtím, než je zkopírujete na plochu zařízení kompatibilního zařízení.
Když se vytvoří kontext paměťového zařízení, GDI pro něj automaticky vybere monochromatický rastrový obrázek 1 po 1. Výstupní funkce GDI lze použít s kontextem paměťového zařízení pouze v případě, že byl v tomto kontextu vytvořen a vybrán rastrový obrázek.
Tuto funkci lze použít pouze k vytvoření kompatibilních kontextů zařízení pro zařízení, která podporují rastrové operace. Informace o přenosech bitových bloků mezi kontexty zařízení najdete v CDC::BitBlt
členské funkci. Pokud chcete zjistit, zda kontext zařízení podporuje rastrové operace, podívejte se na RC_BITBLT
možnosti rastru v členské funkci CDC::GetDeviceCaps
.
Příklad
// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
// load IDB_BITMAP1 from our resources
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Get the size of the bitmap
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
// Create an in-memory DC compatible with the
// display DC we're using to paint
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Select the bitmap into the in-memory DC
CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);
// Find a centerpoint for the bitmap in the client area
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
// Copy the bits from the in-memory DC into the on-
// screen DC to actually do the painting. Use the centerpoint
// we computed for the target offset.
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
else
{
TRACE0("ERROR: Where's IDB_BITMAP1?\n");
}
}
CDC::CreateDC
Vytvoří kontext zařízení pro zadané zařízení.
BOOL CreateDC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parametry
lpszDriverName
Odkazuje na řetězec ukončený hodnotou null, který určuje název souboru (bez přípony) ovladače zařízení (například "EPSON
"). Pro tento parametr můžete také předat CString
objekt.
lpszDeviceName
Odkazuje na řetězec ukončený hodnotou null, který určuje název konkrétního zařízení, které se má podporovat (například "EPSON FX-80
"). Tento lpszDeviceName
parametr se použije, pokud modul podporuje více než jedno zařízení. Pro tento parametr můžete také předat CString
objekt.
lpszOutput
Odkazuje na řetězec ukončený hodnotou null, který určuje název souboru nebo zařízení fyzického výstupního média (soubor nebo výstupní port). Pro tento parametr můžete také předat CString
objekt.
lpInitData
Odkazuje na DEVMODE
strukturu obsahující data inicializace specifická pro zařízení pro ovladač zařízení. Funkce Windows DocumentProperties
načte tuto strukturu vyplněnou pro dané zařízení. Parametr lpInitData
musí být NULL
v případě, že ovladač zařízení použije výchozí inicializaci (pokud existuje) určenou uživatelem prostřednictvím Ovládací panely.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Pokud PRINT.H
se struktura použije, je soubor hlavičky DEVMODE
povinný.
Názvy zařízení se řídí těmito konvencemi: koncová dvojtečka (:) se doporučuje, ale volitelné. Systém Windows odstraní ukončující dvojtečku tak, aby byl název zařízení končící dvojtečka mapován na stejný port jako stejný název bez dvojtečky. Názvy ovladačů a portů nesmí obsahovat úvodní ani koncové mezery. Výstupní funkce GDI nelze použít s kontexty informací.
CDC::CreateIC
Vytvoří kontext informací pro zadané zařízení.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parametry
lpszDriverName
Odkazuje na řetězec ukončený hodnotou null, který určuje název souboru (bez přípony) ovladače zařízení (například "EPSON
"). Pro tento parametr můžete předat CString
objekt.
lpszDeviceName
Odkazuje na řetězec ukončený hodnotou null, který určuje název konkrétního zařízení, které se má podporovat (například "EPSON FX-80
"). Tento lpszDeviceName
parametr se použije, pokud modul podporuje více než jedno zařízení. Pro tento parametr můžete předat CString
objekt.
lpszOutput
Odkazuje na řetězec ukončený hodnotou null, který určuje název souboru nebo zařízení pro fyzické výstupní médium (soubor nebo port). Pro tento parametr můžete předat CString
objekt.
lpInitData
Odkazuje na data inicializace specifická pro konkrétní zařízení pro ovladač zařízení. Parametr lpInitData
musí být NULL
v případě, že ovladač zařízení použije výchozí inicializaci (pokud existuje) určenou uživatelem prostřednictvím Ovládací panely. Viz CreateDC
formát dat pro inicializaci specifickou pro zařízení.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Kontext informací poskytuje rychlý způsob, jak získat informace o zařízení bez vytvoření kontextu zařízení.
Názvy zařízení se řídí těmito konvencemi: koncová dvojtečka (:) se doporučuje, ale volitelné. Systém Windows odstraní ukončující dvojtečku tak, aby byl název zařízení končící dvojtečka mapován na stejný port jako stejný název bez dvojtečky. Názvy ovladačů a portů nesmí obsahovat úvodní ani koncové mezery. Výstupní funkce GDI nelze použít s kontexty informací.
CDC::DeleteDC
Obecně nevolejte tuto funkci; destruktor to udělá za vás.
BOOL DeleteDC();
Návratová hodnota
Nenulové, pokud se funkce úspěšně dokončila; jinak 0.
Poznámky
Členová DeleteDC
funkce odstraní kontexty zařízení s Windows, které jsou přidružené m_hDC
k aktuálnímu CDC
objektu. Pokud je tento CDC
objekt posledním aktivním kontextem zařízení pro dané zařízení, uvolní se všechny prostředky úložiště a systému používané zařízením.
Aplikace by neměla volat DeleteDC
, pokud byly objekty vybrány do kontextu zařízení. Objekty musí být před odstraněním nejprve vybrány mimo kontext zařízení.
Aplikace nesmí odstranit kontext zařízení, jehož popisovač byl získán voláním CWnd::GetDC
. Místo toho musí volat CWnd::ReleaseDC
, aby uvolnil kontext zařízení. CWindowDC
K CClientDC
zabalení této funkce jsou k dispozici tyto třídy.
Funkce DeleteDC
se obecně používá k odstranění kontextů zařízení vytvořených pomocí CreateDC
, CreateIC
nebo CreateCompatibleDC
.
Příklad
Podívejte se na příklad pro CPrintDialog::GetPrinterDC
.
CDC::DeleteTempMap
Volá se automaticky obslužnou rutinou CWinApp
nečinnosti, DeleteTempMap
odstraní všechny dočasné CDC
objekty vytvořené FromHandle
, ale nezničí kontextové popisovače zařízení (hDC
s) dočasně přidružené k objektům CDC
.
static void PASCAL DeleteTempMap();
CDC::Detach
Voláním této funkce odpojete m_hDC
(kontext výstupního zařízení) od objektu CDC
a nastavíte obojí m_hDC
i m_hAttribDC
na NULL
hodnotu .
HDC Detach();
Návratová hodnota
Kontext zařízení s Windows.
CDC::DPtoHIMETRIC
Tuto funkci použijte, pokud dáváte HIMETRIC
velikost OLE, převádět pixely na HIMETRIC
.
void DPtoHIMETRIC(LPSIZE lpSize) const;
Parametry
lpSize
Odkazuje na strukturu nebo CSize
objekt SIZE.
Poznámky
Pokud je MM_LOENGLISH
režim mapování objektu kontextu zařízení , MM_HIENGLISH
MM_LOMETRIC
MM_HIMETRIC
nebo , převod je založen na počtu pixelů ve fyzickém paleci. Pokud je režim mapování jedním z ostatních neomezujících režimů (například MM_TEXT
), převod je založen na počtu pixelů v logickém paleci.
CDC::DPtoLP
Převede jednotky zařízení na logické jednotky.
void DPtoLP(
LPPOINT lpPoints,
int nCount = 1) const;
void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;
Parametry
lpPoints
Odkazuje na pole POINT
struktur nebo CPoint
objektů.
nCount
Počet bodů v matici
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt. Tento parametr se používá pro jednoduchý případ převodu jednoho obdélníku z bodů zařízení na logické body.
lpSize
Odkazuje na SIZE
strukturu nebo CSize
objekt.
Poznámky
Funkce mapuje souřadnice každého bodu nebo rozměru velikosti ze souřadnicového systému zařízení do logického souřadnicového systému GDI. Převod závisí na aktuálním režimu mapování a nastavení počátečních a rozsahů pro okno a oblast zobrazení zařízení.
CDC::Draw3dRect
Voláním této členské funkce nakreslete trojrozměrný obdélník.
void Draw3dRect(
LPCRECT lpRect,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
void Draw3dRect(
int x,
int y,
int cx,
int cy,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
Parametry
lpRect
Určuje ohraničující obdélník (v logických jednotkách). Pro tento parametr můžete předat ukazatel na RECT
strukturu nebo CRect
objekt.
clrTopLeft
Určuje barvu horní a levé strany trojrozměrného obdélníku.
clrBottomRight
Určuje barvu dolní a pravé strany trojrozměrného obdélníku.
x
Určuje logickou souřadnici x levého horního rohu trojrozměrného obdélníku.
y
Určuje logickou souřadnici y levého horního rohu trojrozměrného obdélníku.
cx
Určuje šířku trojrozměrného obdélníku.
cy
Určuje výšku trojrozměrného obdélníku.
Poznámky
Obdélník bude kreslen s horní a levou stranou v barvě určené clrTopLeft
podle a dolní a pravé strany v barvě určené clrBottomRight
.
Příklad
void CDCView::Draw3dRect(CDC *pDC)
{
// get the client area
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels on all sides
rect.DeflateRect(20, 20);
// draw a rectangle with red top and left sides, and
// green right and bottom sides.
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));
// This call to the four-integer override would draw
// the same rectangle with a little less convenience:
// pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
// RGB(255, 0, 0), RGB(0, 255, 0));
}
CDC::DrawDragRect
Voláním této členské funkce opakovaně překreslete obdélník přetažení.
void DrawDragRect(
LPCRECT lpRect,
SIZE size,
LPCRECT lpRectLast,
SIZE sizeLast,
CBrush* pBrush = NULL,
CBrush* pBrushLast = NULL);
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který určuje logické souřadnice obdélníku – v tomto případě se jedná o koncovou pozici obdélníku, který se překresluje.
size
Určuje posun z levého horního rohu vnějšího okraje do levého horního rohu vnitřního ohraničení (tj. tloušťky ohraničení) obdélníku.
lpRectLast
Odkazuje na RECT
strukturu nebo CRect
objekt, který určuje logické souřadnice pozice obdélníku – v tomto případě původní pozice obdélníku, který se překresluje.
sizeLast
Určuje posun z levého horního rohu vnějšího okraje do levého horního rohu vnitřního ohraničení (tj. tloušťky ohraničení) původního obdélníku, který se překresluje.
pBrush
Ukazatel na objekt štětce Nastavte na NULL
použití výchozího polotónového štětce.
pBrushLast
Ukazatel na poslední použitý objekt štětce Nastavte na NULL
použití výchozího polotónového štětce.
Poznámky
Pojmenujte ji ve smyčce při ukázkové pozici myši, abyste mohli poskytnout vizuální zpětnou vazbu. Při volání DrawDragRect
se předchozí obdélník vymaže a nakreslí se nový obdélník. Například když uživatel přetáhne obdélník přes obrazovku, DrawDragRect
vymaže původní obdélník a překreslí nový obdélník v jeho nové pozici. Ve výchozím nastavení nakreslí obdélník pomocí polotónového štětce k DrawDragRect
odstranění blikání a vytvoření vzhledu hladce pohyblivého obdélníku.
Při prvním volání DrawDragRect
lpRectLast
by parametr měl být NULL
.
CDC::DrawEdge
Voláním této členské funkce nakreslete okraje obdélníku zadaného typu a stylu.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Parametry
lpRect
Ukazatel na RECT
strukturu, která obsahuje logické souřadnice obdélníku.
nEdge
Určuje typ vnitřního a vnějšího okraje, který se má nakreslit. Tento parametr musí být kombinací jednoho příznaku vnitřního ohraničení a jednoho příznaku vnějšího ohraničení. Tabulku DrawEdge
typů parametrů najdete v sadě Windows SDK.
nFlags
Příznaky, které určují typ ohraničení, který se má nakreslit. Tabulku DrawEdge
hodnot parametru najdete v sadě Windows SDK. U diagonálních čar BF_RECT
určují příznaky koncový bod vektoru ohraničeného parametrem obdélníku.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
CDC::DrawEscape
Přistupuje k možnostem kreslení zobrazení videa, které nejsou přímo dostupné prostřednictvím rozhraní grafického zařízení (GDI).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Parametry
nEscape
Určuje řídicí funkci, která se má provést.
nInputSize
Určuje počet bajtů dat odkazovaných parametrem lpszInputData
.
lpszInputData
Odkazuje na vstupní strukturu požadovanou pro zadaný řídicí znak.
Návratová hodnota
Určuje výsledek funkce. Pokud je řídicí znak větší než nula, s výjimkou řídicího znaku QUERYESCSUPPORT
kreslení, který kontroluje pouze implementaci, nebo nulu, pokud řídicí znak není implementován, nebo menší než nula, pokud došlo k chybě.
Poznámky
Při volání DrawEscape
aplikace data identifikovaná nInputSize
a lpszInputData
předávají se přímo zadanému ovladači zobrazení.
CDC::DrawFocusRect
Nakreslí obdélník ve stylu použitém k označení, že obdélník má fokus.
void DrawFocusRect(LPCRECT lpRect);
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který určuje logické souřadnice obdélníku, které se mají nakreslit.
Poznámky
Vzhledem k tomu, že se jedná o logickou funkci XOR (^
), volání této funkce podruhé se stejným obdélníkem odebere obdélník ze zobrazení. Obdélník nakreslený touto funkcí nelze posunout. Pokud chcete posunout oblast obsahující obdélník nakreslený touto funkcí, nejprve zavolejte DrawFocusRect
, abyste obdélník odebrali ze zobrazení, posuňte oblast a potom znovu zavoláte DrawFocusRect
, aby se obdélník nakreslel do nové pozice.
Upozornění
DrawFocusRect
funguje pouze v MM_TEXT
režimu. V jiných režimech tato funkce nekreslí obdélník fokusu správně, ale nevrací chybové hodnoty.
CDC::DrawFrameControl
Voláním této členské funkce nakreslete ovládací prvek rámce zadaného typu a stylu.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Parametry
lpRect
Ukazatel na RECT
strukturu, která obsahuje logické souřadnice obdélníku.
nType
Určuje typ ovládacího prvku rámečku, který se má nakreslit. uType
Seznam možných hodnot tohoto parametru najdete v DrawFrameControl
sadě Windows SDK.
nState
Určuje počáteční stav ovládacího prvku rámce. Může to být jedna nebo více hodnot popsaných pro uState
parametr v DrawFrameControl
sadě Windows SDK. nState
Pomocí hodnoty DFCS_ADJUSTRECT
upravte ohraničující obdélník tak, aby se vyloučil okolní okraj tlačítka.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
V několika případech nState
závisí na parametru nType
. Následující seznam ukazuje vztah mezi čtyřmi nType
hodnotami a nState
:
DFC_BUTTON
DFCS_BUTTON3STATE
Tlačítko se třemi stavyDFCS_BUTTONCHECK
PolíčkoDFCS_BUTTONPUSH
TlačítkoDFCS_BUTTONRADIO
PřepínačDFCS_BUTTONRADIOIMAGE
Obrázek pro přepínač (jiné nežquare potřebuje obrázek)DFCS_BUTTONRADIOMASK
Maska pro přepínač (nonsquare needs mask)
DFC_CAPTION
DFCS_CAPTIONCLOSE
Tlačítko ZavřítDFCS_CAPTIONHELP
Tlačítko NápovědaDFCS_CAPTIONMAX
Tlačítko MaximalizovatDFCS_CAPTIONMIN
Tlačítko MinimalizovatDFCS_CAPTIONRESTORE
Tlačítko Obnovit
DFC_MENU
DFCS_MENUARROW
Šipka podnabídkyDFCS_MENUBULLET
KulkaDFCS_MENUCHECK
Zaškrtnutí
DFC_SCROLL
DFCS_SCROLLCOMBOBOX
Posuvník pole se seznamemDFCS_SCROLLDOWN
Šipka dolů posuvníkuDFCS_SCROLLLEFT
Levá šipka posuvníkuDFCS_SCROLLRIGHT
Šipka doprava na posuvníkuDFCS_SCROLLSIZEGRIP
Velikost úchytu v pravém dolním rohu oknaDFCS_SCROLLUP
Šipka nahoru posuvníku
Příklad
Tento kód nakreslí úchyt velikosti v pravém dolním rohu okna. Je vhodné pro OnPaint
obslužnou rutinu dialogového okna, která nemá žádné styly a obvykle neobsahuje další ovládací prvky (například stavový řádek), které by jí mohly dát úchyt velikosti.
void CDCView::DrawFC(CDC *pDC)
{
CRect rc;
GetClientRect(&rc);
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}
CDC::DrawIcon
Nakreslí na zařízení ikonu reprezentovanou aktuálním CDC
objektem.
BOOL DrawIcon(
int x,
int y,
HICON hIcon);
BOOL DrawIcon(
POINT point,
HICON hIcon);
Parametry
x
Určuje logickou souřadnici x levého horního rohu ikony.
y
Určuje logickou souřadnici y levého horního rohu ikony.
hIcon
Identifikuje úchyt ikony, která se má nakreslit.
point
Určuje logické souřadnice x a y levého horního rohu ikony. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud se funkce úspěšně dokončila; jinak 0.
Poznámky
Funkce umístí levý horní roh ikony do umístění určeného operátorem x
a y
. Umístění podléhá aktuálnímu režimu mapování kontextu zařízení.
Prostředek ikony musí být dříve načten pomocí funkcí CWinApp::LoadIcon
, CWinApp::LoadStandardIcon
nebo CWinApp::LoadOEMIcon
. Před MM_TEXT
použitím této funkce je nutné vybrat režim mapování.
Příklad
Podívejte se na příklad pro CWnd::IsIconic
.
CDC::DrawState
Voláním této členské funkce zobrazíte obrázek a použijete vizuální efekt k označení stavu, například zakázaného nebo výchozího stavu.
Poznámka:
Pro všechny nFlag
stavy kromě DSS_NORMAL
, obrázek je převeden na monochromatické před použitím vizuálního efektu.
BOOL DrawState(
CPoint pt,
CSize size,
HBITMAP hBitmap,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
CBitmap* pBitmap,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
CBrush* pBrush = NULL);
Parametry
pt
Určuje umístění obrázku.
size
Určuje velikost obrázku.
hBitmap
Úchyt rastrového obrázku.
nFlags
Příznaky, které určují typ a stav obrázku. Informace DrawState
o možných typech a stavech nFlags najdete v sadě Windows SDK.
hBrush
Rukojeť na štětec.
pBitmap
Ukazatel na CBitmap
objekt.
pBrush
Ukazatel na CBrush
objekt.
hIcon
Úchyt ikony.
lpszText
Ukazatel na text.
bPrefixText
Text, který může obsahovat měmonicku akcelerátoru. Parametr lData
určuje adresu řetězce a nTextLen
parametr určuje délku. Pokud nTextLen
je hodnota 0, předpokládá se, že řetězec má hodnotu null-terminate.
nTextLen
Délka textového řetězce, na který lpszText
odkazuje . Pokud nTextLen
je hodnota 0, předpokládá se, že řetězec má hodnotu null-terminate.
lpDrawProc
Ukazatel na funkci zpětného volání, která se používá k vykreslení obrázku. Tento parametr se vyžaduje, pokud je DST_COMPLEX
typ image in nFlags
. Je nepovinný a může být NULL
, pokud je DST_TEXT
typ obrázku . U všech ostatních typů imagí se tento parametr ignoruje. Další informace o funkci zpětného volání naleznete DrawStateProc
v této funkci v sadě Windows SDK.
lData
Určuje informace o obrázku. Význam tohoto parametru závisí na typu image.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
CDC::DrawText
Voláním této členské funkce naformátujte text v daném obdélníku. Chcete-li zadat více možností formátování, použijte CDC::DrawTextEx
.
virtual int DrawText(
LPCTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat);
int DrawText(
const CString& str,
LPRECT lpRect,
UINT nFormat);
Parametry
lpszString
Odkazuje na řetězec, který se má nakreslit. Pokud nCount
je hodnota -1, řetězec musí být ukončen s hodnotou null.
nCount
Určuje počet znaků v řetězci. Pokud nCount
je hodnota -1, předpokládá se, lpszString
že se jedná o dlouhý ukazatel na řetězec ukončený hodnotou null a DrawText
vypočítá počet znaků automaticky.
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt obsahující obdélník (v logických souřadnicích), ve kterém má být text formátován.
str
Objekt CString
obsahující zadané znaky, které se mají nakreslit.
nFormat
Určuje metodu formátování textu. Může se jednat o libovolnou kombinaci hodnot popsaných pro uFormat
parametr v DrawText
sadě Windows SDK. (zkombinujte pomocí bitového operátoru OR):
Poznámka:
Některé uFormat
kombinace příznaků můžou způsobit úpravu předávaného řetězce. Použití DT_MODIFYSTRING
s řetězcem DT_END_ELLIPSIS
nebo DT_PATH_ELLIPSIS
může způsobit úpravu řetězce, což způsobuje kontrolní výraz v přepsání CString
. Hodnoty DT_CALCRECT
, , DT_EXTERNALLEADING
DT_INTERNAL
DT_NOCLIP
, a DT_NOPREFIX
nelze použít s DT_TABSTOP
hodnotou.
Návratová hodnota
Výška textu, pokud je funkce úspěšná.
Poznámky
Formátuje text tak, že zvětší tabulátory do příslušných mezer, zarovná text doleva, doprava nebo na střed daného obdélníku a rozdělí text na řádky, které se vejdou do daného obdélníku. Typ formátování je určen .nFormat
Tato členská funkce používá k vykreslení textu vybrané písmo, barvu textu a barvu pozadí kontextu zařízení. Pokud se DT_NOCLIP
formát nepoužije, DrawText
vystřiží text tak, aby se text nezojevil mimo daný obdélník. Veškeré formátování se předpokládá, že má více řádků, pokud DT_SINGLELINE
není formát uveden.
Pokud je vybrané písmo pro zadaný obdélník příliš velké, DrawText
členová funkce se nepokouší nahradit menší písmo.
DT_CALCRECT
Pokud je příznak zadán, bude obdélník určený lpRect
aktualizací, aby odrážel šířku a výšku potřebnou k vykreslení textu.
TA_UPDATECP
Pokud je nastaven příznak zarovnání textu (vizCDC::SetTextAlign
), DrawText
zobrazí se text začínající na aktuální pozici, nikoli nalevo od daného obdélníku. DrawText
nebude zalamovat text, pokud TA_UPDATECP
je příznak nastavený (to znamená, DT_WORDBREAK
že příznak nebude mít žádný vliv).
Barvu textu může nastavit CDC::SetTextColor
.
CDC::DrawTextEx
Naformátuje text v daném obdélníku.
virtual int DrawTextEx(
LPTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
int DrawTextEx(
const CString& str,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
Parametry
lpszString
Odkazuje na řetězec, který se má nakreslit. Pokud nCount
je -1, řetězec musí být ukončen null.
nCount
Určuje počet znaků v řetězci. Pokud nCount
je hodnota -1, předpokládá se, lpszString
že se jedná o dlouhý ukazatel na řetězec ukončený hodnotou null a DrawText
vypočítá počet znaků automaticky.
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt obsahující obdélník (v logických souřadnicích), ve kterém má být text formátován.
str
Objekt CString
obsahující zadané znaky, které se mají nakreslit.
nFormat
Určuje metodu formátování textu. Může se jednat o libovolnou kombinaci hodnot popsaných pro uFormat
parametr v DrawText
sadě Windows SDK. (Kombinování pomocí bitové OPERÁTOR OR ):
Poznámka:
Některé uFormat
kombinace příznaků můžou způsobit úpravu předávaného řetězce. Použití DT_MODIFYSTRING
s řetězcem DT_END_ELLIPSIS
nebo DT_PATH_ELLIPSIS
může způsobit úpravu řetězce, což způsobuje kontrolní výraz v přepsání CString
. Hodnoty DT_CALCRECT
, , DT_EXTERNALLEADING
DT_INTERNAL
DT_NOCLIP
, a DT_NOPREFIX
nelze použít s DT_TABSTOP
hodnotou.
lpDTParams
Ukazatel na DRAWTEXTPARAMS
strukturu, která určuje více možností formátování. Tento parametr může být NULL
.
Poznámky
Formátuje text tak, že zvětší tabulátory do příslušných mezer, zarovná text doleva, doprava nebo na střed daného obdélníku a rozdělí text na řádky, které se vejdou do daného obdélníku. Typ formátování je určen a nFormat
lpDTParams
. Další informace najdete v sadě CDC::DrawText
Windows SDK a DrawTextEx
v této části.
Barvu textu může nastavit CDC::SetTextColor
.
CDC::Ellipse
Nakreslí tři tečky.
BOOL Ellipse(
int x1,
int y1,
int x2,
int y2);
BOOL Ellipse(LPCRECT lpRect);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu ohraničujícího obdélníku se třemi tečky.
y1
Určuje logickou souřadnici y levého horního rohu ohraničujícího obdélníku se třemi tečky.
x2
Určuje logickou souřadnici x pravého dolního rohu ohraničujícího obdélníku se třemi tečky.
y2
Určuje logickou souřadnici y pravého dolního rohu ohraničujícího obdélníku se třemi tečky.
lpRect
Určuje ohraničující obdélník tří teček. Pro tento parametr můžete také předat CRect
objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Střed tří teček je středem ohraničujícího obdélníku určeného parametrem x1
, , y1
a x2
, nebo y2
lpRect
. Tři tečky jsou nakresleny aktuálním perem a jeho interiér je naplněn aktuálním kartáčem.
Obrázek nakreslený touto funkcí se rozšiřuje až do, ale nezahrnuje pravé a dolní souřadnice. To znamená, že výška obrázku je y2
- y1
a šířka obrázku je .x2
- x1
Pokud je šířka nebo výška ohraničujícího obdélníku 0, nevykreslí se žádné tři tečky.
CDC::EndDoc
Ukončí tiskovou úlohu spuštěnou voláním StartDoc
členské funkce.
int EndDoc();
Návratová hodnota
Větší než nebo rovno 0, pokud je funkce úspěšná, nebo záporná hodnota, pokud došlo k chybě.
Poznámky
Tato členová funkce nahrazuje řídicí klávesu ENDDOC
tiskárny a měla by být volána okamžitě po dokončení úspěšné tiskové úlohy.
Pokud aplikace narazí na chybu tisku nebo zrušenou tiskovou operaci, nesmí se pokusit operaci ukončit pomocí ani EndDoc
AbortDoc
. GDI automaticky ukončí operaci před vrácením chybové hodnoty.
Tato funkce by neměla být použita uvnitř metasouborů.
Příklad
Podívejte se na příklad pro CDC::StartDoc
.
CDC::EndPage
Informuje zařízení, že aplikace dokončila zápis na stránku.
int EndPage();
Návratová hodnota
Větší než nebo rovno 0, pokud je funkce úspěšná, nebo záporná hodnota, pokud došlo k chybě.
Poznámky
Tato členová funkce se obvykle používá k nasměrovávání ovladače zařízení na novou stránku.
Tato členová funkce nahrazuje řídicí znak tiskárny NEWFRAME
. Na rozdíl od NEWFRAME
, tato funkce je vždy volána po tisku stránky.
Příklad
Podívejte se na příklad pro CDC::StartDoc
.
CDC::EndPath
Zavře závorku cesty a vybere cestu definovanou závorkou do kontextu zařízení.
BOOL EndPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Příklad
Podívejte se na příklad pro CDC::BeginPath
.
CDC::EnumObjects
Vytvoří výčet per a štětců dostupných v kontextu zařízení.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Parametry
nObjectType
Určuje typ objektu. Může obsahovat hodnoty OBJ_BRUSH
nebo OBJ_PEN
.
lpfn
Je adresa instance procedury funkce zpětného volání zadané aplikací. Viz část Poznámky níže.
lpData
Odkazuje na data zadaná aplikací. Data se předají funkci zpětného volání spolu s informacemi o objektu.
Návratová hodnota
Určuje poslední hodnotu vrácenou funkcí zpětného volání. Jeho význam je definovaný uživatelem.
Poznámky
Pro každý objekt daného typu se volá funkce zpětného volání, kterou předáte, s informacemi pro daný objekt. Systém volá funkci zpětného volání, dokud nejsou k dispozici žádné další objekty nebo funkce zpětného volání vrátí hodnotu 0.
Nové funkce jazyka Microsoft Visual C++ umožňují použít běžnou funkci jako předanou EnumObjects
funkci . Předaná EnumObjects
adresa je ukazatel na funkci exportovanou s EXPORT
konvencí volání Pascal. V aplikacích v režimu ochrany nemusíte tuto funkci vytvářet pomocí funkce Windows MakeProcInstance
ani ji po použití s FreeProcInstance
funkcí Windows uvolnit.
Také nemusíte exportovat název funkce v EXPORTS
příkazu v souboru definice modulu vaší aplikace. Místo toho můžete použít EXPORT
modifikátor funkce, jak je uvedeno v
int CALLBACK EXPORT AFunction (LPSTR, LPSTR);
aby kompilátor vygeneroval správný záznam exportu pro export podle názvu bez aliasů. To funguje pro většinu potřeb. V některých speciálních případech, jako je export funkce pomocí řadových nebo aliasů exportu, musíte stále použít EXPORTS
příkaz v souboru definice modulu.
Pro kompilaci programů Microsoft Foundation obvykle použijete možnosti a /GEs
možnosti kompilátoru/GA
. Možnost /Gw
kompilátoru se nepoužívá s třídami Microsoft Foundation. (Pokud používáte funkci Windows, budete muset ukazatel vrácené funkce MakeProcInstance
FARPROC
explicitně přetypovat na typ potřebný v tomto rozhraní API.) Registrační rozhraní zpětného volání jsou nyní typově bezpečná (musíte předat ukazatel funkce, který odkazuje na správný druh funkce pro konkrétní zpětné volání).
Všechny funkce zpětného volání musí před návratem do systému Windows soutisknout výjimky služby Microsoft Foundation, protože výjimky nelze vyvolat přes hranice zpětného volání. Další informace o výjimkách najdete v článku Výjimky.
Příklad
// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
LOGPEN *pPen = (LOGPEN *)lpLogObject;
switch (pPen->lopnStyle)
{
case PS_SOLID:
TRACE0("PS_SOLID: ");
break;
case PS_DASH:
TRACE0("PS_DASH: ");
break;
case PS_DOT:
TRACE0("PS_DOT: ");
break;
case PS_DASHDOT:
TRACE0("PS_DASHDOT: ");
break;
case PS_DASHDOTDOT:
TRACE0("PS_DASHDOTDOT: ");
break;
case PS_NULL:
TRACE0("PS_NULL: ");
break;
case PS_INSIDEFRAME:
TRACE0("PS_INSIDEFRAME:");
break;
default:
TRACE0("unk style:");
}
TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
return TRUE;
}
// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
HDC hdc = dlg.GetPrinterDC();
if (hdc != NULL)
{
CDC dc;
dc.Attach(hdc);
VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
}
}
CDC::Escape
Tato členská funkce je prakticky zastaralá pro programování win32.
virtual int Escape(
int nEscape,
int nCount,
LPCSTR lpszInData,
LPVOID lpOutData);
int Escape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData,
int nOutputSize,
LPSTR lpszOutputData);
Parametry
nEscape
Určuje řídicí funkci, která se má provést.
Úplný seznam řídicích funkcí najdete Escape
v sadě Windows SDK.
nCount
Určuje počet bajtů dat, na které lpszInData
odkazuje .
lpszInData
Odkazuje na vstupní datovou strukturu potřebnou pro tento řídicí znak.
lpOutData
Odkazuje na strukturu, která má přijímat výstup z tohoto řídicího znaku. Parametr lpOutData
je NULL
v případě, že se nevrátí žádná data.
nInputSize
Určuje počet bajtů dat odkazovaných parametrem lpszInputData
.
lpszInputData
Odkazuje na vstupní strukturu požadovanou pro zadaný řídicí znak.
nOutputSize
Určuje počet bajtů dat odkazovaných parametrem lpszOutputData
.
lpszOutputData
Odkazuje na strukturu, která přijímá výstup z tohoto řídicího příkazu. Tento parametr by měl být NULL
v případě, že se nevrátí žádná data.
Návratová hodnota
Kladná hodnota se vrátí, pokud je funkce úspěšná, s výjimkou řídicího znaku QUERYESCSUPPORT
, který kontroluje pouze implementaci. Nula se vrátí, pokud řídicí znak není implementován. Pokud došlo k chybě, vrátí se záporná hodnota. Toto jsou běžné chybové hodnoty:
SP_ERROR
Obecná chyba.SP_OUTOFDISK
Není k dispozici dostatek místa na disku pro zařazování a nebude k dispozici žádné další místo.SP_OUTOFMEMORY
Pro zařazování není k dispozici dostatek paměti.SP_USERABORT
Uživatel ukončil úlohu prostřednictvím Správce tisku.
Poznámky
U původní tiskárny je podporován pouze QUERYESCSUPPORT
pro aplikace Win32. Všechny ostatní řídicí znaky tiskárny jsou zastaralé a podporují se pouze kvůli kompatibilitě s 16bitovými aplikacemi.
Pro programování CDC
win32 nyní poskytuje šest členských funkcí, které nahrazují odpovídající řídicí panely tiskárny:
Kromě toho CDC::GetDeviceCaps
podporuje indexy Win32, které nahrazují jiné řídicí znaky tiskárny. Další informace najdete GetDeviceCaps
v sadě Windows SDK.
Tato členová funkce umožňuje aplikacím přístup k zařízením konkrétního zařízení, které nejsou přímo dostupné prostřednictvím GDI.
První verzi použijte, pokud vaše aplikace používá předdefinované řídicí hodnoty. Druhou verzi použijte, pokud vaše aplikace definuje privátní řídicí hodnoty. Další ExtEscape
informace o druhé verzi najdete v sadě Windows SDK.
CDC::ExcludeClipRect
Vytvoří novou oblast výřezu, která se skládá z existující oblasti výřezu minus zadaný obdélník.
int ExcludeClipRect(
int x1,
int y1,
int x2,
int y2);
int ExcludeClipRect(LPCRECT lpRect);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu obdélníku.
y1
Určuje logickou souřadnici y levého horního rohu obdélníku.
x2
Určuje logickou souřadnici x pravého dolního rohu obdélníku.
y2
Určuje logickou souřadnici y pravého dolního rohu obdélníku.
lpRect
Určuje obdélník. Může to být CRect
také objekt.
Návratová hodnota
Určuje typ nové oblasti výřezu. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Oblast má překrývající se ohraničení.ERROR
Nebyla vytvořena žádná oblast.NULLREGION
Oblast je prázdná.SIMPLEREGION
Oblast nemá žádné překrývající se ohraničení.
Poznámky
Šířka obdélníku určená absolutní hodnotou x2
- x1
nesmí překročit 32 767 jednotek. Tento limit platí i pro výšku obdélníku.
CDC::ExcludeUpdateRgn
Zabrání kreslení v neplatných oblastech okna vyloučením aktualizované oblasti v okně z oblasti výřezu přidružené k objektu CDC
.
int ExcludeUpdateRgn(CWnd* pWnd);
Parametry
pWnd
Odkazuje na objekt okna, jehož okno se aktualizuje.
Návratová hodnota
Typ vyloučené oblasti. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Oblast má překrývající se ohraničení.ERROR
Nebyla vytvořena žádná oblast.NULLREGION
Oblast je prázdná.SIMPLEREGION
Oblast nemá žádné překrývající se ohraničení.
CDC::ExtFloodFill
Vyplní oblast plochy displeje aktuálním štětcem.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Parametry
x
Určuje logickou souřadnici x bodu, kde začíná plnění.
y
Určuje logickou souřadnici y bodu, kde začíná plnění.
crColor
Určuje barvu hranice nebo oblasti, která se má vyplnit. Interpretace crColor
závisí na hodnotě nFillType
.
nFillType
Určuje typ povodňové výplně, která se má provést. Musí to být jedna z následujících hodnot:
FLOODFILLBORDER
Oblast výplně je ohraničena barvou určenou parametremcrColor
. Tento styl je identický s plněním prováděnýmFloodFill
.FLOODFILLSURFACE
Oblast výplně je definována barvou určenou parametremcrColor
. Vyplňování pokračuje směrem ven ve všech směrech, pokud je zjištěna barva. Tento styl je užitečný pro vyplnění oblastí s vícebarevnými hranicemi.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0, pokud vyplnění nebylo možné dokončit, pokud má daný bod hranici určenou crColor
(pokud FLOODFILLBORDER
byl požadován), pokud daný bod nemá barvu určenou crColor
(pokud FLOODFILLSURFACE
byl požadován), nebo pokud bod není mimo oblast výřezu.
Poznámky
Tato členová funkce nabízí větší flexibilitu než FloodFill
proto, že můžete zadat typ nFillType
výplně .
Pokud nFillType
je nastavena na FLOODFILLBORDER
, předpokládá se, že oblast je zcela ohraničena barvou určenou crColor
. Funkce začíná v bodě určeném x
a y
vyplní všechny směry na hranici barvy.
Pokud nFillType
je nastavena na FLOODFILLSURFACE
, funkce začíná v bodě určeném x
a y
pokračuje ve všech směrech, vyplňte všechny sousední oblasti obsahující barvu určenou crColor
.
Pouze kontexty paměti a zařízení, která podporují podporu ExtFloodFill
rastrové technologie zobrazení . Další informace najdete v GetDeviceCaps
členské funkci.
CDC::ExtTextOut
Voláním této členské funkce napíšete řetězec znaků v obdélníkové oblasti pomocí aktuálně vybraného písma.
virtual BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
LPCTSTR lpszString,
UINT nCount,
LPINT lpDxWidths);
BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
const CString& str,
LPINT lpDxWidths);
Parametry
x
Určuje logickou souřadnici x buňky znaku pro první znak v zadaném řetězci.
y
Určuje logickou souřadnici y horní části buňky znaku pro první znak v zadaném řetězci.
nOptions
Určuje typ obdélníku. Tento parametr může být jeden, oba nebo ani jedna z následujících hodnot:
ETO_CLIPPED
Určuje, že text je oříznutý na obdélník.ETO_OPAQUE
Určuje, že aktuální barva pozadí vyplní obdélník. (Aktuální barvu pozadí můžete nastavit a dotazovat pomocíSetBkColor
členskýchGetBkColor
funkcí.)
lpRect
Odkazuje na RECT
strukturu, která určuje rozměry obdélníku. Tento parametr může být NULL
. Pro tento parametr můžete také předat CRect
objekt.
lpszString
Odkazuje na zadaný řetězec znaku, který se má nakreslit. Pro tento parametr můžete také předat CString
objekt.
nCount
Určuje počet znaků v řetězci.
lpDxWidths
Odkazuje na pole hodnot, které označují vzdálenost mezi počátku sousedních buněk znaků. Například lpDxWidths
[ i
] logické jednotky oddělí původ znakové buňky a znakové buňky i
i
+ 1. Pokud lpDxWidths
ano NULL
, ExtTextOut
použije výchozí mezery mezi znaky.
str
Objekt CString
obsahující zadané znaky, které se mají nakreslit.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Obdélníková oblast může být neprůhledná (vyplněná aktuální barvou pozadí) a může to být oblast výřezu.
Pokud nOptions
je hodnota 0 a lpRect
je NULL
, funkce zapíše text do kontextu zařízení bez použití obdélníkové oblasti. Ve výchozím nastavení funkce nepoužívá ani neaktualizuje aktuální pozici. Pokud aplikace potřebuje aktualizovat aktuální pozici při volání ExtTextOut
, může aplikace volat CDC
členovou funkci SetTextAlign
s nastavenou nFlags
hodnotou TA_UPDATECP
. Pokud je tento příznak nastaven, systém Windows ignoruje x
a y
při následných voláních ExtTextOut
a používá místo toho aktuální pozici. Pokud aplikace používá TA_UPDATECP
k aktualizaci aktuální pozice, ExtTextOut
nastaví aktuální pozici buď na konec předchozího řádku textu, nebo na pozici určenou posledním prvkem pole, na který odkazuje lpDxWidths
, podle toho, která hodnota je větší.
CDC::FillPath
Zavře všechny otevřené obrázky v aktuální cestě a vyplní jeho interiér pomocí aktuálního štětce a polygonového režimu.
BOOL FillPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Po vyplnění jeho interiéru se cesta zahodí z kontextu zařízení.
CDC::FillRect
Voláním této členské funkce vyplníte daný obdélník pomocí zadaného štětce.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Parametry
lpRect
Odkazuje na RECT
strukturu, která obsahuje logické souřadnice obdélníku, které mají být vyplněny. Pro tento parametr můžete také předat CRect
objekt.
pBrush
Identifikuje štětec použitý k vyplnění obdélníku.
Poznámky
Funkce vyplní celý obdélník, včetně levého a horního ohraničení, ale nevyplní pravé a dolní ohraničení.
Štětec musí být vytvořen buď pomocí CBrush
členských funkcí CreateHatchBrush
, CreatePatternBrush
a , CreateSolidBrush
nebo načíst GetStockObject
funkcí Systému Windows.
Při vyplňování zadaného obdélníku FillRect
nezahrnuje pravé a dolní strany obdélníku. GDI vyplní obdélník nahoru, ale nezahrnuje pravý sloupec a dolní řádek bez ohledu na aktuální režim mapování. FillRect
porovná hodnoty , top
, bottom
left
a right
členy zadaného obdélníku. Je-li menší než nebo rovno top
, nebo je-li bottom
right
menší než nebo rovno left
, obdélník není nakreslen.
FillRect
je podobný CDC::FillSolidRect
; ale FillRect
vezme štětec, a proto lze použít k vyplnění obdélníku plnou barvou, dithered barvu, šrafované štětce nebo vzor. FillSolidRect
používá pouze plnou barvu (označenou parametrem COLORREF
). FillRect
obvykle je pomalejší než FillSolidRect
.
CDC::FillRgn
Vyplní oblast určenou štětcem pRgn
určeným parametrem pBrush
.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Parametry
pRgn
Ukazatel na oblast, která se má vyplnit. Souřadnice pro danou oblast jsou zadány v logických jednotkách.
pBrush
Identifikuje štětec, který se má použít k vyplnění oblasti.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Štětec musí být vytvořen pomocí CBrush
členské funkce CreateHatchBrush
, CreatePatternBrush
, CreateSolidBrush
nebo musí být načten .GetStockObject
Příklad
Podívejte se na příklad pro CRgn::CreateRoundRectRgn
.
CDC::FillSolidRect
Voláním této členské funkce vyplníte daný obdélník zadanou plnou barvou.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Parametry
lpRect
Určuje ohraničující obdélník (v logických jednotkách). Pro tento parametr můžete předat ukazatel na datovou RECT
strukturu nebo CRect
objekt.
clr
Určuje barvu, která se má použít k vyplnění obdélníku.
x
Určuje logickou souřadnici x levého horního rohu obdélníku.
y
Určuje logickou souřadnici y levého horního rohu cílového obdélníku.
cx
Určuje šířku obdélníku.
cy
Určuje výšku obdélníku.
Poznámky
FillSolidRect
je velmi podobný CDC::FillRect
; ale FillSolidRect
používá pouze plné barvy (označené parametrem COLORREF
), zatímco FillRect
trvá štětec, a proto lze použít k vyplnění obdélníku plnou barvou, dithered barvu, šrafované štětce nebo vzor. FillSolidRect
obvykle je rychlejší než FillRect
.
Poznámka:
Při volání FillSolidRect
je barva pozadí, která byla dříve nastavena pomocí SetBkColor
, nastavena na barvu označenou clr
.
CDC::FlattenPath
Transformuje všechny křivky v cestě vybrané na aktuální kontext zařízení a změní každou křivku na posloupnost čar.
BOOL FlattenPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
CDC::FloodFill
Vyplní oblast plochy displeje aktuálním štětcem.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Parametry
x
Určuje logickou souřadnici x bodu, kde začíná plnění.
y
Určuje logickou souřadnici y bodu, kde začíná plnění.
crColor
Určuje barvu hranice.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; v opačném případě se vrátí hodnota 0, pokud se vyplnění nepovedlo dokončit, má daný bod barvu hranice určenou hodnotou crColor
, nebo je bod mimo oblast výřezu.
Poznámky
Předpokládá se, že oblast je ohraničena podle specifikace crColor
. Funkce FloodFill
začíná v bodě určeném x
a y
pokračuje ve všech směrech k barevné hranici.
Členské funkce podporují pouze kontexty a zařízení v paměti a zařízení, která podporují FloodFill
technologii rastrového zobrazení. Informace o RC_BITBLT
možnostech najdete v GetDeviceCaps
členské funkci.
Funkce ExtFloodFill
poskytuje podobné možnosti, ale větší flexibilitu.
CDC::FrameRect
Nakreslí ohraničení kolem obdélníku určeného parametrem lpRect
.
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje logické souřadnice levého horního a pravého dolního rohu obdélníku. Pro tento parametr můžete také předat CRect
objekt.
pBrush
Identifikuje štětec, který se má použít k rámování obdélníku.
Poznámky
Funkce pomocí daného štětce nakreslete ohraničení. Šířka a výška ohraničení je vždy 1 logická jednotka.
Pokud je souřadnice obdélníku bottom
menší nebo rovna top
nebo je right
menší nebo rovna left
, obdélník se nevykreslí.
Ohraničení FrameRect
nakreslené pomocí stejné pozice jako ohraničení nakreslené Rectangle
členskou funkcí pomocí stejných souřadnic (pokud Rectangle
používá pero, které je široké 1 logické jednotky). Vnitřní část obdélníku není vyplněna FrameRect
.
CDC::FrameRgn
Nakreslí ohraničení kolem oblasti určené pRgn
pomocí štětce určeného štětcem pBrush
.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Parametry
pRgn
Odkazuje na CRgn
objekt, který identifikuje oblast, která má být uzavřena v ohraničení. Souřadnice pro danou oblast jsou zadány v logických jednotkách.
pBrush
Odkazuje na CBrush
objekt, který identifikuje štětec, který se má použít k vykreslení ohraničení.
nWidth
Určuje šířku ohraničení ve svislých tahech štětce v jednotkách zařízení.
nHeight
Určuje výšku ohraničení v vodorovných tahech štětce v jednotkách zařízení.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Příklad
Podívejte se na příklad pro CRgn::CombineRgn
.
CDC::FromHandle
Vrátí ukazatel na CDC
objekt při zadání popisovače kontextu zařízení.
static CDC* PASCAL FromHandle(HDC hDC);
Parametry
hDC
Obsahuje popisovač kontextu zařízení s Windows.
Návratová hodnota
Ukazatel může být dočasný a neměl by být uložen mimo okamžité použití.
Poznámky
CDC
Pokud objekt není připojený k popisovači, vytvoří se dočasný CDC
objekt a připojí se.
Příklad
Podívejte se na příklad pro CPrintDialog::GetPrinterDC
.
CDC::GetArcDirection
Vrátí aktuální směr oblouku pro kontext zařízení.
int GetArcDirection() const;
Návratová hodnota
Určuje směr aktuálního oblouku, pokud je úspěšný. Platné návratové hodnoty jsou následující:
AD_COUNTERCLOCKWISE
Oblouky a obdélníky nakreslené proti směru hodinových ručičekAD_CLOCKWISE Arcs
a obdélníky nakreslené po směru hodinových ručiček.
Pokud dojde k chybě, návratová hodnota je nula.
Poznámky
Obloukové a obdélníkové funkce používají směr oblouku.
CDC::GetAspectRatioFilter
Načte nastavení aktuálního filtru poměru stran.
CSize GetAspectRatioFilter() const;
Návratová hodnota
Objekt CSize
představující poměr stran používaný aktuálním filtrem poměru stran.
Poznámky
Poměr stran je poměr vytvořený šířkou a výškou pixelů zařízení. Informace o poměru stran zařízení se používají při vytváření, výběru a zobrazení písem. Systém Windows poskytuje speciální filtr, filtr poměru stran a výběr písem určených pro určitý poměr stran ze všech dostupných písem. Filtr používá poměr stran určený členkou SetMapperFlags
funkce.
CDC::GetBkColor
Vrátí aktuální barvu pozadí.
COLORREF GetBkColor() const;
Návratová hodnota
Hodnota barvy RGB.
Poznámky
Pokud je OPAQUE
režim pozadí , systém použije barvu pozadí k vyplnění mezer ve stylovaných čarách, mezery mezi šrafovanými čarami v štětcích a pozadím v buňkách znaků. Systém také používá barvu pozadí při převodu rastrových obrázků mezi barevnými a monochromatými kontexty zařízení.
CDC::GetBkMode
Vrátí režim pozadí.
int GetBkMode() const;
Návratová hodnota
Aktuální režim pozadí, který může být OPAQUE
nebo TRANSPARENT
.
Poznámky
Režim pozadí definuje, jestli systém před kreslením textu, šrafovanými štětci nebo jakýmkoli stylem pera, který není plnou čárou, odebere existující barvy pozadí na kreslicí ploše.
CDC::GetBoundsRect
Vrátí aktuální kumulovaný ohraničující obdélník pro zadaný kontext zařízení.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Parametry
lpRectBounds
Odkazuje na vyrovnávací paměť, která obdrží aktuální ohraničující obdélník. Obdélník se vrátí v logických souřadnicích.
flags
Určuje, jestli má být ohraničující obdélník po vrácení vymazán. Tento parametr by měl být nulový nebo nastavený na následující hodnotu:
DCB_RESET
Vynutí, aby se ohraničující obdélník po vrácení vymazal.
Návratová hodnota
Určuje aktuální stav ohraničujícího obdélníku, pokud je funkce úspěšná. Může se jednat o kombinaci následujících hodnot:
DCB_ACCUMULATE
K ohraničující akumulace obdélníků dochází.DCB_RESET
Ohraničující obdélník je prázdný.DCB_SET
Ohraničující obdélník není prázdný.DCB_ENABLE
Ohraničení akumulace je zapnutá.DCB_DISABLE
Ohraničující akumulace je vypnutá.
CDC::GetBrushOrg
Načte původ štětce (v jednotkách zařízení) aktuálně vybraný pro kontext zařízení.
CPoint GetBrushOrg() const;
Návratová hodnota
Aktuální původ štětce (v jednotkách zařízení) jako CPoint
objekt.
Poznámky
Počáteční původ štětce je v klientské oblasti (0,0). Vrácená hodnota určuje tento bod v jednotkách zařízení vzhledem k počátku okna plochy.
CDC::GetCharacterPlacement
Načte různé typy informací o řetězci znaků.
DWORD GetCharacterPlacement(
LPCTSTR lpString,
int nCount,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
DWORD GetCharacterPlacement(
CString& str,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
Parametry
lpString
Ukazatel na řetězec znaků, který se má zpracovat.
nCount
Určuje délku řetězce. U verze ANSI se jedná o BYTE
počet a pro funkci Unicode se jedná o WORD
počet. Další informace najdete na webu GetCharacterPlacement
.
nMaxExtent
Určuje maximální rozsah (v logických jednotkách), do kterého se řetězec zpracuje. Znaky, které by při zpracování překročily tento rozsah, se ignorují. Výpočty pro všechna požadovaná pole řazení nebo glyfů platí jenom pro zahrnuté znaky. Tento parametr se používá pouze v případě, GCP_MAXEXTENT
že je v parametru dwFlags
zadána hodnota. Vzhledem k tomu, že funkce zpracovává vstupní řetězec, každý znak a jeho rozsah se přidá do výstupu, rozsahu a dalších polí pouze v případě, že celkový rozsah ještě nepřekročil maximum. Po dosažení limitu se zpracování zastaví.
lpResults
Ukazatel na GCP_Results
strukturu, která přijímá výsledky funkce.
dwFlags
Určuje, jak zpracovat řetězec do požadovaných polí. Tento parametr může být jedna nebo více hodnot uvedených v dwFlags
části GetCharacterPlacement
tématu.
str
Ukazatel na objekt, CString
který se má zpracovat.
Návratová hodnota
Pokud je funkce úspěšná, návratová hodnota je šířka a výška řetězce v logických jednotkách.
Pokud funkce selže, návratová hodnota je nula.
Poznámky
Tato členová funkce emuluje funkce funkce GetCharacterPlacement
, jak je popsáno v sadě Windows SDK.
CDC::GetCharABCWidths
Načte šířky po sobě jdoucích znaků v zadaném rozsahu z aktuálního písma TrueType.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Parametry
nFirstChar
Určuje první znak v rozsahu znaků od aktuálního písma, pro které se vrátí šířky znaků.
nLastChar
Určuje poslední znak v rozsahu znaků od aktuálního písma, pro které se vrátí šířky znaků.
lpabc
Odkazuje na pole ABC
struktur, které obdrží šířky znaků, když funkce vrátí. Toto pole musí obsahovat alespoň tolik struktur, kolik ABC
znaků je v rozsahu určeném nFirstChar
parametry.nLastChar
lpABCF
Odkazuje na vyrovnávací paměť zadanou aplikací s polem ABCFLOAT
struktur, aby při vrácení funkce získala šířky znaků. Šířky vrácené touto funkcí jsou ve formátu IEEE s plovoucí desetinou čárkou.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Šířky se vrátí v logických jednotkách. Tato funkce je úspěšná pouze s písmy TrueType.
Rasterizátor TrueType poskytuje mezery mezi znaky "ABC" po výběru konkrétní velikosti bodu. Mezera "A" je vzdálenost, která je přidána k aktuální pozici před umístěním glyf. Mezera "B" je šířka černé části glyfu. Mezery "C" se přidají do aktuální pozice, aby se zohlednily prázdné znaky napravo od glyfu. Celková rozšířená šířka je uvedena pomocí A + B + C.
Když členová GetCharABCWidths
funkce načte záporné šířky "A" nebo "C" znaku, bude tento znak obsahovat převisy nebo převisy.
Pokud chcete převést šířky ABC na jednotky návrhu písma, aplikace by měla vytvořit písmo, jehož výška (jak je uvedeno v lfHeight
členu LOGFONT
struktury) se rovná hodnotě uložené ve členu ntmSizeEM
NEWTEXTMETRIC
struktury. (Hodnotu člena ntmSizeEM
lze načíst voláním EnumFontFamilies
funkce Windows.)
Šířky ABC výchozího znaku se používají pro znaky, které jsou mimo rozsah aktuálně vybraného písma.
Pokud chcete načíst šířky znaků v písmech jiných než TrueType, měly by aplikace používat GetCharWidth
funkci Windows.
CDC::GetCharABCWidthsI
Načte šířky v logických jednotkách po sobě jdoucích indexů glyfů v zadaném rozsahu z aktuálního písma TrueType.
BOOL GetCharABCWidthsI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPABC lpabc) const;
Parametry
giFirst
Určuje první index glyfů ve skupině po sobě jdoucích indexů glyfů z aktuálního písma. Tento parametr se používá pouze v případě, že pgi
je NULL
parametr .
cgi
Určuje počet indexů glyfů.
pgi
Ukazatel na pole obsahující indexy glyfů. Pokud je NULL
hodnota , giFirst
použije se místo toho parametr. Parametr cgi
určuje počet indexů glyfů v tomto poli.
lpabc
Ukazatel na pole ABC
struktur, které přijímají šířky znaků. Toto pole musí obsahovat alespoň tolik ABC
struktur, kolik obsahuje indexy glyf určené parametrem cgi
.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato členová funkce emuluje funkce funkce GetCharABCWidthsI
, jak je popsáno v sadě Windows SDK.
CDC::GetCharWidth
Načte šířky jednotlivých znaků v po sobě jdoucí skupině znaků z aktuálního písma pomocí m_hAttribDC
kontextu vstupního zařízení.
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
float* lpFloatBuffer) const;
Parametry
nFirstChar
Určuje první znak v po sobě jdoucí skupině znaků v aktuálním písmu.
nLastChar
Určuje poslední znak v po sobě jdoucí skupině znaků v aktuálním písmu.
lpBuffer
Odkazuje na vyrovnávací paměť, která bude přijímat hodnoty šířky pro po sobě jdoucí skupinu znaků v aktuálním písmu.
lpFloatBuffer
Odkazuje na vyrovnávací paměť pro příjem šířky znaků. Vrácené šířky jsou ve 32bitovém formátu IEEE s plovoucí desetinou čárkou. (Šířky se měří podél základního řádku znaků.)
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Pokud nFirstChar
například identifikuje písmeno "a" a nLastChar
identifikuje písmeno "z", funkce načte šířky všech malých písmen.
Funkce ukládá hodnoty do vyrovnávací paměti, na kterou lpBuffer
odkazuje . Tato vyrovnávací paměť musí být dostatečně velká, aby držela všechny šířky. To znamená, že v uvedeném příkladu musí existovat alespoň 26 položek.
Pokud znak v po sobě jdoucí skupině znaků v určitém písmu neexistuje, přiřadí se mu hodnota šířky výchozího znaku.
CDC::GetCharWidthI
Načte šířky v logických souřadnicích po sobě jdoucích indexů glyfů v zadaném rozsahu od aktuálního písma.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Parametry
giFirst
Určuje první index glyfů ve skupině po sobě jdoucích indexů glyfů z aktuálního písma. Tento parametr se používá pouze v případě, že pgi
je NULL
parametr .
cgi
Určuje počet indexů glyfů.
pgi
Ukazatel na pole obsahující indexy glyfů. Pokud je NULL
hodnota , giFirst
použije se místo toho parametr. Parametr cgi
určuje počet indexů glyfů v tomto poli.
lpBuffer
Ukazatel na vyrovnávací paměť, která přijímá šířky.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato členová funkce emuluje funkce funkce GetCharWidthI
, jak je popsáno v sadě Windows SDK.
CDC::GetClipBox
Načte rozměry nejtěsnějšího ohraničujícího obdélníku kolem aktuální hranice oříznutí.
virtual int GetClipBox(LPRECT lpRect) const;
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který má přijímat rozměry obdélníku.
Návratová hodnota
Typ oblasti výřezu. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Oblast výřezu má překrývající se ohraničení.ERROR
Kontext zařízení není platný.NULLREGION
Oblast výřezu je prázdná.SIMPLEREGION
Oblast výřezu neobsahuje překrývající se ohraničení.
Poznámky
Rozměry se zkopírují do vyrovnávací paměti, na kterou lpRect
odkazuje .
CDC::GetColorAdjustment
Načte hodnoty úprav barev pro kontext zařízení.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parametry
lpColorAdjust
Odkazuje na datovou COLORADJUSTMENT
strukturu, aby získal hodnoty úprav barev.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
CDC::GetCurrentBitmap
Vrátí ukazatel na aktuálně vybraný CBitmap
objekt.
CBitmap* GetCurrentBitmap() const;
Návratová hodnota
Ukazatel na CBitmap
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Tato členová funkce může vracet dočasné objekty.
CDC::GetCurrentBrush
Vrátí ukazatel na aktuálně vybraný CBrush
objekt.
CBrush* GetCurrentBrush() const;
Návratová hodnota
Ukazatel na CBrush
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Tato členová funkce může vracet dočasné objekty.
CDC::GetCurrentFont
Vrátí ukazatel na aktuálně vybraný CFont
objekt.
CFont* GetCurrentFont() const;
Návratová hodnota
Ukazatel na CFont
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Tato členová funkce může vracet dočasné objekty.
CDC::GetCurrentPalette
Vrátí ukazatel na aktuálně vybraný CPalette
objekt.
CPalette* GetCurrentPalette() const;
Návratová hodnota
Ukazatel na CPalette
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Tato členová funkce může vracet dočasné objekty.
CDC::GetCurrentPen
Vrátí ukazatel na aktuálně vybraný CPen
objekt.
CPen* GetCurrentPen() const;
Návratová hodnota
Ukazatel na CPen
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Tato členová funkce může vracet dočasné objekty.
CDC::GetCurrentPosition
Načte aktuální pozici (v logických souřadnicích).
CPoint GetCurrentPosition() const;
Návratová hodnota
Aktuální pozice jako CPoint
objekt.
Poznámky
Aktuální pozici lze nastavit pomocí MoveTo
členské funkce.
CDC::GetDCBrushColor
Načte aktuální barvu štětce.
COLORREF GetDCBrushColor() const;
Návratová hodnota
Pokud je funkce úspěšná, návratová hodnota je COLORREF
hodnota aktuální barvy štětce.
Pokud funkce selže, návratová hodnota je CLR_INVALID
.
Poznámky
Tato členová funkce emuluje funkce funkce GetDCBrushColor
, jak je popsáno v sadě Windows SDK.
CDC::GetDCPenColor
Načte aktuální barvu pera.
COLORREF GetDCPenColor() const;
Návratová hodnota
Pokud je funkce úspěšná, návratová hodnota je COLORREF
hodnota aktuální barvy pera.
Pokud funkce selže, návratová hodnota je CLR_INVALID
.
Poznámky
Tato členová funkce využívá funkci GetDCPenColor
Win32, jak je popsáno v sadě Windows SDK.
CDC::GetDeviceCaps
Načte širokou škálu informací o zařízení specifickém pro dané zařízení.
int GetDeviceCaps(int nIndex) const;
Parametry
nIndex
Určuje typ informací, které se mají vrátit. Seznam hodnot najdete GetDeviceCaps
v sadě Windows SDK.
Návratová hodnota
Hodnota požadované schopnosti, pokud je funkce úspěšná.
Příklad
Podívejte se na příklad pro CPrintDialog::GetDefaults
.
CDC::GetFontData
Načte informace o metrikách písma ze škálovatelného souboru písma.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Parametry
dwTable
Určuje název tabulky metrik, která se má vrátit. Tento parametr může být jednou z tabulek metrik zdokumentovaných ve specifikaci TrueType Font Files publikované společností Microsoft Corporation. Pokud je tento parametr 0, informace se načtou od začátku souboru písma.
dwOffset
Určuje posun od začátku tabulky, na které se mají začít načítat informace. Pokud je tento parametr 0, informace se načtou od začátku tabulky určené parametrem dwTable
. Pokud je tato hodnota větší nebo rovna velikosti tabulky, GetFontData
vrátí hodnotu 0.
lpData
Odkazuje na vyrovnávací paměť, která obdrží informace o písmu. Pokud je NULL
tato hodnota, vrátí funkce velikost vyrovnávací paměti vyžadovanou pro data písma zadaná v parametru dwTable
.
cbData
Určuje délku informací, které se mají načíst, v bajtech. Pokud je tento parametr 0, GetFontData
vrátí velikost dat zadaných v parametru dwTable
.
Návratová hodnota
Určuje počet bajtů vrácených v vyrovnávací paměti, na kterou lpData
odkazuje, pokud je funkce úspěšná, jinak -1.
Poznámky
Informace k načtení jsou identifikovány zadáním posunu do souboru písma a délky informací, které se mají vrátit.
Aplikace může někdy pomocí GetFontData
členské funkce uložit písmo TrueType s dokumentem. Za tímto účelem aplikace určí, zda lze písmo vložit a pak načte celý soubor písma, který určuje hodnotu 0 pro dwTable
dwOffset
, a cbData
parametry.
Aplikace můžou určit, jestli je možné vložit písmo, a to tak, že zkontrolují otmfsType
člen OUTLINETEXTMETRIC
struktury. Pokud je nastavená bit 1, otmfsType
vkládání není pro písmo povolené. Pokud je bit 1 jasný, je možné písmo vložit. Pokud je nastavená bit 2, vkládání je jen pro čtení.
Pokud se aplikace pokusí použít tuto funkci k načtení informací pro písmo jiného typu než TrueType, vrátí členová GetFontData
funkce hodnotu -1.
CDC::GetFontLanguageInfo
Vrátí informace o aktuálně vybraném písmu pro zadaný kontext zobrazení.
DWORD GetFontLanguageInfo() const;
Návratová hodnota
Vrácená hodnota identifikuje charakteristiky aktuálně vybraného písma. Úplný seznam možných hodnot naleznete v tématu GetFontLanguageInfo
.
Poznámky
Tato členová funkce emuluje funkce funkce GetFontLanguageInfo
, jak je popsáno v sadě Windows SDK.
CDC::GetGlyphOutline
Načte křivku obrysu nebo rastrový obrázek pro znak osnovy v aktuálním písmu.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Parametry
nChar
Určuje znak, pro který se mají vrátit informace.
nFormat
Určuje formát, ve kterém má funkce vracet informace. Může to být jedna z následujících hodnot nebo 0:
Hodnota | Význam |
---|---|
GGO_BITMAP |
Vrátí rastrový obrázek glyf. Když se funkce vrátí, vyrovnávací paměť, na kterou lpBuffer odkazuje, obsahuje rastrový obrázek o rozměrech 1 bitů na pixel, jehož řádky začínají na hranicích s dvojitým heslem. |
GGO_NATIVE |
Vrátí datové body křivky v nativním formátu rasterizátoru pomocí jednotek zařízení. Pokud je tato hodnota zadaná, všechny transformace zadané v lpmat2 této hodnotě budou ignorovány. |
Pokud je hodnota nFormat
0, funkce vyplní GLYPHMETRICS
strukturu, ale nevrací data přehledu glyfů.
lpgm
Odkazuje na GLYPHMETRICS
strukturu, která popisuje umístění glyf v buňce znaku.
cbBuffer
Určuje velikost vyrovnávací paměti, do které funkce kopíruje informace o znaku osnovy. Pokud je tato hodnota 0 a nFormat
parametr je buď hodnota GGO_BITMAP
, nebo GGO_NATIVE
hodnoty, vrátí funkce požadovanou velikost vyrovnávací paměti.
lpBuffer
Odkazuje na vyrovnávací paměť, do které funkce kopíruje informace o znaku osnovy. Pokud nFormat
určuje GGO_NATIVE
hodnotu, informace se zkopírují ve formě TTPOLYGONHEADER
a TTPOLYCURVE
struktur. Pokud je tato hodnota a nFormat
jedná se NULL
o GGO_BITMAP
hodnotu nebo GGO_NATIVE
hodnotu, vrátí funkce požadovanou velikost vyrovnávací paměti.
lpmat2
Odkazuje na MAT2
strukturu, která obsahuje transformační matici znaku. Tento parametr nemůže být NULL
, ani když GGO_NATIVE
je zadána hodnota pro nFormat
.
Návratová hodnota
Velikost vyrovnávací paměti požadované pro načtené informace v bajtech, pokud cbBuffer
je 0 nebo lpBuffer
je NULL
. Jinak je to kladná hodnota, pokud je funkce úspěšná, nebo -1, pokud dojde k chybě.
Poznámky
Aplikace může otáčet znaky načtené v rastrovém formátu zadáním transformační matice 2 po 2 ve struktuře, na kterou lpmat2
odkazuje .
Obrys glyfů se vrátí jako řada obrysů. Každý obrys je definován strukturou TTPOLYGONHEADER
následovanou tolika TTPOLYCURVE
strukturami, kolik je třeba popsat. Všechny body se vrátí jako POINTFX
struktury a představují absolutní pozice, nikoli relativní pohyby. Výchozí bod zadaný pfxStart
členem TTPOLYGONHEADER
struktury je bod, na kterém začíná obrys obrysu. Následující TTPOLYCURVE
struktury můžou být buď záznamy čar, nebo spline záznamy. Polyline records are a series of points; čáry nakreslené mezi body popisují obrys znaku. Spline records represent the quadratic curves used by TrueType (to is, quadratic b-splines).
CDC::GetGraphicsMode
Načte aktuální grafický režim pro zadaný kontext zařízení.
int GetGraphicsMode() const;
Návratová hodnota
Vrátí aktuální grafický režim při úspěchu. Seznam hodnot, které tato metoda může vrátit, naleznete v tématu GetGraphicsMode
.
Vrátí hodnotu 0 při selhání.
Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Tato metoda zabalí funkci GetGraphicsMode
GDI systému Windows .
CDC::GetHalftoneBrush
Voláním této členské funkce načtěte půltónový štětec.
static CBrush* PASCAL GetHalftoneBrush();
Návratová hodnota
Ukazatel na CBrush
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Polotónový štětec zobrazuje pixely, které jsou alternativně popředí a barvy pozadí pro vytvoření diterovaného vzorku. Následující diagram znázorňuje příklad diterovaného vzoru vytvořeného polotónovým štětcem:
Diagram znázorňuje, jak se barva pozadí černého pozadí a barva popředí žluté barvy zkombinují do vzoru tak, že se střídají černé a žluté pixely, aby se vytvořily oddáděné pero tahy.
CDC::GetKerningPairs
Načte dvojice prokládání znaků pro písmo, které je aktuálně vybrané v zadaném kontextu zařízení.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Parametry
nPairs
Určuje počet KERNINGPAIR
struktur, na které lpkrnpair
odkazuje . Funkce nebude kopírovat více párů prokládání, než je určeno nPairs
.
lpkrnpair
Odkazuje na pole KERNINGPAIR
struktur, které při vrácení funkce obdrží prokládání párů. Toto pole musí obsahovat alespoň tolik struktur, kolik určuje nPairs
. Pokud je NULL
tento parametr, vrátí funkce celkový počet párů prokládání písma.
Návratová hodnota
Určuje počet párů prokládání načtených nebo celkový počet párů prokládání v písmu, pokud je funkce úspěšná. Nula se vrátí, pokud funkce selže nebo pro písmo neexistují žádné dvojice prokládání.
CDC::GetLayout
Voláním této členské funkce určíte rozložení textu a grafiky pro kontext zařízení, například tiskárnu nebo metasoubor.
DWORD GetLayout() const;
Návratová hodnota
Pokud je to úspěšné, označí se rozložení pro aktuální kontext zařízení. V opačném případě hodnota GDI_ERROR
. Pro rozšířené informace o chybě volejte GetLastError
. Seznam příznaků rozložení najdete v tématu CDC::SetLayout
.
Poznámky
Výchozí rozložení je zleva doprava.
CDC::GetMapMode
Načte aktuální režim mapování.
int GetMapMode() const;
Návratová hodnota
Režim mapování.
Poznámky
Popis režimů mapování najdete v SetMapMode
členské funkci.
Poznámka:
Pokud voláte SetLayout
změnu rozložení řadiče domény zprava doleva, SetLayout
automaticky změní režim mapování na MM_ISOTROPIC
. V důsledku toho se vrátí jakékoli následné volání GetMapMode
MM_ISOTROPIC
.
CDC::GetMiterLimit
Vrátí limit miter pro kontext zařízení.
float GetMiterLimit() const;
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Limit miteru se používá při kreslení geometrických čar, které mají spojení miteru.
CDC::GetNearestColor
Vrátí plnou barvu, která nejlépe odpovídá zadané logické barvě.
COLORREF GetNearestColor(COLORREF crColor) const;
Parametry
crColor
Určuje barvu, která se má shodovat.
Návratová hodnota
Hodnota barvy RGB (červená, zelená, modrá), která definuje plnou barvu nejblíže hodnotě crColor
, kterou může zařízení reprezentovat.
Poznámky
Dané zařízení musí být schopné tuto barvu znázorňovat.
CDC::GetOutlineTextMetrics
Načte informace o metrice pro písma TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Parametry
lpotm
Odkazuje na pole OUTLINETEXTMETRIC
struktur. Pokud je NULL
tento parametr , vrátí funkce velikost vyrovnávací paměti vyžadované pro načtená data metriky.
cbData
Určuje velikost vyrovnávací paměti v bajtech, do které se vrátí informace.
lpotm
Odkazuje na OUTLINETEXTMETRIC
strukturu. Pokud je NULL
tento parametr , vrátí funkce velikost vyrovnávací paměti vyžadované pro načtené informace metriky.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Struktura OUTLINETEXTMETRIC
obsahuje většinu informací o metrikách písma, které jsou k dispozici ve formátu TrueType, včetně TEXTMETRIC
struktury. Poslední čtyři členy OUTLINETEXTMETRIC
struktury jsou ukazatele na řetězce. Aplikace by měly pro tyto řetězce přidělit místo kromě místa potřebného pro ostatní členy. Vzhledem k tomu, že neexistuje žádný systémový limit velikosti řetězců, nejjednodušší metodou přidělování paměti je načtení požadované velikosti zadáním hodnoty NULL pro lpotm
první volání GetOutlineTextMetrics
funkce.
CDC::GetOutputCharWidth
Používá kontext m_hDC
výstupního zařízení a načte šířky jednotlivých znaků v po sobě jdoucí skupině znaků z aktuálního písma.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Parametry
nFirstChar
Určuje první znak v po sobě jdoucí skupině znaků v aktuálním písmu.
nLastChar
Určuje poslední znak v po sobě jdoucí skupině znaků v aktuálním písmu.
lpBuffer
Odkazuje na vyrovnávací paměť, která bude přijímat hodnoty šířky pro po sobě jdoucí skupinu znaků v aktuálním písmu.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Pokud nFirstChar
například identifikuje písmeno "a" a nLastChar
identifikuje písmeno "z", funkce načte šířky všech malých písmen.
Funkce ukládá hodnoty do vyrovnávací paměti, na kterou lpBuffer
odkazuje . Tato vyrovnávací paměť musí být dostatečně velká, aby držela všechny šířky; to znamená, že v uvedeném příkladu musí být alespoň 26 položek.
Pokud znak v po sobě jdoucí skupině znaků v určitém písmu neexistuje, přiřadí se mu hodnota šířky výchozího znaku.
CDC::GetOutputTabbedTextExtent
Voláním této členské funkce vypočítáte šířku a výšku řetězce znaků pomocí m_hDC
kontextu výstupního zařízení.
CSize GetOutputTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetOutputTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parametry
lpszString
Odkazuje na řetězec znaků, který se má změřit. Pro tento parametr můžete také předat CString
objekt.
nCount
Určuje délku řetězce , na který lpszString
odkazuje .
nTabPositions
Určuje počet pozic zarážky tabulátoru v poli, na který lpnTabStopPositions
odkazuje .
lpnTabStopPositions
Odkazuje na pole celých čísel obsahujících pozice zarážky tabulátoru v logických jednotkách. Zarážky tabulátoru musí být seřazeny vzestupně; nejmenší hodnota x by měla být první položkou v matici. Zadní karty nejsou povolené.
str
Objekt CString
obsahující zadané znaky, které se mají měřit.
Návratová hodnota
Dimenze řetězce (v logických jednotkách) v objektu CSize
.
Poznámky
Pokud řetězec obsahuje jeden nebo více znaků tabulátoru, je šířka řetězce založena na zarážek tabulátoru určených znakem lpnTabStopPositions
. Funkce používá aktuálně vybrané písmo k výpočtu dimenzí řetězce.
Aktuální oblast výřezu nepřesazuje šířku a výšku vrácenou GetOutputTabbedTextExtent
funkcí.
Vzhledem k tomu, že některá zařízení neumisťují znaky do běžných polí buněk (tj. prokládání znaků), nemusí se součet rozsahů znaků v řetězci rovnat rozsahu řetězce.
Pokud nTabPositions
je 0 a lpnTabStopPositions
je NULL
, tabulátory jsou rozšířeny na osm průměrných znaků šířky. Pokud nTabPositions
je 1, zarážky tabulátoru budou odděleny vzdáleností určenou první hodnotou v matici, na kterou lpnTabStopPositions
odkazuje. Pokud lpnTabStopPositions
odkazuje na více než jednu hodnotu, nastaví se zarážka tabulátoru pro každou hodnotu v matici až k číslu určenému znakem nTabPositions
.
CDC::GetOutputTextExtent
Voláním této členské funkce použijete kontext m_hDC
výstupního zařízení a vypočítá šířku a výšku řádku textu pomocí aktuálního písma.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Parametry
lpszString
Odkazuje na řetězec znaků. Pro tento parametr můžete také předat CString
objekt.
nCount
Určuje délku řetězce , na který lpszString
odkazuje .
str
Objekt CString
obsahující zadané znaky, které se mají měřit.
Návratová hodnota
Dimenze řetězce (v logických jednotkách) vrácené v objektu CSize
.
Poznámky
Aktuální oblast výřezu nemá vliv na šířku a výšku vrácenou GetOutputTextExtent
hodnotou .
Vzhledem k tomu, že některá zařízení neumisťují znaky do běžných polí buněk (tj. provádí prokládání), nemusí se součet rozsahů znaků v řetězci rovnat rozsahu řetězce.
CDC::GetOutputTextMetrics
Načte metriky pro aktuální písmo pomocí m_hDC
kontextu výstupního zařízení.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parametry
lpMetrics
Odkazuje na TEXTMETRIC
strukturu, která přijímá metriky.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
CDC::GetPath
Načte souřadnice definující koncové body čar a kontrolní body křivek nalezených v cestě vybrané v kontextu zařízení.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Parametry
lpPoints
Odkazuje na pole datových POINT
struktur nebo CPoint
objektů, kde jsou umístěny koncové body čáry a řídicí body křivky.
lpTypes
Odkazuje na pole bajtů, kde jsou umístěny typy vrcholů. Hodnoty jsou jedna z následujících hodnot:
PT_MOVETO
Určuje, že odpovídající bod začínálpPoints
nesouvislým obrázkem.PT_LINETO
Určuje, že předchozí bod a odpovídající bod jsoulpPoints
koncové body řádku.PT_BEZIERTO
Určuje, že odpovídající bod jelpPoints
řídicí bod nebo koncový bod pro křivku Bzier.
PT_BEZIERTO
typy se vždy vyskytují v sadách tří. Bod v cestě bezprostředně před nimi definuje výchozí bod pro křivku Bzier. První dva PT_BEZIERTO
body jsou kontrolní body a třetí PT_BEZIERTO
bod je koncový bod (pokud je pevně zakódován).
PT_BEZIERTO
Nebo PT_LINETO
typ lze kombinovat s následujícím příznakem (pomocí bitového operátoru OR) k označení, že odpovídající bod je posledním bodem na obrázku a že by měl být obrázek uzavřen:
PT_CLOSEFIGURE
Určuje, že se obrázek automaticky zavře po vykreslení odpovídající čáry nebo křivky. Obrázek je uzavřen vykreslením čáry ze koncového bodu čáry nebo křivky k bodu odpovídajícímu poslednímuPT_MOVETO
.
nCount
Určuje celkový počet datových POINT
struktur, které mohou být umístěny v lpPoints
poli. Tato hodnota musí být stejná jako počet bajtů, které mohou být umístěny v matici lpTypes
.
Návratová hodnota
nCount
Pokud je parametr nenulový, je počet bodů výčtu. Pokud nCount
je 0, celkový počet bodů v cestě (a GetPath
nezapisuje nic do vyrovnávací paměti). Pokud nCount
je nenulová a je menší než počet bodů v cestě, je návratová hodnota -1.
Poznámky
Kontext zařízení musí obsahovat uzavřenou cestu. Body cesty se vrátí v logických souřadnicích. Body jsou uložené v cestě v souřadnicích zařízení, takže GetPath
změní body ze souřadnic zařízení na logické souřadnice pomocí inverzní funkce aktuální transformace. Členské FlattenPath
funkce může být volána před GetPath
, aby se všechny křivky v cestě převely na segmenty čáry.
Příklad
Podívejte se na příklad pro CDC::BeginPath
.
CDC::GetPixel
Načte hodnotu barvy RGB pixelu v bodě určeném znakem x
*y*
.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Parametry
x
Určuje logickou souřadnici x bodu, který se má prověřit.
y
Určuje logickou souřadnici y bodu, který má být zkoumán.
point
Určuje logické souřadnice x a y bodu, který se má prověřit.
Návratová hodnota
Pro některou verzi funkce je hodnota barvy RGB pro barvu daného bodu. Je -1, pokud souřadnice nezadávají bod v oblasti výřezu.
Poznámky
Bod musí být v oblasti výřezu. Pokud bod není v oblasti výřezu, funkce nemá žádný vliv a vrátí hodnotu -1.
Funkci nepodporují GetPixel
všechna zařízení. Další informace najdete v RC_BITBLT
rastrové funkci v rámci GetDeviceCaps
členské funkce.
Členová GetPixel
funkce má dvě formy. První má dvě souřadnicové hodnoty; druhá přebírá POINT
strukturu nebo CPoint
objekt.
CDC::GetPolyFillMode
Načte aktuální režim vyplňování mnohoúhelníku.
int GetPolyFillMode() const;
Návratová hodnota
Aktuální režim vyplněný mnohoúhelníkem nebo ALTERNATE
WINDING
, pokud je funkce úspěšná.
Poznámky
SetPolyFillMode
Popis režimů mnohoúhelníku vyplňování najdete v členské funkci.
CDC::GetROP2
Načte aktuální režim výkresu.
int GetROP2() const;
Návratová hodnota
Režim kreslení. Seznam hodnot režimu kreslení najdete v SetROP2
členské funkci.
Poznámky
Režim kreslení určuje, jak se barvy pera a vnitřní části vyplněných objektů kombinují s barvou, která je již na ploše zobrazení.
CDC::GetSafeHdc
Voláním této členské funkce získáte m_hDC
kontext výstupního zařízení.
HDC GetSafeHdc() const;
Návratová hodnota
Popisovač kontextu zařízení.
Poznámky
Tato členová funkce funguje také s ukazateli null.
CDC::GetStretchBltMode
Načte aktuální režim roztažení rastrového obrázku.
int GetStretchBltMode() const;
Návratová hodnota
Návratová hodnota určuje aktuální režim roztažení rastrového obrázku – STRETCH_ANDSCANS
STRETCH_DELETESCANS
, nebo STRETCH_ORSCANS
– pokud je funkce úspěšná.
Poznámky
Režim rastrového roztažení definuje způsob odebrání informací z rastrových obrázků, které jsou roztaženy nebo komprimovány členovou StretchBlt
funkcí.
Režimy STRETCH_ANDSCANS
a STRETCH_ORSCANS
režimy se obvykle používají k zachování pixelů popředí v monochromatických bitmapách. Režim STRETCH_DELETESCANS
se obvykle používá k zachování barvy v barevných bitmapách.
CDC::GetTabbedTextExtent
Voláním této členské funkce vypočítáte šířku a výšku řetězce znaků pomocí m_hAttribDC
kontextu atributu zařízení.
CSize GetTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parametry
lpszString
Odkazuje na řetězec znaků. Pro tento parametr můžete také předat CString
objekt.
nCount
Určuje délku řetězce , na který lpszString
odkazuje .
nTabPositions
Určuje počet pozic zarážky tabulátoru v poli, na který lpnTabStopPositions
odkazuje .
lpnTabStopPositions
Odkazuje na pole celých čísel obsahujících pozice zarážky tabulátoru v logických jednotkách. Zarážky tabulátoru musí být seřazeny vzestupně; nejmenší hodnota x by měla být první položkou v matici. Zadní karty nejsou povolené.
str
Objekt CString
obsahující zadané znaky, které se mají nakreslit.
Návratová hodnota
Dimenze řetězce (v logických jednotkách) v objektu CSize
.
Poznámky
Pokud řetězec obsahuje jeden nebo více znaků tabulátoru, je šířka řetězce založena na zarážek tabulátoru určených znakem lpnTabStopPositions
. Funkce používá aktuálně vybrané písmo k výpočtu dimenzí řetězce.
Aktuální oblast výřezu nepřesazuje šířku a výšku vrácenou GetTabbedTextExtent
funkcí.
Vzhledem k tomu, že některá zařízení neumisťují znaky do běžných polí buněk (tj. prokládání znaků), nemusí se součet rozsahů znaků v řetězci rovnat rozsahu řetězce.
Pokud nTabPositions
je 0 a lpnTabStopPositions
je NULL
, tabulátory se rozbalí na osmkrát průměrnou šířku znaků. Pokud nTabPositions
je 1, zarážky tabulátoru budou odděleny vzdáleností určenou první hodnotou v matici, na kterou lpnTabStopPositions
odkazuje. Pokud lpnTabStopPositions
odkazuje na více než jednu hodnotu, nastaví se zarážka tabulátoru pro každou hodnotu v matici až k číslu určenému znakem nTabPositions
.
CDC::GetTextAlign
Načte stav příznaků zarovnání textu pro kontext zařízení.
UINT GetTextAlign() const;
Návratová hodnota
Stav příznaků zarovnání textu Vrácená hodnota je jedna nebo více z následujících hodnot:
TA_BASELINE
Určuje zarovnání osy x a účaří zvoleného písma v ohraničujícím obdélníku.TA_BOTTOM
Určuje zarovnání osy x a dolní části ohraničujícího obdélníku.TA_CENTER
Určuje zarovnání osy y a středu ohraničujícího obdélníku.TA_LEFT
Určuje zarovnání osy y a levé strany ohraničujícího obdélníku.TA_NOUPDATECP
Určuje, že aktuální pozice není aktualizována.TA_RIGHT
Určuje zarovnání osy y a pravé strany ohraničujícího obdélníku.TA_TOP
Určuje zarovnání osy x a horní části ohraničujícího obdélníku.TA_UPDATECP
Určuje, že se aktuální pozice aktualizuje.
Poznámky
Příznaky zarovnání textu určují, jak TextOut
členské ExtTextOut
funkce zarovnají řetězec textu vzhledem k počátečnímu bodu řetězce. Příznaky zarovnání textu nemusí být nutně jednobitové a můžou být rovny 0. Pokud chcete otestovat, jestli je nastavený příznak, měla by aplikace postupovat takto:
Použijte bitový operátor OR (
|
) na příznak a související příznaky seskupené následujícím způsobem:TA_LEFT
,TA_CENTER
aTA_RIGHT
TA_BASELINE
,TA_BOTTOM
aTA_TOP
TA_NOUPDATECP
aTA_UPDATECP
Použití bitového operátoru AND jazyka
&
C++ na výsledek a návratovouGetTextAlign
hodnotu .Otestujte rovnost tohoto výsledku a příznaku.
CDC::GetTextCharacterExtra
Načte aktuální nastavení pro množství mezer mezi znaky.
int GetTextCharacterExtra() const;
Návratová hodnota
Množství mezer mezi znaky.
Poznámky
GDI přidá toto řádkování ke každému znaku, včetně znaků zalomení, když zapíše řádek textu do kontextu zařízení.
Výchozí hodnota pro množství mezer mezi znaky je 0.
CDC::GetTextColor
Načte aktuální barvu textu.
COLORREF GetTextColor() const;
Návratová hodnota
Aktuální barva textu jako hodnota barvy RGB.
Poznámky
Barva textu je barva popředí znaků nakreslených pomocí členské funkce TextOut
výstupu textu GDI , ExtTextOut
a TabbedTextOut
.
CDC::GetTextExtent
Voláním této členské funkce vypočítáte šířku a výšku řádku textu pomocí aktuálního písma k určení rozměrů.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Parametry
lpszString
Odkazuje na řetězec znaků. Pro tento parametr můžete také předat CString
objekt.
nCount
Určuje počet znaků v řetězci.
str
Objekt CString
, který obsahuje zadané znaky.
Návratová hodnota
Dimenze řetězce (v logických jednotkách) v objektu CSize
.
Poznámky
Informace se načtou z m_hAttribDC
kontextu atributu zařízení.
Ve výchozím nastavení se předpokládá, že text, pro který načte dimenzi, GetTextExtent
je nastaven podél vodorovné čáry (tedy řídicí znak je 0). Pokud vytvoříte písmo určující nenulový řídicí znak, musíte převést úhel textu explicitně, abyste získali rozměry řetězce.
Aktuální oblast výřezu nemá vliv na šířku a výšku vrácenou GetTextExtent
hodnotou .
Vzhledem k tomu, že některá zařízení neumisťují znaky do běžných polí buněk (tj. provádí prokládání), nemusí se součet rozsahů znaků v řetězci rovnat rozsahu řetězce.
CDC::GetTextExtentExPointI
Načte počet znaků v zadaném řetězci, který se vejde do zadaného místa, a vyplní matici textovým rozsahem pro každý z těchto znaků.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Parametry
pgiIn
Ukazatel na pole indexů glyfů, pro které se mají načíst rozsahy.
cgi
Určuje počet glyfů v poli, na který pgiIn
odkazuje .
nMaxExtent
Určuje maximální povolenou šířku v logických jednotkách formátovaného řetězce.
lpnFit
Ukazatel na celé číslo, které obdrží počet maximálního počtu znaků, které se vejdou do prostoru určeného znakem nMaxExtent
. Pokud lpnFit
je , nMaxExtent
NULL
je ignorována.
alpDx
Ukazatel na pole celých čísel, která přijímají částečné rozsahy glyfů. Každý prvek v poli dává vzdálenost v logických jednotkách mezi začátkem indexů glyfů a jedním z glyfů, které se vejdou do prostoru určeného nMaxExtent
. Ačkoli toto pole by mělo mít alespoň tolik prvků jako indexy glyf určené cgi
, funkce vyplní pole rozsahy pouze pro tolik indexů glyfů, kolik je určeno lpnFit
. Pokud lpnDx
ano NULL
, funkce nevypočítává částečné šířky řetězců.
lpSize
Ukazatel na SIZE
strukturu, která přijímá rozměry pole indexů glyfů v logických jednotkách. Tato hodnota nemůže být NULL
.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato členová funkce emuluje funkce funkce GetTextExtentExPointI
, jak je popsáno v sadě Windows SDK.
CDC::GetTextExtentPointI
Načte šířku a výšku zadaného pole indexů glyfů.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Parametry
pgiIn
Ukazatel na pole indexů glyfů, pro které se mají načíst rozsahy.
cgi
Určuje počet glyfů v poli, na který pgiIn
odkazuje .
lpSize
Ukazatel na SIZE
strukturu, která přijímá rozměry pole indexů glyfů v logických jednotkách. Tato hodnota nemůže být NULL
.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato členová funkce emuluje funkce funkce GetTextExtentPointI
, jak je popsáno v sadě Windows SDK.
CDC::GetTextFace
Voláním této členské funkce zkopírujete název písma aktuálního písma do vyrovnávací paměti.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Parametry
nCount
Určuje velikost vyrovnávací paměti (v bajtech). Pokud je název typeface delší než počet bajtů určených tímto parametrem, název se zkrátí.
lpszFacename
Odkazuje na vyrovnávací paměť pro název písma.
rString
Odkaz na CString
objekt.
Návratová hodnota
Počet bajtů zkopírovaných do vyrovnávací paměti, včetně ukončujícího znaku null. Pokud dojde k chybě, je to 0.
Poznámky
Název typeface se zkopíruje jako řetězec ukončený hodnotou null.
CDC::GetTextMetrics
Načte metriky pro aktuální písmo pomocí kontextu atributu zařízení.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parametry
lpMetrics
Odkazuje na TEXTMETRIC
strukturu, která přijímá metriky.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
CDC::GetViewportExt
Načte rozsahy x a y zobrazení kontextu zařízení.
CSize GetViewportExt() const;
Návratová hodnota
Rozsahy x a y (v jednotkách zařízení) jako CSize
objekt.
CDC::GetViewportOrg
Načte souřadnice x a y původu oblasti zobrazení přidruženého k kontextu zařízení.
CPoint GetViewportOrg() const;
Návratová hodnota
Původ oblasti zobrazení (v souřadnicích zařízení) jako CPoint
objekt.
CDC::GetWindow
Vrátí okno přidružené k kontextu zařízení pro zobrazení.
CWnd* GetWindow() const;
Návratová hodnota
Ukazatel na CWnd
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Jedná se o pokročilou funkci. Tato členová funkce například nemusí při tisku nebo v náhledu tisku vrátit okno zobrazení. Vždy vrátí okno přidružené k výstupu. Výstupní funkce, které používají daný dc draw into this window.
CDC::GetWindowExt
Načte rozsahy x a y okna přidruženého k kontextu zařízení.
CSize GetWindowExt() const;
Návratová hodnota
Rozsahy x a y (v logických jednotkách) jako CSize
objekt.
CDC::GetWindowOrg
Načte souřadnice x a y původu okna přidruženého k kontextu zařízení.
CPoint GetWindowOrg() const;
Návratová hodnota
Původ okna (v logických souřadnicích) jako CPoint
objekt.
CDC::GetWorldTransform
Načte aktuální světovou mezeru na transformaci stránkového prostoru.
BOOL GetWorldTransform(XFORM& rXform) const;
Parametry
rXform
Odkaz na XFORM
strukturu, která přijímá aktuální světovou mezeru na transformaci stránkového prostoru.
Návratová hodnota
Vrátí nenulovou hodnotu úspěchu.
Vrátí hodnotu 0 při selhání.
Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Tato metoda zabalí funkci GetWorldTransform
GDI systému Windows .
CDC::GradientFill
Voláním této členské funkce vyplníte obdélníkové a trojúhelníkové struktury barvou, která hladce zmizí z jedné strany na druhou.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Parametry
pVertices
Ukazatel na pole TRIVERTEX
struktur, které každý definuje vrchol trojúhelníku.
nVertices
Počet vrcholů.
pMesh
GRADIENT_TRIANGLE
Pole struktur v režimu trojúhelníku nebo pole GRADIENT_RECT
struktur v režimu obdélníku
nMeshElements
Počet prvků (trojúhelníky nebo obdélníky) v pMesh
.
dwMode
Určuje režim přechodové výplně. Seznam možných hodnot najdete GradientFill
v sadě Windows SDK.
Návratová hodnota
TRUE
v případě úspěchu; jinak FALSE
.
Poznámky
Další informace najdete GradientFill
v sadě Windows SDK.
CDC::GrayString
Nakreslí šedě (šedý) text na dané místo tím, že text zapíše do obrázku paměti, ztlumí rastrový obrázek a zkopíruje rastrový obrázek do zobrazení.
virtual BOOL GrayString(
CBrush* pBrush,
BOOL (CALLBACK* lpfnOutput)(
HDC,
LPARAM,
int),
LPARAM lpData,
int nCount,
int x,
int y,
int nWidth,
int nHeight);
Parametry
pBrush
Identifikuje štětec, který se má použít pro dimming (šedi).
lpfnOutput
Určuje adresu instance procedury pro funkci zpětného volání zadanou aplikací, která bude nakreslit řetězec. Další informace najdete v popisu funkce zpětného volání systému Windows.OutputFunc
Pokud je NULL
tento parametr , systém používá funkci Windows TextOut
k vykreslení řetězce a lpData
předpokládá se, že je dlouhý ukazatel na řetězec znaků, který má být výstupem.
lpData
Určuje daleko ukazatel na data, která se mají předat výstupní funkci. Pokud lpfnOutput
ano NULL
, lpData
musí být dlouhý ukazatel na řetězec, který má být výstupem.
nCount
Určuje počet znaků, které mají být výstupem. Pokud je tento parametr 0, GrayString
vypočítá délku řetězce (za předpokladu, že lpData
je ukazatel na řetězec). Pokud nCount
je 1 a funkce odkazovaná na lpfnOutput
hodnotu 0, obrázek se zobrazí, ale není zašedlý.
x
Určuje logickou souřadnici x počáteční pozice obdélníku, která uzavře řetězec.
y
Určuje logickou souřadnici y počáteční pozice obdélníku, která uzavře řetězec.
nWidth
Určuje šířku (v logických jednotkách) obdélníku, který uzavře řetězec. Pokud nWidth
je 0, GrayString
vypočítá šířku oblasti za předpokladu lpData
, že je ukazatel na řetězec.
nHeight
Určuje výšku (v logických jednotkách) obdélníku, který uzavře řetězec. Pokud nHeight
je 0, GrayString
vypočítá výšku oblasti za předpokladu lpData
, že je ukazatel na řetězec.
Návratová hodnota
Nenulové, pokud je řetězec nakreslený, nebo 0, pokud TextOut
funkce nebo výstupní funkce zadané aplikací vrátila hodnotu 0 nebo pokud nebylo dostatek paměti k vytvoření rastrového obrázku paměti pro dimming.
Poznámky
Funkce ztlumí text bez ohledu na vybraný štětec a pozadí. Členová GrayString
funkce používá aktuálně vybrané písmo. Před MM_TEXT
použitím této funkce je nutné vybrat režim mapování.
Aplikace může na zařízeních, která podporují plnou šedou barvu, kreslit šedě (šedě) řetězce bez volání GrayString
členské funkce. Systémová barva COLOR_GRAYTEXT
je plná-šedá systémová barva použitá k kreslení zakázaného textu. Aplikace může volat GetSysColor
funkci Windows k načtení barevné hodnoty COLOR_GRAYTEXT
. Pokud je barva jiná než 0 (černá), aplikace může volat SetTextColor
členovou funkci, která nastaví barvu textu na hodnotu barvy a pak řetězec nakreslete přímo. Pokud je načtená barva černá, aplikace musí volat GrayString
šedě (šedý) text.
Pokud lpfnOutput
je NULL
, GDI používá funkci Windows TextOut
a lpData
předpokládá se, že je daleko ukazatel na znak, který má být výstupem. Pokud znaky, které mají být výstupem TextOut
, nelze zpracovat členovou funkcí (například řetězec je uložen jako rastrový obrázek), musí aplikace zadat vlastní výstupní funkci.
Všechny funkce zpětného volání musí před návratem do systému Windows soutisknout výjimky služby Microsoft Foundation, protože výjimky nelze vyvolat napříč hranicemi zpětného volání. Další informace o výjimkách najdete v článku Výjimky.
Funkce zpětného volání předaná k GrayString
použití __stdcall
konvence volání a musí být exportována s __declspec
.
Pokud je architektura v režimu preview, volání GrayString
členské funkce se přeloží na TextOut
volání a funkce zpětného volání se nevolá.
CDC::HIMETRICtoDP
Tuto funkci použijte při převodu HIMETRIC
velikostí z OLE na pixely.
void HIMETRICtoDP(LPSIZE lpSize) const;
Parametry
lpSize
Odkazuje na SIZE
strukturu nebo CSize
objekt.
Poznámky
Pokud je MM_LOENGLISH
režim mapování objektu kontextu zařízení , MM_HIENGLISH
MM_LOMETRIC
nebo MM_HIMETRIC
, převod je založen na počtu pixelů ve fyzickém paleci. Pokud je režim mapování jedním z ostatních neomezujících režimů (například MM_TEXT
), převod je založen na počtu pixelů v logickém paleci.
CDC::HIMETRICtoLP
Voláním této funkce převedete HIMETRIC
jednotky na logické jednotky.
void HIMETRICtoLP(LPSIZE lpSize) const;
Parametry
lpSize
Odkazuje na SIZE
strukturu nebo CSize
objekt.
Poznámky
Tuto funkci použijte, když získáte HIMETRIC
velikosti z OLE a chcete je převést do režimu přirozeného mapování vaší aplikace.
Převod se provádí tak, že nejprve převedete HIMETRIC
jednotky na pixely a pak tyto jednotky převedete na logické jednotky pomocí aktuálních mapovacích jednotek kontextu zařízení. Všimněte si, že rozsahy okna a oblasti zobrazení zařízení ovlivní výsledek.
CDC::IntersectClipRect
Vytvoří novou oblast výřezu vytvořením průsečíku aktuální oblasti a obdélníku určeného parametrem x1
, y1
, x2
a y2
.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parametry
x1
Určuje logickou souřadnici x levého horního rohu obdélníku.
y1
Určuje logickou souřadnici y levého horního rohu obdélníku.
x2
Určuje logickou souřadnici x pravého dolního rohu obdélníku.
y2
Určuje logickou souřadnici y pravého dolního rohu obdélníku.
lpRect
Určuje obdélník. Pro tento parametr můžete předat CRect
objekt nebo ukazatel na RECT
strukturu.
Návratová hodnota
Nový typ oblasti výřezu. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Nová oblast výřezu má překrývající se ohraničení.ERROR
Kontext zařízení není platný.NULLREGION
Nová oblast výřezu je prázdná.SIMPLEREGION
Nová oblast výřezu nemá žádné překrývající se ohraničení.
Poznámky
GDI vystřižuje všechny následné výstupy tak, aby se vešly do nové hranice. Šířka a výška nesmí překročit 32 767.
CDC::InvertRect
Invertuje obsah daného obdélníku.
void InvertRect(LPCRECT lpRect);
Parametry
lpRect
Odkazuje na RECT
hodnotu, která obsahuje logické souřadnice obdélníku, které se mají invertovat. Pro tento parametr můžete také předat CRect
objekt.
Poznámky
Inverze je logická operace NOT a překlopí bity jednotlivých pixelů. Na monochromatických displejích funkce zbarvuje bílé pixely černobíle a černé pixely. Na displejích barev závisí inverze na způsobu generování barev pro zobrazení. Volání InvertRect
dvakrát se stejným obdélníkem obnoví zobrazení na předchozí barvy.
Pokud je obdélník prázdný, nic se nekreslí.
Příklad
void CDCView::DoInvertRect(CDC *pDC)
{
// invert rect from 20,20 to 50,50
CRect rect(20, 20, 50, 50);
pDC->InvertRect(rect);
// inverting again restores to normal
::Sleep(1000);
pDC->InvertRect(rect);
}
CDC::InvertRgn
Invertuje barvy v oblasti určené parametrem pRgn
.
BOOL InvertRgn(CRgn* pRgn);
Parametry
pRgn
Identifikuje oblast, která se má invertovat. Souřadnice oblasti jsou zadány v logických jednotkách.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Na monochromatických displejích funkce zbarvuje bílé pixely černobíle a černé pixely. Při zobrazení barev závisí inverze na způsobu generování barev pro zobrazení.
CDC::IsPrinting
Určuje, jestli se pro tisk používá kontext zařízení.
BOOL IsPrinting() const;
Návratová hodnota
Nenulové, pokud CDC
je objekt tiskárnou DC; jinak 0.
CDC::LineTo
Nakreslí čáru z aktuální pozice nahoru, ale ne včetně bodu určeného znakem x
a y
(nebo point
).
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Parametry
x
Určuje logickou souřadnici x koncového bodu pro čáru.
y
Určuje logickou souřadnici y koncového bodu pro čáru.
point
Určuje koncový bod pro řádek. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je čára nakreslena; jinak 0.
Poznámky
Čára se nakreslí vybraným perem. Aktuální pozice je nastavena na x
hodnotu , y
nebo na point
hodnotu .
Příklad
Podívejte se na příklad pro CRect::CenterPoint
.
CDC::LPtoDP
Převede logické jednotky na jednotky zařízení.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Parametry
lpPoints
Odkazuje na pole bodů. Každý bod v poli je POINT
struktura nebo CPoint
objekt.
nCount
Počet bodů v matici
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt. Tento parametr se používá pro běžný případ mapování obdélníku z logických jednotek na jednotky zařízení.
lpSize
Odkazuje na SIZE
strukturu nebo CSize
objekt.
Poznámky
Funkce mapuje souřadnice jednotlivých bodů nebo dimenzí velikosti z logického souřadnicového systému GDI na souřadnicový systém zařízení. Převod závisí na aktuálním režimu mapování a nastavení počátečních a rozsahů okna a oblasti zobrazení zařízení.
Souřadnice x a y bodů jsou 2 bajtová celá čísla v rozsahu -32 768 až 32 767. V případech, kdy by režim mapování způsoboval větší hodnoty než tyto limity, systém nastaví hodnoty na -32 768 a 32 767.
CDC::LPtoHIMETRIC
Voláním této funkce převedete logické jednotky na HIMETRIC
jednotky.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Parametry
lpSize
Odkazuje na SIZE
strukturu nebo CSize
objekt.
Poznámky
Tuto funkci použijte, když dáváte HIMETRIC
velikost OLE a převedete ji z režimu přirozeného mapování aplikace. Rozsahy okna a oblasti zobrazení zařízení ovlivní výsledek.
Převod provedete tak, že nejprve převedete logické jednotky na pixely pomocí aktuálních mapovacích jednotek kontextu zařízení a pak tyto jednotky převedete na HIMETRIC
jednotky.
CDC::m_hAttribDC
Kontext zařízení atributu pro tento CDC
objekt.
HDC m_hAttribDC;
Poznámky
Ve výchozím nastavení je tento kontext zařízení roven m_hDC
. Obecně platí, že volání GDI, která požadují informace z kontextu zařízení, CDC
jsou směrována na m_hAttribDC
. CDC
Další informace o použití těchto dvou kontextů zařízení najdete v popisu třídy.
CDC::m_hDC
Kontext výstupního zařízení pro tento CDC
objekt.
HDC m_hDC;
Poznámky
Ve výchozím nastavení m_hDC
je rovna m_hAttribDC
, druhý kontext zařízení zabalený CDC
. Obecně platí, že volání GDI, která vytvářejí výstup, CDC
přejdou do m_hDC
kontextu zařízení. Inicializovat m_hDC
a m_hAttribDC
odkazovat na různá zařízení. CDC
Další informace o použití těchto dvou kontextů zařízení najdete v popisu třídy.
CDC::MaskBlt
Kombinuje barevná data pro zdrojové a cílové rastrové obrázky pomocí dané masky a rastrové operace.
BOOL MaskBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
CBitmap& maskBitmap,
int xMask,
int yMask,
DWORD dwRop);
Parametry
x
Určuje logickou souřadnici x levého horního rohu cílového obdélníku.
y
Určuje logickou souřadnici y levého horního rohu cílového obdélníku.
nWidth
Určuje šířku cílového obdélníku a zdrojového rastrového obrázku v logických jednotkách.
nHeight
Určuje výšku cílového obdélníku a zdrojového rastrového obrázku v logických jednotkách.
pSrcDC
Identifikuje kontext zařízení, ze kterého se má rastrový obrázek zkopírovat. Pokud parametr určuje rastrovou operaci, která neobsahuje zdroj, musí být nula dwRop
.
xSrc
Určuje logickou souřadnici x levého horního rohu zdrojového rastrového obrázku.
ySrc
Určuje logickou souřadnici y levého horního rohu zdrojového rastrového obrázku.
maskBitmap
Identifikuje monochromatický rastrový obrázek masky v kombinaci s barevným rastrem v kontextu zdrojového zařízení.
xMask
Určuje vodorovný posun pixelu pro rastrovou mapu masky určenou parametrem maskBitmap
.
yMask
Určuje svislý posun pixelu pro rastrovou mapu masky určenou parametrem maskBitmap
.
dwRop
Určuje ternární rasterové kódy popředí i pozadí, které funkce používá k řízení kombinace zdrojových a cílových dat. Rastrový kód operace pozadí je uložen ve vysokém bajtu vysokého slova této hodnoty; rasterový kód popředí je uložen v nízké bajtu vysokého slova této hodnoty; nízké slovo této hodnoty je ignorováno a mělo by být nula. MAKEROP4
Makro vytvoří takové kombinace kódů operací popředí a rastrového pozadí. V části Poznámky najdete diskuzi o popředí a pozadí v kontextu této funkce. BitBlt
Seznam běžných rasterových kódů operací najdete v členské funkci.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Hodnota 1 v masce určená maskBitmap
pomocí indikuje, že by měl být v tomto umístění použit kód operace rastrového popředí určený tímto kódem dwRop
. Hodnota 0 v masce označuje, že by měl být v tomto umístění použit rastrový kód dwRop
operace na pozadí. Pokud rastrové operace vyžadují zdroj, musí obdélník masky pokrýt zdrojový obdélník. Pokud ne, funkce selže. Pokud rastrové operace nevyžadují zdroj, musí obdélník masky pokrýt cílový obdélník. Pokud ne, funkce selže.
Pokud se při zavolání této funkce projeví rotace nebo shear transformace pro kontext zdrojového zařízení, dojde k chybě. Jsou však povoleny jiné typy transformací.
Pokud se barevné formáty zdrojového, vzorového a cílového rastrového obrázku liší, tato funkce převede vzor nebo zdrojový formát nebo obojí tak, aby odpovídaly cílovému formátu. Pokud rastrová mapa masky není monochromatická rastrová mapa, dojde k chybě. Při zaznamenávání rozšířeného metasouboru dojde k chybě (a funkce vrátí hodnotu 0), pokud kontext zdrojového zařízení identifikuje kontext zařízení s rozšířeným metasouborem. Ne všechna zařízení podporují MaskBlt
. Aplikace by měla volat GetDeviceCaps
, aby určila, jestli zařízení tuto funkci podporuje. Pokud není zadán žádný rastrový obrázek masky, tato funkce se chová přesně stejně jako BitBlt
pomocí rastrového kódu popředí. Posuny pixelů v mapě rastrového obrázku masky na bod (0,0) v rastrovém obrázku kontextu zdrojového zařízení. To je užitečné pro případy, kdy rastrová mapa masky obsahuje sadu masek; aplikace může snadno použít libovolný z nich na úlohu maskování úpravou posunů pixelů a velikostí obdélníků odeslaných do MaskBlt
.
CDC::ModifyWorldTransform
Změní světovou transformaci kontextu zařízení pomocí zadaného režimu.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Parametry
rXform
Odkaz na XFORM
strukturu použitou k úpravě světové transformace pro daný kontext zařízení.
iMode
Určuje, jak transformační data mění aktuální světovou transformaci. Seznam hodnot, které tento parametr může vzít, naleznete v tématu ModifyWorldTransform
.
Návratová hodnota
Vrátí nenulovou hodnotu úspěchu.
Vrátí hodnotu 0 při selhání.
Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Tato metoda zabalí funkci ModifyWorldTransform
GDI systému Windows .
CDC::MoveTo
Přesune aktuální pozici k bodu určenému znakem x
a y
(nebo podle point
).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Parametry
x
Určuje logickou souřadnici x nové pozice.
y
Určuje logickou souřadnici y nové pozice.
point
Určuje novou pozici. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Souřadnice x a y předchozí pozice jako CPoint
objekt.
Příklad
Podívejte se na příklad pro CRect::CenterPoint
.
CDC::OffsetClipRgn
Přesune oblast oříznutí kontextu zařízení podle zadaných posunů.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Parametry
x
Určuje počet logických jednotek, které se mají přesunout doleva nebo doprava.
y
Určuje počet logických jednotek, které se mají přesunout nahoru nebo dolů.
size
Určuje částku, která se má odsazení odsazení.
Návratová hodnota
Typ nové oblasti. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Oblast výřezu má překrývající se ohraničení.ERROR
Kontext zařízení není platný.NULLREGION
Oblast výřezu je prázdná.SIMPLEREGION
Oblast výřezu neobsahuje překrývající se ohraničení.
Poznámky
Funkce přesune jednotky oblasti x
podél osy x a y
jednotky podél osy y.
CDC::OffsetViewportOrg
Upraví souřadnice původu oblasti zobrazení vzhledem ke souřadnicím aktuálního původu oblasti zobrazení.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Parametry
nWidth
Určuje počet jednotek zařízení, které se mají přidat do souřadnice x aktuálního původu.
nHeight
Určuje počet jednotek zařízení, které se mají přidat do souřadnice y aktuálního původu.
Návratová hodnota
Předchozí zdroj oblasti zobrazení (v souřadnicích zařízení) jako CPoint
objekt.
CDC::OffsetWindowOrg
Upraví souřadnice původu okna vzhledem ke souřadnicím aktuálního původu okna.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Parametry
nWidth
Určuje počet logických jednotek, které se mají přidat ke souřadnici x aktuálního původu.
nHeight
Určuje počet logických jednotek, které mají být přidány do souřadnice y aktuálního původu.
Návratová hodnota
Předchozí zdroj okna (v logických souřadnicích) jako CPoint
objekt.
CDC::operator HDC
Tento operátor slouží k načtení kontextového popisovače zařízení objektu CDC
.
operator HDC() const;
Návratová hodnota
V případě úspěchu popisovač objektu kontextu zařízení; v opačném případě . NULL
Poznámky
Popisovač můžete použít k přímému volání rozhraní API systému Windows.
CDC::PaintRgn
Vyplní oblast zadanou pRgn
pomocí aktuálního štětce.
BOOL PaintRgn(CRgn* pRgn);
Parametry
pRgn
Identifikuje oblast, která se má vyplnit. Souřadnice pro danou oblast jsou zadány v logických jednotkách.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
CDC::PatBlt
Vytvoří na zařízení bitový vzor.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Parametry
x
Určuje logickou souřadnici x levého horního rohu obdélníku, která má tento vzor přijmout.
y
Určuje logickou souřadnici y levého horního rohu obdélníku, který má vzor přijmout.
nWidth
Určuje šířku (v logických jednotkách) obdélníku, který má vzor přijmout.
nHeight
Určuje výšku (v logickýchjednotkách
dwRop
Určuje rastrový kód operace. Raster-operation codes (ROPs) definují, jak GDI kombinuje barvy ve výstupních operacích, které zahrnují aktuální štětec, možnou zdrojovou bitmapu a cílovou bitmapu. Tento parametr může být jedna z následujících hodnot:
PATCOPY
Zkopíruje vzor do cílového rastrového obrázku.PATINVERT
Kombinuje cílovou bitmapu se vzorem pomocí logického operátoru XOR (^
).DSTINVERT
Invertuje cílovou bitmapu.BLACKNESS
Změní veškerý výstup na černou.WHITENESS
Změní veškerý výstup na bílou.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Vzor je kombinací vybraného štětce a vzoru, který už je na zařízení. Rastrový kód operace určený definováním dwRop
způsobu kombinování vzorů. Rastrové operace uvedené pro tuto funkci jsou omezenou podmnožinou úplných 256 ternárních raster-operací kódů; zejména raster-operation kód, který odkazuje na zdroj nelze použít.
Funkce nepodporuje PatBlt
všechny kontexty zařízení. Pokud chcete zjistit, jestli kontext zařízení podporuje PatBlt
, zavolejte GetDeviceCaps
členovou funkci s indexem RASTERCAPS
a zkontrolujte návratovou hodnotu příznaku RC_BITBLT
.
CDC::Pie
Nakreslí výsečový výsečový klín výkresem eliptického oblouku, jehož střed a dva koncové body jsou spojeny čarami.
BOOL Pie(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Pie(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parametry
x1
Určuje souřadnici x levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu ohraničujícího obdélníku (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu ohraničujícího obdélníku (v logických jednotkách).
x3
Určuje souřadnici x počátečního bodu oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y3
Určuje souřadnici y počátečního bodu oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
x4
Určuje souřadnici x koncového bodu oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
y4
Určuje souřadnici y koncového bodu oblouku (v logických jednotkách). Tento bod nemusí lhát přesně na oblouku.
lpRect
Určuje ohraničující obdélník. Pro tento parametr můžete předat CRect
objekt nebo ukazatel na RECT
strukturu.
ptStart
Určuje výchozí bod oblouku. Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
ptEnd
Určuje koncový bod oblouku. Tento bod nemusí lhát přesně na oblouku. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Střed oblouku je středem ohraničujícího obdélníku určeného parametrem x1
, y1
, x2
a y2
(nebo podle lpRect
). Počáteční a koncové body oblouku jsou určeny pomocí x3
, y3
, x4
, a y4
(nebo podle ptStart
a ptEnd
).
Oblouk je nakreslen vybraným perem a pohybuje se proti směru hodinových ručiček. Ze všech koncových bodů do středu oblouku jsou nakresleny dvě další čáry. Oblast ve tvaru výsečového grafu je vyplněna aktuálním štětcem. Pokud x3
se rovná x4
a y3
rovná y4
se , výsledkem je tři tečky s jednou čárou ze středu elipsy na bod (x3
, y3
) nebo (x4
, y4
).
Obrázek nakreslený touto funkcí přesahuje, ale nezahrnuje pravé a dolní souřadnice. To znamená, že výška obrázku je y2
- y1
a šířka obrázku je .x2
- x1
Šířka i výška ohraničujícího obdélníku musí být větší než 2 jednotky a menší než 32 767 jednotek.
Příklad
void CDCView::DrawPie(CDC *pDC)
{
// Fill the client area with a simple pie chart. A
// big blue slice covers 75% of the pie, from
// 6 o'clock to 3 o'clock. This portion is filled
// with blue and has a blue edge. The remaining 25%
// is filled with a red, diagonal hatch and has
// a red edge.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Pie(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter slice from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen with
// the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Same parameters, but reverse start and end points.
pDC->Pie(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::PlayMetaFile
Přehraje obsah zadaného metasouboru v kontextu zařízení.
BOOL PlayMetaFile(HMETAFILE hMF);
BOOL PlayMetaFile(
HENHMETAFILE hEnhMetaFile,
LPCRECT lpBounds);
Parametry
hMF
Identifikuje metasoubor, který se má přehrát.
hEnhMetaFile
Identifikuje vylepšený metasoubor.
lpBounds
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje souřadnice ohraničujícího obdélníku použitého k zobrazení obrázku. Souřadnice jsou zadány v logických jednotkách.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Metasoubor lze přehrát libovolný počet.
Druhá verze zobrazí obrázek uložený v daném metasouboru rozšířeného PlayMetaFile
formátu. Když aplikace volá druhou verzi PlayMetaFile
systému Windows, pomocí rámečku obrázku v záhlaví rozšířeného metasouboru mapuje obrázek na obdélník odkazovaný parametrem lpBounds . (Tento obrázek může být před voláním PlayMetaFile
střídavě nebo otočen nastavením světové transformace ve výstupním zařízení.) Body podél okrajů obdélníku jsou součástí obrázku. Obrázek rozšířeného metasouboru lze oříznout tak, že před přehráváním rozšířeného metasouboru definujete oblast výřezu ve výstupním zařízení.
Pokud rozšířený metasoubor obsahuje volitelnou paletu, může aplikace dosáhnout konzistentních barev nastavením barevné palety na výstupním zařízení před voláním druhé verze PlayMetaFile
. Pokud chcete načíst volitelnou paletu GetEnhMetaFilePaletteEntries
, použijte funkci Windows. Rozšířený metasoubor lze vložit do nově vytvořeného rozšířeného metasouboru voláním druhé verze a přehráním zdrojového rozšířeného PlayMetaFile
metasouboru do kontextu zařízení pro nový rozšířený metasoubor.
Stavy kontextu výstupního zařízení se zachovají touto funkcí. Tato funkce odstraní jakýkoli objekt vytvořený, ale neodstraní se v rozšířeném metasouboru. Za účelem zastavení této funkce může aplikace volat CancelDC
funkci Windows z jiného vlákna a ukončit operaci. V tomto případě vrátí funkce nulu.
CDC::PlgBlt
Provede bitový blok přenosu bitů barevných dat ze zadaného obdélníku v kontextu zdrojového zařízení do zadaného paralelogramu v daném kontextu zařízení.
BOOL PlgBlt(
LPPOINT lpPoint,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nWidth,
int nHeight,
CBitmap& maskBitmap,
int xMask,
int yMask);
Parametry
lpPoint
Odkazuje na pole tří bodů v logickém prostoru, které identifikuje tři rohy cílového paralelogramu. Levý horní roh zdrojového obdélníku je namapován na první bod v tomto poli, pravý horní roh na druhý bod v tomto poli a levý dolní roh na třetí bod. Pravý dolní roh zdrojového obdélníku je mapován na implicitní čtvrtý bod paralelogramu.
pSrcDC
Identifikuje kontext zdrojového zařízení.
xSrc
Určuje souřadnici x v logických jednotkách v levém horním rohu zdrojového obdélníku.
ySrc
Určuje souřadnici y v logických jednotkách v levém horním rohu zdrojového obdélníku.
nWidth
Určuje šířku zdrojového obdélníku v logických jednotkách.
nHeight
Určuje výšku zdrojového obdélníku v logických jednotkách.
maskBitmap
Identifikuje volitelný monochromatický rastrový obrázek, který slouží k maskování barev zdrojového obdélníku.
xMask
Určuje souřadnici x levého horního rohu monochromatického rastrového obrázku.
yMask
Určuje souřadnici y levého horního rohu monochromatického rastrového obrázku.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Pokud daný úchyt bitové masky identifikuje platný monochromatický rastrový obrázek, funkce použije tento rastrový obrázek k maskování bitů barevných dat ze zdrojového obdélníku.
Čtvrtý vrchol paralelogramu (D) je definován tak, že považuje první tři body (A, B a C) za vektory a computing D = B + C - A.
Pokud bitová maska existuje, hodnota 1 v masce označuje, že barva zdrojového pixelu by se měla zkopírovat do cíle. Hodnota 0 v masce označuje, že se barva cílového pixelu nezmění.
Pokud je obdélník masky menší než zdrojový a cílový obdélník, funkce replikuje vzor masky.
Transformace škálování, překladu a reflexe jsou povoleny v kontextu zdrojového zařízení; ale rotace a střídmé transformace nejsou. Pokud rastrová mapa masky není monochromatická rastrová mapa, dojde k chybě. Režim roztažení kontextu cílového zařízení se používá k určení způsobu roztažení nebo komprese pixelů, pokud je to nezbytné. Při zaznamenávání rozšířeného metasouboru dojde k chybě, pokud kontext zdrojového zařízení identifikuje kontext zařízení s rozšířeným metasouborem.
Cílové souřadnice jsou transformovány podle kontextu cílového zařízení; zdrojové souřadnice jsou transformovány podle kontextu zdrojového zařízení; Pokud má transformace zdroje otočení nebo shear, vrátí se chyba. Pokud cílové a zdrojové obdélníky nemají stejný barevný formát, převede zdrojový obdélník tak, PlgBlt
aby odpovídal cílovému obdélníku. Ne všechna zařízení podporují PlgBlt
. Další informace najdete v popisu RC_BITBLT
rastrové funkce ve CDC::GetDeviceCaps
členské funkci.
Pokud kontexty zdrojového a cílového zařízení představují nekompatibilní zařízení, PlgBlt
vrátí chybu.
CDC::PolyBezier
Nakreslí jednu nebo více čar Bzier.
BOOL PolyBezier(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Odkazuje na pole datových POINT
struktur, které obsahují koncové body a kontrolní body spline(ů).
nCount
Určuje počet bodů v matici lpPoints
. Tato hodnota musí být o jeden více než třikrát větší počet výsečí, protože každá křivka Bzier vyžaduje dva kontrolní body a koncový bod a počáteční spline vyžaduje další výchozí bod.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato funkce nakreslí krychlové splines Bzier pomocí koncových bodů a kontrolních bodů určených parametrem lpPoints
. První křivka se vykreslí z prvního bodu do čtvrtého bodu pomocí druhého a třetího bodu jako kontrolních bodů. Každá další křivka v sekvenci potřebuje přesně tři další body: koncový bod předchozí křivky se používá jako výchozí bod, další dva body v sekvenci jsou řídicí body a třetí je koncový bod.
Funkce aktuální pozici nepoužívá ani neaktualizuje PolyBezier
. Obrázek není vyplněný. Tato funkce nakreslí čáry pomocí aktuálního pera.
CDC::PolyBezierTo
Nakreslí jednu nebo více čar Bzier.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Odkazuje na pole datových POINT
struktur, které obsahují koncové body a kontrolní body.
nCount
Určuje počet bodů v matici lpPoints
. Tato hodnota musí být třikrát počet čar, které se mají nakreslit, protože každý Bzier spline vyžaduje dva kontrolní body a koncový bod.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato funkce nakreslí krychlové křivky Bzieru pomocí kontrolních bodů určených parametrem lpPoints
. První křivka je nakreslena z aktuální pozice do třetího bodu pomocí prvních dvou bodů jako kontrolních bodů. Pro každou další spline potřebuje funkce přesně tři další body a použije koncový bod předchozího spline jako výchozí bod pro další bod. PolyBezierTo
přesune aktuální pozici na koncový bod posledního bodu Bzier spline. Obrázek není vyplněný. Tato funkce nakreslí čáry pomocí aktuálního pera.
Příklad
Podívejte se na příklad pro CDC::BeginPath
.
CDC::PolyDraw
Nakreslí sadu segmentů čar a Bzier splines.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Parametry
lpPoints
Odkazuje na pole datových POINT
struktur, které obsahují koncové body pro každý segment čáry a koncové body a kontrolní body pro každý Bzier spline.
lpTypes
Odkazuje na matici, která určuje, jak se každý bod v matici lpPoints
používá. Hodnoty můžou být následující:
PT_MOVETO
Určuje, že tento bod začíná nesouvislým obrázkem. Tento bod se stane novou aktuální pozicí.PT_LINETO
Určuje, že čára se má nakreslit z aktuální pozice do tohoto bodu, což se pak stane novou aktuální pozicí.PT_BEZIERTO
Určuje, že tento bod je řídicím bodem nebo koncovým bodem spojnice Bzier.
PT_BEZIERTO
typy se vždy vyskytují v sadách tří. Aktuální pozice definuje výchozí bod pro Bzier spline. První dva PT_BEZIERTO
body jsou řídicí body a třetí PT_BEZIERTO
bod je koncový bod. Koncový bod se stane novou aktuální pozicí. Pokud nejsou tři po sobě jdoucí PT_BEZIERTO
body, zobrazí se chybová zpráva.
A PT_LINETO
nebo PT_BEZIERTO
typ lze kombinovat s následující konstantou pomocí bitového operátoru OR k označení, že odpovídající bod je posledním bodem na obrázku a obrázek je uzavřen:
PT_CLOSEFIGURE
Určuje, že se obrázek po dokončení tohotoPT_BEZIERTO
bodu automaticky zavřePT_LINETO
. Čára je z tohoto bodu nakreslena k poslednímuPT_MOVETO
bodu neboMoveTo
bodu.Tento příznak je kombinován s
PT_LINETO
typem čáry nebo sPT_BEZIERTO
typem koncového bodu pro spojnici Bzier pomocí bitové operátoru OR . Aktuální pozice je nastavená na koncový bod uzavírací čáry.
nCount
Určuje celkový počet bodů v lpPoints
matici, stejný jako počet bajtů v matici lpTypes
.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tuto funkci lze použít k kreslení oddělených obrázků místo po sobě jdoucích volání CDC::MoveTo
, CDC::LineTo
a CDC::PolyBezierTo
členských funkcí. Čáry a splines jsou kresleny pomocí aktuálního pera a obrázky nejsou vyplněné. Pokud je aktivní cesta spuštěná voláním CDC::BeginPath
členské funkce, PolyDraw
přidá se do cesty. Body obsažené v matici lpPoints
a lpTypes
indikují, zda je každý bod součástí CDC::MoveTo
, a CDC::LineTo
nebo CDC::BezierTo
operace. Je také možné zavřít postavy. Tato funkce aktualizuje aktuální pozici.
Příklad
Podívejte se na příklad pro CDC::BeginPath
.
CDC::Polygon
Nakreslí mnohoúhelník skládající se ze dvou nebo více bodů (vrcholů) spojených spojnicemi pomocí aktuálního pera.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Parametry
lpPoints
Odkazuje na matici bodů, která určuje vrcholy mnohoúhelníku. Každý bod v poli je POINT
struktura nebo CPoint
objekt.
nCount
Určuje počet vrcholů v poli.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Systém v případě potřeby automaticky zavře mnohoúhelník tak, že nakreslí čáru z posledního vrcholu na první.
Aktuální režim mnohoúhelníku lze načíst nebo nastavit pomocí GetPolyFillMode
členských funkcí.SetPolyFillMode
Příklad
void CDCView::DrawPolygon(CDC *pDC)
{
// find the client area
CRect rect;
GetClientRect(rect);
// draw with a thick blue pen
CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
CPen *pOldPen = pDC->SelectObject(&penBlue);
// and a solid red brush
CBrush brushRed(RGB(255, 0, 0));
CBrush *pOldBrush = pDC->SelectObject(&brushRed);
// Find the midpoints of the top, right, left, and bottom
// of the client area. They will be the vertices of our polygon.
CPoint pts[4];
pts[0].x = rect.left + rect.Width() / 2;
pts[0].y = rect.top;
pts[1].x = rect.right;
pts[1].y = rect.top + rect.Height() / 2;
pts[2].x = pts[0].x;
pts[2].y = rect.bottom;
pts[3].x = rect.left;
pts[3].y = pts[1].y;
// Calling Polygon() on that array will draw three lines
// between the points, as well as an additional line to
// close the shape--from the last point to the first point
// we specified.
pDC->Polygon(pts, 4);
// Put back the old objects.
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
}
CDC::Polyline
Nakreslí sadu segmentů čar spojujících body určené parametrem lpPoints
.
BOOL Polyline(
LPPOINT lpPoints,
int nCount);
Parametry
lpPoints
Odkazuje na pole POINT
struktur nebo CPoint
objektů, které mají být propojeny.
nCount
`
Určuje počet bodů v matici. Tato hodnota musí být alespoň 2.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Čáry jsou nakresleny z prvního bodu prostřednictvím následných bodů pomocí aktuálního pera. LineTo
Na rozdíl od členské funkce Polyline
funkce nepoužívá ani neaktualizuje aktuální pozici.
Další informace najdete PolyLine
v sadě Windows SDK.
CDC::PolylineTo
Nakreslí jednu nebo více rovných čar.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Odkazuje na pole datových POINT
struktur, které obsahují vrcholy čáry.
nCount
Určuje počet bodů v matici.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Čára se nakreslí z aktuální pozice k prvnímu bodu určenému lpPoints
parametrem pomocí aktuálního pera. Pro každou další čáru funkce nakreslí z koncového bodu předchozí čáry na další bod určený lpPoints
. PolylineTo
přesune aktuální pozici na koncový bod poslední čáry. Pokud segmenty čar nakreslené touto funkcí tvoří uzavřený obrázek, není obrázek vyplněný.
CDC::PolyPolygon
Vytvoří dva nebo více mnohoúhelníku, které jsou vyplněny pomocí aktuálního režimu mnohoúhelníku.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Parametry
lpPoints
Odkazuje na pole POINT
struktur nebo CPoint
objektů, které definují vrcholy mnohoúhelníku.
lpPolyCounts
Odkazuje na matici celých čísel, z nichž každá určuje počet bodů v jednom z mnohoúhelníků v matici lpPoints
.
nCount
Počet položek v matici lpPolyCounts
. Toto číslo určuje počet mnohoúhelníku, které se mají nakreslit. Tato hodnota musí být alespoň 2.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Mnohoúhelníky můžou být oddělené nebo překrývající se.
Každý mnohoúhelník zadaný ve volání PolyPolygon
funkce musí být uzavřen. Na rozdíl od mnohoúhelníku vytvořených Polygon
člennou funkcí se mnohoúhelníky vytvořené PolyPolygon
automaticky nezavírají.
Funkce vytvoří dva nebo více mnohoúhelníku. K vytvoření jednoho mnohoúhelníku by aplikace měla používat členovou Polygon
funkci.
Aktuální režim mnohoúhelníku lze načíst nebo nastavit pomocí GetPolyFillMode
členských funkcí.SetPolyFillMode
CDC::PolyPolyline
Nakreslí více řad propojených segmentů čar.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Parametry
lpPoints
Odkazuje na pole struktur, které obsahují vrcholy čar. Křivky jsou zadány po sobě.
lpPolyPoints
Odkazuje na matici proměnných určující počet bodů v lpPoints
matici pro odpovídající mnohoúhelník. Každá položka musí být větší nebo rovna 2.
nCount
Určuje celkový počet počtů v lpPolyPoints
poli.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Segmenty čáry jsou kresleny pomocí aktuálního pera. Obrázky vytvořené segmenty nejsou vyplněné. Tato funkce nepoužívá ani neaktualizuje aktuální pozici.
CDC::PtVisible
Určuje, jestli se daný bod nachází v oblasti výřezu kontextu zařízení.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Parametry
x
Určuje logickou souřadnici x bodu.
y
Určuje logickou souřadnici y bodu.
point
Určuje bod, který se má vrátit se změnami logických souřadnic. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je zadaný bod v oblasti výřezu; jinak 0.
CDC::QueryAbort
Volá funkci přerušení nainstalovanou členovou SetAbortProc
funkcí pro tiskovou aplikaci a dotazuje se, zda se má tisk ukončit.
BOOL QueryAbort() const;
Návratová hodnota
Návratová hodnota je nenulová, pokud by tisk měl pokračovat nebo pokud neexistuje žádný postup přerušení. Je to 0, pokud by se tisková úloha měla ukončit. Vrácená hodnota je zadána funkcí abort.
CDC::RealizePalette
Mapuje položky z aktuální logické palety na systémovou paletu.
UINT RealizePalette();
Návratová hodnota
Určuje, kolik položek v logické paletě bylo namapováno na různé položky v systémové paletě. Představuje počet položek, které tato funkce přemapovala tak, aby vyhovovala změnám v systémové paletě od posledního dokončení logické palety.
Poznámky
Logická paleta barev funguje jako vyrovnávací paměť mezi aplikacemi náročnými na barvy a systémem, což aplikaci umožňuje používat tolik barev, kolik potřebujete, aniž by zasahovala do vlastních zobrazených barev nebo barev zobrazených jinými okny.
Když má okno vstupní fokus a volání RealizePalette
, Windows zajistí, že okno zobrazí všechny požadované barvy až do maximálního počtu současně dostupného na obrazovce. Systém Windows také zobrazuje barvy, které nejsou v paletě okna nalezeny, a to tak, že je spáruje s dostupnými barvami.
Kromě toho systém Windows odpovídá barvám požadovaným neaktivními okny, která funkci volají co nejblíže dostupným barvám. To výrazně snižuje nežádoucí změny barev zobrazených v neaktivních oknech.
CDC::Rectangle
Nakreslí obdélník pomocí aktuálního pera.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Parametry
x1
Určuje souřadnici x levého horního rohu obdélníku (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu obdélníku (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu obdélníku (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu obdélníku (v logických jednotkách).
lpRect
Určuje obdélník v logických jednotkách. Pro tento parametr můžete předat CRect
objekt nebo ukazatel na RECT
strukturu.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Vnitřní část obdélníku je vyplněna pomocí aktuálního štětce.
Obdélník se rozšiřuje až do, ale nezahrnuje pravé a dolní souřadnice. To znamená, že výška obdélníku je y2
- y1
a šířka obdélníku je .x2
- x1
Šířka i výška obdélníku musí být větší než 2 jednotky a menší než 32 767 jednotek.
Příklad
void CDCView::DrawRectangle(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// draw a thick black rectangle filled with blue
pDC->Rectangle(rect);
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::RectVisible
Určuje, zda jakákoli část daného obdélníku leží v oblasti výřezu kontextu zobrazení.
virtual BOOL RectVisible(LPCRECT lpRect) const;
Parametry
lpRect
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje logické souřadnice zadaného obdélníku.
Návratová hodnota
Nenulové, pokud některá část daného obdélníku leží v oblasti výřezu; jinak 0.
CDC::ReleaseAttribDC
Voláním této členské funkce nastavíte m_hAttribDC
hodnotu NULL.
virtual void ReleaseAttribDC();
Poznámky
To nezpůsobí Detach
výskyt. K objektu je připojen pouze kontext výstupního CDC
zařízení a lze ho odpojit.
CDC::ReleaseOutputDC
Voláním této členské funkce nastavíte člena m_hDC
na NULL
hodnotu .
virtual void ReleaseOutputDC();
Poznámky
Tuto členovou funkci nelze volat, pokud je k objektu připojen kontext výstupního CDC
zařízení. Detach
Pomocí členské funkce odpojte kontext výstupního zařízení.
CDC::ResetDC
Voláním této členské funkce aktualizujte kontext zařízení zabalený objektem CDC
.
BOOL ResetDC(const DEVMODE* lpDevMode);
Parametry
lpDevMode
Ukazatel na strukturu Windows DEVMODE
.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Kontext zařízení se aktualizuje z informací zadaných ve struktuře Windows DEVMODE
. Tato členová funkce resetuje pouze kontext zařízení atributu.
Aplikace obvykle použije ResetDC
členovou funkci, když okno zpracuje WM_DEVMODECHANGE
zprávu. Pomocí této členské funkce můžete při tisku dokumentu změnit orientaci papíru nebo přihrádky papíru.
Tuto členovu funkci nelze použít ke změně názvu ovladače, názvu zařízení nebo výstupního portu. Když uživatel změní název připojení k portu nebo zařízení, musíte odstranit původní kontext zařízení a vytvořit nový kontext zařízení s novými informacemi.
Před voláním této členské funkce je nutné zajistit, aby byly vybrány všechny objekty (jiné než skladové objekty), které byly vybrány do kontextu zařízení.
CDC::RestoreDC
Obnoví kontext zařízení do předchozího stavu zjištěného uživatelem nSavedDC
.
virtual BOOL RestoreDC(int nSavedDC);
Parametry
nSavedDC
Určuje kontext zařízení, který se má obnovit. Může to být hodnota vrácená předchozím SaveDC
voláním funkce. Pokud nSavedDC
je -1, obnoví se naposledy uložený kontext zařízení.
Návratová hodnota
Nenulové, pokud byl zadaný kontext obnoven; jinak 0.
Poznámky
RestoreDC
obnoví kontext zařízení tak, že z zásobníku vytvořeného dřívějšími voláními SaveDC
členské funkce přepíná informace o stavu.
Zásobník může obsahovat informace o stavu pro několik kontextů zařízení. Pokud kontext zadaný nSavedDC
v horní části zásobníku není, RestoreDC
odstraní všechny informace o stavu mezi kontextem zařízení určeným nSavedDC
a horní částí zásobníku. Odstraněné informace se ztratí.
CDC::RoundRect
Nakreslí obdélník se zaoblenými rohy pomocí aktuálního pera.
BOOL RoundRect(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
BOOL RoundRect(
LPCRECT lpRect,
POINT point);
Parametry
x1
Určuje souřadnici x levého horního rohu obdélníku (v logických jednotkách).
y1
Určuje souřadnici y levého horního rohu obdélníku (v logických jednotkách).
x2
Určuje souřadnici x pravého dolního rohu obdélníku (v logických jednotkách).
y2
Určuje souřadnici y pravého dolního rohu obdélníku (v logických jednotkách).
x3
Určuje šířku tří teček použitých k vykreslení zaoblených rohů (v logických jednotkách).
y3
Určuje výšku tří teček použitých k vykreslení zaoblených rohů (v logických jednotkách).
lpRect
Určuje ohraničující obdélník v logických jednotkách. Pro tento parametr můžete předat CRect
objekt nebo ukazatel na RECT
strukturu.
point
Souřadnice point
x určuje šířku tří teček pro vykreslení zaoblených rohů (v logických jednotkách). Souřadnice point
y určuje výšku tří teček pro vykreslení zaoblených rohů (v logických jednotkách). Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Vnitřní část obdélníku je vyplněna pomocí aktuálního štětce.
Obrázek, na který tato funkce nakreslí, se rozšíří až na pravé a dolní souřadnice, ale neobsahuje souřadnice vpravo a dole. To znamená, že výška obrázku je y2
- y1
a šířka obrázku je .x2
- x1
Výška i šířka ohraničujícího obdélníku musí být větší než 2 jednotky a menší než 32 767 jednotek.
Příklad
void CDCView::DrawRoundRect(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// Draw a thick black rectangle filled with blue
// corners rounded at a 17-unit radius. Note that
// a radius of three or less is not noticeable because
// the pen is three units wide.
pDC->RoundRect(rect, CPoint(17, 17));
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::SaveDC
Uloží aktuální stav kontextu zařízení zkopírováním informací o stavu (například oříznutí oblasti, vybraných objektů a režimu mapování) do zásobníku kontextu spravovaného systémem Windows.
virtual int SaveDC();
Návratová hodnota
Celé číslo identifikující kontext uloženého zařízení. Pokud dojde k chybě, je to 0. Tato návratová hodnota se dá použít k obnovení kontextu zařízení voláním RestoreDC
.
Poznámky
Kontext uloženého zařízení lze později obnovit pomocí RestoreDC
.
SaveDC
lze použít libovolný početkrát k uložení libovolného počtu stavů kontextu zařízení.
CDC::ScaleViewportExt
Upraví rozsahy oblasti zobrazení vzhledem k aktuálním hodnotám.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parametry
xNum
Určuje množství, o které se má vynásobit aktuální rozsah x.
xDenom
Určuje hodnotu, o kterou se má výsledek vynásobit aktuálním rozsahem x hodnotou parametru xNum
.
yNum
Určuje množství, o které se má aktuální rozsah y vynásobit.
yDenom
Určuje hodnotu, o kterou se má výsledek vynásobit aktuálním rozsahem y hodnotou parametru yNum
.
Návratová hodnota
Předchozí rozsahy oblasti zobrazení (v jednotkách zařízení) jako CSize
objekt.
Poznámky
Vzorce se zapisují takto:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
Nové rozsahy oblasti zobrazení se počítají vynásobením aktuálních rozsahů daným čitatelem a následným vydělením daným jmenovatelem.
CDC::ScaleWindowExt
Upraví rozsahy okna vzhledem k aktuálním hodnotám.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parametry
xNum
Určuje množství, o které se má vynásobit aktuální rozsah x.
xDenom
Určuje hodnotu, o kterou se má výsledek vynásobit aktuálním rozsahem x hodnotou parametru xNum
.
yNum
Určuje množství, o které se má aktuální rozsah y vynásobit.
yDenom
Určuje hodnotu, o kterou se má výsledek vynásobit aktuálním rozsahem y hodnotou parametru yNum
.
Návratová hodnota
Předchozí rozsah okna (v logických jednotkách) jako CSize
objekt.
Poznámky
Vzorce se zapisují takto:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
Nové rozsahy oken se počítají vynásobením aktuálních rozsahů daným čitatelem a následným vydělením daným jmenovatelem.
CDC::ScrollDC
Posune obdélník bitů vodorovně a svisle.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Parametry
dx
Určuje počet vodorovných jednotek posouvání.
dy
Určuje počet svislých jednotek posouvání.
lpRectScroll
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje souřadnice obdélníku posouvání.
lpRectClip
Odkazuje na RECT
strukturu nebo CRect
objekt, který obsahuje souřadnice obdélníku výřezu. Pokud je tento obdélník menší než původní obdélník, na který lpRectScroll
odkazuje , posouvání se vyskytuje pouze v menším obdélníku.
pRgnUpdate
Identifikuje oblast odkrytou procesem posouvání. Funkce ScrollDC
tuto oblast definuje, není to nutně obdélník.
lpRectUpdate
Odkazuje na RECT
strukturu nebo CRect
objekt, který přijímá souřadnice obdélníku, který ohraničuje oblast aktualizace posouvání. Jedná se o největší obdélníkovou oblast, která vyžaduje překreslení. Hodnoty ve struktuře nebo objektu, když funkce vrátí, jsou v souřadnicích klienta bez ohledu na režim mapování pro daný kontext zařízení.
Návratová hodnota
Nenulové, pokud je provedeno posouvání; jinak 0.
Poznámky
Pokud lpRectUpdate
ano NULL
, Systém Windows nevypočítá obdélník aktualizace. Pokud se jedná o NULL
lpRectUpdate
obojípRgnUpdate
, Windows nevypočítá oblast aktualizace. Pokud pRgnUpdate
není NULL
, systém Windows předpokládá, že obsahuje platný ukazatel na oblast odkrytou procesem posouvání (definovaným členovou ScrollDC
funkcí). Oblast aktualizace vrácená v lpRectUpdate
případě potřeby může být předána CWnd::InvalidateRgn
.
Aplikace by měla používat ScrollWindow
členskou funkci třídy CWnd
, pokud je nutné posunout celou oblast klienta okna. Jinak by měl používat ScrollDC
.
CDC::SelectClipPath
Vybere aktuální cestu jako oblast výřezu kontextu zařízení a zkombinuje novou oblast s jakoukoli existující oblastí výřezu pomocí zadaného režimu.
BOOL SelectClipPath(int nMode);
Parametry
nMode
Určuje způsob použití cesty. Jsou povoleny následující hodnoty:
RGN_AND
Nová oblast výřezu zahrnuje průsečík (překrývající se oblasti) aktuální oblasti výřezu a aktuální cestu.RGN_COPY
Nová oblast výřezu je aktuální cesta.RGN_DIFF
Nová oblast výřezu zahrnuje oblasti aktuální oblasti výřezu a oblasti aktuální cesty jsou vyloučené.RGN_OR
Nová oblast výřezu zahrnuje sjednocení (kombinované oblasti) aktuální oblasti výřezu a aktuální cestu.RGN_XOR
Nová oblast výřezu zahrnuje sjednocení aktuální oblasti výřezu a aktuální cesty, ale bez překrývajících se oblastí.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Identifikovaný kontext zařízení musí obsahovat uzavřenou cestu.
CDC::SelectClipRgn
Vybere danou oblast jako aktuální oblast výřezu kontextu zařízení.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Parametry
pRgn
Identifikuje oblast, která se má vybrat.
Pro první verzi této funkce, pokud je
NULL
tato hodnota , je vybrána celá oblast klienta a výstup je stále oříznut do okna.Pro druhou verzi této funkce může být
NULL
tento popisovač pouze v případě, žeRGN_COPY
je zadaný režim.
nMode
Určuje operaci, která se má provést. Musí to být jedna z následujících hodnot:
RGN_AND
Nová oblast výřezu kombinuje překrývající se oblasti aktuální oblasti výřezu a oblast identifikovaná uživatelempRgn
.RGN_COPY
Nová oblast výřezu je kopií oblasti identifikované uživatelempRgn
. Tato funkce je stejná jako první verzeSelectClipRgn
. Pokud jeNULL
oblast identifikovaná uživatelempRgn
, stane se nová oblast výřezu výchozí oblastí výřezu (oblast s hodnotou null).RGN_DIFF
Nová oblast výřezu kombinuje oblasti aktuální oblasti výřezu s těmito oblastmi vyloučenými z oblasti identifikovanépRgn
.RGN_OR
Nová oblast výřezu kombinuje aktuální oblast výřezu a oblast identifikovaná uživatelempRgn
.RGN_XOR
Nová oblast výřezu kombinuje aktuální oblast výřezu a oblast identifikovanoupRgn
, ale vylučuje všechny překrývající se oblasti.
Návratová hodnota
Typ oblasti. Může to být libovolná z následujících hodnot:
COMPLEXREGION
Nová oblast výřezu má překrývající se ohraničení.ERROR
Kontext zařízení nebo oblast nejsou platné.NULLREGION
Nová oblast výřezu je prázdná.SIMPLEREGION
Nová oblast výřezu nemá žádné překrývající se ohraničení.
Poznámky
Použije se jenom kopie vybrané oblasti. Samotnou oblast je možné vybrat pro libovolný počet dalších kontextů zařízení nebo ji můžete odstranit.
Funkce předpokládá, že souřadnice pro danou oblast jsou zadané v jednotkách zařízení. Některá zařízení tiskárny podporují textový výstup s vyšším rozlišením než grafický výstup, aby se zachovala přesnost potřebná k vyjádření textových metrik. Tato zařízení hlásí jednotky zařízení s vyšším rozlišením, tj. v textových jednotkách. Tato zařízení pak škálují souřadnice grafiky tak, aby se několik ohlášených jednotek zařízení mapuje pouze na 1 grafickou jednotku. Funkci byste měli vždy volat SelectClipRgn
pomocí textových jednotek.
Aplikace, které musí vzít měřítko grafických objektů v GDI, mohou použít řídicí znak tiskárny GETSCALINGFACTOR
k určení měřítka faktoru. Tento faktor škálování ovlivňuje oříznutí. Pokud se k oříznutí grafiky používá oblast, GDI rozdělí souřadnice měřítkem. Pokud se oblast používá k oříznutí textu, GDI neprovádí žádné úpravy měřítka. Měřítko 1 způsobí rozdělení souřadnic 2; faktor škálování 2 způsobí rozdělení souřadnic 4; a tak dále.
CDC::SelectObject
Vybere objekt do kontextu zařízení.
CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);
Parametry
pPen
Ukazatel na CPen
objekt, který chcete vybrat.
pBrush
Ukazatel na CBrush
objekt, který chcete vybrat.
pFont
Ukazatel na CFont
objekt, který chcete vybrat.
pBitmap
Ukazatel na CBitmap
objekt, který chcete vybrat.
pRgn
Ukazatel na CRgn
objekt, který chcete vybrat.
pObject
Ukazatel na CGdiObject
objekt, který chcete vybrat.
Návratová hodnota
Ukazatel na nahrazený objekt. Toto je ukazatel na objekt jedné z tříd odvozených od CGdiObject
, například CPen
, v závislosti na tom, jakou verzi funkce se používá. Vrácená hodnota je NULL
, pokud dojde k chybě. Tato funkce může vrátit ukazatel na dočasný objekt. Tento dočasný objekt je platný pouze během zpracování jedné zprávy systému Windows. Další informace najdete na webu CGdiObject::FromHandle
.
Verze členské funkce, která přebírá parametr oblasti, provádí stejnou úlohu jako členová SelectClipRgn
funkce. Její návratová hodnota může být libovolná z následujících možností:
COMPLEXREGION
Nová oblast výřezu má překrývající se ohraničení.ERROR
Kontext zařízení nebo oblast nejsou platné.NULLREGION
Nová oblast výřezu je prázdná.SIMPLEREGION
Nová oblast výřezu nemá žádné překrývající se ohraničení.
Poznámky
Třída CDC
poskytuje pět verzí specializovaných pro konkrétní druhy objektů GDI, včetně per, štětců, písem, rastrových obrázků a oblastí. Nově vybraný objekt nahradí předchozí objekt stejného typu. Pokud je například pObject
obecná verze SelectObject
bodů na CPen
objekt, nahradí funkce aktuální pero perem určeným pObject
.
Aplikace může najednou vybrat rastrový obrázek do kontextu paměťového zařízení a pouze do jednoho kontextu paměťového zařízení. Formát rastrového obrázku musí být buď monochromatický, nebo kompatibilní s kontextem zařízení; pokud není, SelectObject
vrátí chybu.
Pro Windows 3.1 a novější vrátí funkce stejnou hodnotu bez ohledu na to, SelectObject
jestli se používá v metasouboru nebo ne. V předchozích verzích Systému Windows SelectObject
vrátila nenulovou hodnotu pro úspěch a hodnotu 0 pro selhání při použití v metasouboru.
CDC::SelectPalette
Vybere logickou paletu určenou pPalette
jako vybraný objekt palety kontextu zařízení.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Parametry
pPalette
Identifikuje logickou paletu, která se má vybrat. Tato paleta již musí být vytvořena pomocí CPalette
členské funkce CreatePalette
.
bForceBackground
Určuje, jestli je logická paleta vynucená být paletou pozadí. Pokud bForceBackground
je nenulová, vybraná paleta je vždy paleta pozadí bez ohledu na to, jestli má okno vstupní fokus. Pokud bForceBackground
je 0 a kontext zařízení je připojen k oknem, logická paleta je paleta popředí, pokud má okno vstupní fokus.
Návratová hodnota
Ukazatel na CPalette
objekt identifikující logickou paletu nahrazenou paletou určenou parametrem pPalette
. NULL
Pokud dojde k chybě.
Poznámky
Nová paleta se stane objektem palety používaný GDI k řízení barev zobrazených v kontextu zařízení a nahradí předchozí paletu.
Aplikace může vybrat logickou paletu do více než jednoho kontextu zařízení. Změny logické palety ale ovlivní všechny kontexty zařízení, pro které je vybraná. Pokud aplikace vybere paletu do více než jednoho kontextu zařízení, musí všechny kontexty zařízení patřit do stejného fyzického zařízení.
CDC::SelectStockObject
Vybere CGdiObject
objekt, který odpovídá některému z předdefinovaných per, štětců nebo písem.
virtual CGdiObject* SelectStockObject(int nIndex);
Parametry
nIndex
Určuje požadovaný druh skladového objektu. Může to být jedna z následujících hodnot:
BLACK_BRUSH
Černý kartáč.DKGRAY_BRUSH
Tmavě šedý štětec.GRAY_BRUSH
Šedý štětec.HOLLOW_BRUSH
Prázdný kartáč.LTGRAY_BRUSH
Světle šedý štětec.NULL_BRUSH
Nulový štětec.WHITE_BRUSH
Bílý kartáč.BLACK_PEN
Černé pero.NULL_PEN
Pero s hodnotou Null.WHITE_PEN
Bílé pero.ANSI_FIXED_FONT
Opravené systémové písmo ANSI.ANSI_VAR_FONT
Systémové písmo proměnné ANSI.DEVICE_DEFAULT_FONT
Písmo závislé na zařízeníOEM_FIXED_FONT
Pevné písmo závislé na OEMSYSTEM_FONT
Systémové písmo. Ve výchozím nastavení systém Windows používá systémové písmo k kreslení nabídek, ovládacích prvků dialogového okna a dalšího textu. Nejlepší je ale nespoléhat naSYSTEM_FONT
získání písma používaného dialogovými okny a dialogy. Místo toho použijteSystemParametersInfo
funkci s parametremSPI_GETNONCLIENTMETRICS
k načtení aktuálního písma.SystemParametersInfo
bere v úvahu aktuální motiv a poskytuje informace o písmu pro titulky, nabídky a dialogy zpráv.SYSTEM_FIXED_FONT
Systémové písmo s pevnou šířkou použité ve Windows před verzí 3.0. Tento objekt je k dispozici z důvodu kompatibility s dřívějšími verzemi Systému Windows.DEFAULT_PALETTE
Výchozí paleta barev. Tato paleta se skládá z 20 statických barev v systémové paletě.
Návratová hodnota
Ukazatel na CGdiObject
objekt, který byl nahrazen, pokud je funkce úspěšná. Skutečný objekt, na který odkazuje, je CPen
, CBrush
nebo CFont
objekt. Pokud je volání neúspěšné, návratová hodnota je NULL.
CDC::SetAbortProc
Nainstaluje proceduru přerušení tiskové úlohy.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Parametry
lpfn
Ukazatel na funkci přerušení, která se má nainstalovat jako procedura přerušení. Další informace o funkci zpětného volání naleznete v tématu Funkce zpětného volání pro CDC::SetAbortProc
.
Návratová hodnota
Určuje výsledek SetAbortProc
funkce. Některé z následujících hodnot jsou pravděpodobnější než jiné, ale všechny jsou možné.
SP_ERROR
Obecná chyba.SP_OUTOFDISK
Není k dispozici dostatek místa na disku pro zařazování a nebude k dispozici žádné další místo.SP_OUTOFMEMORY
Pro zařazování není k dispozici dostatek paměti.SP_USERABORT
Uživatel ukončil úlohu prostřednictvím Správce tisku.
Poznámky
Pokud aplikace povolí zrušení tiskové úlohy během zařazování, musí před spuštěním tiskové úlohy s členskou StartDoc
funkcí nastavit funkci přerušení. Správce tisku volá funkci přerušení během zařazování, aby mohla aplikace zrušit tiskovou úlohu nebo zpracovat podmínky volného místa na disku. Pokud není nastavena žádná funkce přerušení, úloha tisku selže, pokud není dostatek místa na disku pro zařazování.
Funkce Microsoft Visual C++ zjednodušují vytváření funkce zpětného volání předané .SetAbortProc
Adresa předaná EnumObjects
členské funkci je ukazatel na funkci exportovanou s __declspec(dllexport)
konvencí volání a __stdcall
konvence volání.
Také nemusíte exportovat název funkce v EXPORTS
příkazu v souboru definice modulu vaší aplikace. Místo toho můžete použít EXPORT
modifikátor funkce, jak je uvedeno v
BOOL CALLBACK EXPORT AFunction( HDC, int );
aby kompilátor vygeneroval správný záznam exportu pro export podle názvu bez aliasů. To funguje pro většinu potřeb. V některých speciálních případech, jako je export funkce pomocí řadových nebo aliasů exportu, musíte stále použít EXPORTS
příkaz v souboru definice modulu.
Registrační rozhraní zpětného volání jsou nyní typově bezpečná (musíte předat ukazatel funkce, který odkazuje na správný druh funkce pro konkrétní zpětné volání).
Všechny funkce zpětného volání musí před návratem do systému Windows soutisknout výjimky služby Microsoft Foundation, protože výjimky nelze vyvolat napříč hranicemi zpětného volání. Další informace o výjimkách najdete v článku Výjimky.
CDC::SetArcDirection
Nastaví směr kreslení, který se má použít pro obloukové a obdélníkové funkce.
int SetArcDirection(int nArcDirection);
Parametry
nArcDirection
Určuje nový směr oblouku. Tento parametr může být některou z následujících hodnot:
AD_COUNTERCLOCKWISE
Obrázky nakreslené proti směru hodinových ručiček.AD_CLOCKWISE
Obrázky nakreslené po směru hodinových ručiček.
Návratová hodnota
Určuje starý směr oblouku, pokud je úspěšný; jinak 0.
Poznámky
Výchozí směr je proti směru hodinových ručiček. Funkce SetArcDirection
určuje směr, ve kterém se nakreslely následující funkce:
Arc | Výsečový |
---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Voláním této funkce nastavíte kontext m_hAttribDC
zařízení atributu .
virtual void SetAttribDC(HDC hDC);
Parametry
hDC
Kontext zařízení s Windows.
Poznámky
Tato členová funkce nepřipočítá kontext zařízení k objektu CDC
. K objektu je připojen pouze kontext výstupního CDC
zařízení.
CDC::SetBkColor
Nastaví aktuální barvu pozadí na zadanou barvu.
virtual COLORREF SetBkColor(COLORREF crColor);
Parametry
crColor
Určuje novou barvu pozadí.
Návratová hodnota
Předchozí barva pozadí jako hodnota barvy RGB. Pokud dojde k chybě, návratová hodnota je 0x80000000.
Poznámky
Pokud je OPAQUE
režim pozadí , systém použije barvu pozadí k vyplnění mezer ve stylovaných čarách, mezery mezi šrafovanými čarami v štětcích a pozadím v buňkách znaků. Systém také používá barvu pozadí při převodu rastrových obrázků mezi barevnými a monochromatými kontexty zařízení.
Pokud zařízení nemůže zobrazit zadanou barvu, systém nastaví barvu pozadí na nejbližší fyzickou barvu.
CDC::SetBkMode
Nastaví režim pozadí.
int SetBkMode(int nBkMode);
Parametry
nBkMode
Určuje režim, který se má nastavit. Tento parametr může být některou z následujících hodnot:
OPAQUE
Pozadí se vyplní aktuální barvou pozadí před nakreslením textu, šrafovaného štětce nebo pera. Toto je výchozí režim pozadí.TRANSPARENT
Před kreslením se pozadí nezmění.
Návratová hodnota
Předchozí režim pozadí.
Poznámky
Režim pozadí definuje, jestli systém před kreslením textu, šrafovanými štětci nebo jakýmkoli stylem pera, který není plnou čárou, odebere existující barvy pozadí na kreslicí ploše.
Příklad
Podívejte se na příklad pro CWnd::OnCtlColor
.
CDC::SetBoundsRect
Řídí akumulace informací o ohraničujícího obdélníku pro zadaný kontext zařízení.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Parametry
lpRectBounds
Odkazuje na RECT
strukturu nebo CRect
objekt, který slouží k nastavení ohraničujícího obdélníku. Rozměry obdélníku jsou uvedeny v logických souřadnicích. Tento parametr může být NULL
.
flags
Určuje, jak se nový obdélník zkombinuje s kumulovaným obdélníkem. Tento parametr může být kombinací následujících hodnot:
DCB_ACCUMULATE
Přidejte obdélník určenýlpRectBounds
ohraničující obdélník (pomocí operace sjednocení obdélníku).DCB_DISABLE
Vypněte akumulace hranic.DCB_ENABLE
Zapněte akumulace hranic. (Výchozí nastavení pro akumulace hranic je zakázané.)
Návratová hodnota
Aktuální stav ohraničujícího obdélníku, pokud je funkce úspěšná. Návratová flags
hodnota může být například kombinací DCB_
hodnot:
DCB_ACCUMULATE
Ohraničující obdélník není prázdný. Tato hodnota bude vždy nastavena.DCB_DISABLE
Akumulace hranic je vypnutá.DCB_ENABLE
Nahromadění hranic je zapnuté.
Poznámky
Systém Windows může udržovat ohraničující obdélník pro všechny operace kreslení. Tento obdélník může aplikace dotazovat a resetovat. Vazby výkresu jsou užitečné pro zneplatnění mezipaměti rastrových obrázků.
CDC::SetBrushOrg
Určuje původ, který rozhraní GDI přiřadí dalšímu štětec, který aplikace vybere v kontextu zařízení.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Parametry
x
Určuje souřadnici x (v jednotkách zařízení) nového původu. Tato hodnota musí být v rozsahu 0 až 7.
y
Určuje souřadnici y (v jednotkách zařízení) nového původu. Tato hodnota musí být v rozsahu 0 až 7.
point
Určuje souřadnice x a y nového původu. Každá hodnota musí být v rozsahu 0 až 7. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Předchozí původ kartáče v jednotkách zařízení.
Poznámky
Výchozí souřadnice pro původ štětce jsou (0, 0). Chcete-li změnit původ štětce, zavolejte UnrealizeObject
funkci objektuCBrush
, volání SetBrushOrg
SelectObject
a volání členské funkce a vyberte štětec do kontextu zařízení.
Nepoužívejte SetBrushOrg
se skladovými CBrush
objekty.
CDC::SetColorAdjustment
Nastaví hodnoty úprav barev pro kontext zařízení pomocí zadaných hodnot.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Parametry
lpColorAdjust
Odkazuje na datovou COLORADJUSTMENT
strukturu obsahující hodnoty úprav barev.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Hodnoty úprav barev slouží k úpravě vstupní barvy zdrojového rastrového obrázku pro volání CDC::StretchBlt
členské funkce při HALFTONE
nastavení režimu.
CDC::SetDCBrushColor
Nastaví aktuální barvu štětce kontextu zařízení (DC) na zadanou hodnotu barvy.
COLORREF SetDCBrushColor(COLORREF crColor);
Parametry
crColor
Určuje novou barvu štětce.
Návratová hodnota
Pokud je funkce úspěšná, návratová hodnota určuje předchozí barvu štětce řadiče domény jako COLORREF
hodnotu.
Pokud funkce selže, návratová hodnota je CLR_INVALID
.
Poznámky
Tato metoda emuluje funkce funkce SetDCBrushColor
, jak je popsáno v sadě Windows SDK.
CDC::SetDCPenColor
Nastaví aktuální barvu pera pro kontext zařízení (DC) na zadanou hodnotu barvy.
COLORREF SetDCPenColor(COLORREF crColor);
Parametry
crColor
Určuje novou barvu pera.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato členová funkce využívá funkci SetDCPenColor
Win32, jak je popsáno v sadě Windows SDK.
CDC::SetGraphicsMode
Nastaví grafický režim pro zadaný kontext zařízení.
int SetGraphicsMode(int iMode);
Parametry
iMode
Určuje grafický režim. Seznam hodnot, které tento parametr může vzít, naleznete v tématu SetGraphicsMode
.
Návratová hodnota
Vrátí starý grafický režim při úspěchu.
Vrátí hodnotu 0 při selhání. Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Tato metoda zabalí funkci SetGraphicsMode
GDI systému Windows .
CDC::SetLayout
Voláním této členské funkce můžete změnit rozložení textu a grafiky kontextu zařízení zprava doleva, což je standardní rozložení pro jazykové verze, jako je arabština a hebrejština.
DWORD SetLayout(DWORD dwLayout);
Parametry
dwLayout
Rozložení kontextu zařízení a příznaky ovládacích prvků rastrového obrázku Může to být kombinace následujících hodnot.
Hodnota | Význam |
---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Zakáže všechny reflexe volání do CDC::BitBlt a CDC::StretchBlt . |
LAYOUT_RTL |
Nastaví výchozí vodorovné rozložení tak, aby bylo zprava doleva. |
LAYOUT_LTR |
Nastaví výchozí rozložení tak, aby bylo zleva doprava. |
Návratová hodnota
Pokud je to úspěšné, předchozí rozložení kontextu zařízení.
V případě neúspěchu . GDI_ERROR
Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Za normálních okolností byste nezavolali SetLayout
okno. Rozložení zprava doleva v okně řídíte nastavením rozšířených stylů oken, například WS_EX_RTLREADING
. Kontext zařízení, například tiskárna nebo metasoubor, toto rozložení nezdědí. Jediným způsobem, jak nastavit kontext zařízení pro rozložení zprava doleva, je voláním SetLayout
.
Pokud voláte SetLayout(LAYOUT_RTL)
, SetLayout
automaticky změní režim mapování na MM_ISOTROPIC
. V důsledku toho se následné volání GetMapMode
vrátí MM_ISOTROPIC
místo MM_TEXT
.
V některých případech, například u mnoha rastrových obrázků, můžete chtít zachovat rozložení zleva doprava. V těchto případech vykreslujte obrázek voláním BitBlt
nebo StretchBlt
, pak nastavte rastrový řídicí příznak pro dwLayout
hodnotu LAYOUT_BITMAPORIENTATIONPRESERVED
.
Jakmile změníte rozložení příznakem LAYOUT_RTL
, příznaky, které obvykle určují pravý nebo levý, jsou obrácené. Abyste se vyhnuli nejasnostem, můžete chtít definovat alternativní názvy standardních příznaků. Seznamnavrhovaných SetLayout
CDC::SetMapMode
Nastaví režim mapování.
virtual int SetMapMode(int nMapMode);
Parametry
nMapMode
Určuje nový režim mapování. Může to být libovolná z následujících hodnot:
MM_ANISOTROPIC
Logické jednotky se převedou na libovolné jednotky s libovolně škálovanými osami. Nastavením režimuMM_ANISOTROPIC
mapování se nezmění aktuální okno ani nastavení oblasti zobrazení. Pokud chcete změnit jednotky, orientaci a škálování, zavolejteSetWindowExt
funkce aSetViewportExt
členské funkce.MM_HIENGLISH
Každá logická jednotka se převede na 0,001 palce. Kladné x je vpravo; pozitivní y je vzhůru.MM_HIMETRIC
Každá logická jednotka se převede na 0,01 milimetru. Kladné x je vpravo; pozitivní y je vzhůru.MM_ISOTROPIC
Logické jednotky jsou převedeny na libovolné jednotky s rovnoměrně škálovanými osami; to znamená, že 1 jednotka podél osy x se rovná 1 jednotce podél osy y.SetWindowExt
Pomocí členskýchSetViewportExt
funkcí určete požadované jednotky a orientaci os. GDI provádí úpravy podle potřeby, aby jednotky x a y zůstaly stejné velikosti.MM_LOENGLISH
Každá logická jednotka se převede na 0,01 palce. Kladné x je vpravo; pozitivní y je vzhůru.MM_LOMETRIC
Každá logická jednotka se převede na 0,1 milimetru. Kladné x je vpravo; pozitivní y je vzhůru.MM_TEXT
Každá logická jednotka se převede na 1 pixel zařízení. Kladné x je vpravo; pozitivní y je dole.MM_TWIPS
Každá logická jednotka se převede na 1/20 bodu. (Protože bod je 1/72 palce, twip je 1/1440 palce.) Kladné x je vpravo; pozitivní y je vzhůru.
Návratová hodnota
Předchozí režim mapování.
Poznámky
Režim mapování definuje měrnou jednotku použitou k převodu logických jednotek na jednotky zařízení; definuje také orientaci os x a y zařízení. GDI používá režim mapování k převodu logických souřadnic na příslušné souřadnice zařízení. Režim MM_TEXT
umožňuje aplikacím pracovat v pixelech zařízení, kde se 1 jednotka rovná 1 pixel. Fyzická velikost pixelu se liší od zařízení po zařízení.
MM_HIENGLISH
Režimy , , MM_LOMETRIC
MM_HIMETRIC
MM_LOENGLISH
a MM_TWIPS
jsou užitečné pro aplikace, které musí vykreslit fyzicky smysluplné jednotky (například palce nebo milimetry). Režim MM_ISOTROPIC
zajišťuje poměr stran 1:1, což je užitečné, když je důležité zachovat přesný tvar obrázku. Režim MM_ANISOTROPIC
umožňuje nezávisle upravit souřadnice x a y.
Poznámka:
Pokud voláte SetLayout
změnu rozložení DC (kontext zařízení) na rozložení zprava doleva, SetLayout
automaticky změní režim mapování na MM_ISOTROPIC
.
Příklad
Podívejte se na příklad pro CView::OnPrepareDC
.
CDC::SetMapperFlags
Změní metodu použitou mapovačem písma při převodu logického písma na fyzické písmo.
DWORD SetMapperFlags(DWORD dwFlag);
Parametry
dwFlag
Určuje, jestli se mapovač písma pokusí shodovat s výškou a šířkou stran písma na zařízení. Pokud je ASPECT_FILTERING
tato hodnota , mapper vybere pouze písma, jejichž x-aspekt a y-aspekt přesně odpovídají těm zadaným zařízením.
Návratová hodnota
Předchozí hodnota příznaku font-mapper.
Poznámky
Aplikace může použít SetMapperFlags
k tomu, aby se mapovač písma pokusil zvolit pouze fyzické písmo, které přesně odpovídá poměru stran zadaného zařízení.
Aplikace, která používá pouze rastrová písma, může funkci použít SetMapperFlags
k zajištění, že písmo vybrané mapovačem písma je atraktivní a čitelné na zadaném zařízení. Aplikace, které používají škálovatelná písma (TrueType), obvykle nepoužívají SetMapperFlags
.
Pokud žádné fyzické písmo nemá poměr stran odpovídající specifikaci v logickém písmu, GDI zvolí nový poměr stran a vybere písmo, které odpovídá tomuto novému poměru stran.
CDC::SetMiterLimit
Nastaví limit pro délku spojení miterů pro kontext zařízení.
BOOL SetMiterLimit(float fMiterLimit);
Parametry
fMiterLimit
Určuje nový limit miteru pro kontext zařízení.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Délka miteru je definována jako vzdálenost od průsečíku stěn přímky uvnitř spojení k průsečíku stěn čáry na vnější straně spojení. Limit miteru je maximální povolený poměr délky miteru k šířce čáry. Výchozí limit miteru je 10,0.
CDC::SetOutputDC
Voláním této členské funkce nastavíte kontext m_hDC
výstupního zařízení .
virtual void SetOutputDC(HDC hDC);
Parametry
hDC
Kontext zařízení s Windows.
Poznámky
Tuto členovou funkci lze volat pouze v případě, že k objektu CDC
nebyl připojen kontext zařízení. Tato členová funkce nastaví m_hDC
kontext zařízení, ale nepřiponí k objektu CDC
kontext zařízení.
CDC::SetPixel
Nastaví pixel v bodě určeném k nejbližší aproximaci barvy určené crColor
.
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Parametry
x
Určuje logickou souřadnici x bodu, který se má nastavit.
y
Určuje logickou souřadnici y bodu, který se má nastavit.
crColor
Hodnota COLORREF
RGB, která určuje barvu použitou k vykreslení bodu. COLORREF
Popis této hodnoty najdete v sadě Windows SDK.
point
Určuje logické souřadnice x a y bodu, který se má nastavit. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Hodnota RGB pro barvu, kterou bod maluje. Tato hodnota se může lišit od hodnoty určené crColor
v případě, že se použije aproximace této barvy. Pokud funkce selže (pokud je bod mimo oblast výřezu), návratová hodnota je -1.
Poznámky
Bod musí být v oblasti výřezu. Pokud bod není v oblasti výřezu, funkce nic nedělá.
Funkci nepodporují SetPixel
všechna zařízení. Pokud chcete zjistit, jestli zařízení podporuje SetPixel
, zavolejte GetDeviceCaps
členovou funkci s indexem RASTERCAPS
a zkontrolujte návratovou hodnotu příznaku RC_BITBLT
.
CDC::SetPixelV
Nastaví pixel na zadaných souřadnicích na nejbližší aproximaci zadané barvy.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Parametry
x
Určuje souřadnici x v logických jednotkách bodu, který se má nastavit.
y
Určuje souřadnici y v logických jednotkách bodu, který se má nastavit.
crColor
Určuje barvu, která se má použít k vykreslení bodu.
point
Určuje logické souřadnice x a y bodu, který se má nastavit. Pro tento parametr můžete předat datovou POINT
CPoint
strukturu nebo objekt.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Bod musí být v oblasti výřezu i viditelné části povrchu zařízení. Ne všechna zařízení podporují členovu funkci. Další informace najdete RC_BITBLT
v možnostech CDC::GetDeviceCaps
členské funkce. SetPixelV
je rychlejší než SetPixel
proto, že nemusí vracet barevnou hodnotu namalovaného bodu.
CDC::SetPolyFillMode
Nastaví režim mnohoúhelníku.
int SetPolyFillMode(int nPolyFillMode);
Parametry
nPolyFillMode
Určuje nový režim plnění. Tato hodnota může být buď ALTERNATE
nebo WINDING
. Výchozí režim nastavený ve Windows je ALTERNATE
.
Návratová hodnota
Předchozí režim plnění, pokud byl úspěšný; jinak 0.
Poznámky
Pokud je ALTERNATE
režim mnohoúhelníku , systém vyplní oblast mezi lichými a sudými čísly mnohoúhelníku na každé čáře skenování. To znamená, že systém vyplní oblast mezi první a druhou stranou, mezi třetí a čtvrtou stranou atd. Tento režim je výchozí.
Pokud je WINDING
režim mnohoúhelníku , systém používá směr, ve kterém byl obrázek vykreslen k určení, zda se má vyplnit oblast. Každý segment čáry v mnohoúhelníku je nakreslen ve směru hodinových ručiček nebo proti směru hodinových ručiček. Vždy, když imaginární čára vytažená z uzavřené oblasti na vnější část obrázku prochází segmentem ručiček po směru hodinových ručiček, zvýší se počet. Když čára prochází segmentem čáry proti směru hodinových ručiček, je počet dekrementován. Oblast se vyplní, pokud je počet nenulový, když čára dosáhne vnější části obrázku.
CDC::SetROP2
Nastaví aktuální režim kreslení.
int SetROP2(int nDrawMode);
Parametry
nDrawMode
Určuje nový režim kreslení. Může to být libovolná z následujících hodnot:
R2_BLACK
Pixel je vždy černý.R2_WHITE
Pixel je vždy bílý.R2_NOP
Pixel zůstane beze změny.R2_NOT
Pixel je inverzní k barvě obrazovky.R2_COPYPEN
Pixel je barva pera.R2_NOTCOPYPEN
Pixel je inverzní funkce barvy pera.R2_MERGEPENNOT
Pixel je kombinace barvy pera a inverzní funkce k barvě obrazovky (konečný pixel = (~
pixel obrazovky)|
pero).R2_MASKPENNOT
Pixel je kombinace barev, které jsou společné pro pero i inverzní funkci obrazovky (konečný pixel = (~
pixel obrazovky).&
R2_MERGENOTPEN
Pixel je kombinace barvy obrazovky a inverzní funkce barvy pera (konečný pixel = (~
pero)|
pixel obrazovky).R2_MASKNOTPEN
Pixel je kombinace barev, které jsou společné pro obrazovku i inverzní funkci pera (konečný pixel = (~
pero)&
pixel obrazovky).R2_MERGEPEN
Pixel je kombinace barvy pera a barvy obrazovky (konečný pixel = pixel obrazovky pera|
).R2_NOTMERGEPEN
Pixel je inverzní funkceR2_MERGEPEN
barvy (konečný pixel =~
(|
pixel pera)).R2_MASKPEN
Pixel je kombinace barev, které jsou společné pro pero i obrazovku (konečný pixel = pixel obrazovky pera&
).R2_NOTMASKPEN
Pixel je inverzní funkceR2_MASKPEN
barvy (konečný pixel =~
(&
pixel pera)).R2_XORPEN
Pixel je kombinace barev, které jsou v peru nebo na obrazovce, ale ne v obou (konečný pixel = pixel obrazovky pera^
).R2_NOTXORPEN
Pixel je inverzní funkceR2_XORPEN
barvy (konečný pixel =~
(^
pixel pera)).
Návratová hodnota
Předchozí režim kreslení.
Může to být libovolná hodnota uvedená v sadě Windows SDK.
Poznámky
Režim kreslení určuje, jak se barvy pera a vnitřní části vyplněných objektů kombinují s barvou, která je již na ploše zobrazení.
Režim kreslení je určen pouze pro rastrová zařízení; nevztahuje se na vektorová zařízení. Režimy kreslení jsou binární raster-operace kódy představující všechny možné logické kombinace dvou proměnných, pomocí binárních operátorů , a (exkluzivní |
) a unární operace ~
.^
|
&
CDC::SetStretchBltMode
Nastaví režim rastrového roztažení pro členovou StretchBlt
funkci.
int SetStretchBltMode(int nStretchMode);
Parametry
nStretchMode
Určuje režim roztažení. Může to být libovolná z následujících hodnot:
Hodnota | Popis |
---|---|
BLACKONWHITE |
Provede logickou & operaci pomocí hodnot barev pro eliminované a existující pixely. Pokud je rastrový obrázek monochromatický rastrový obrázek, zachová tento režim černé pixely na úkor bílých pixelů. |
COLORONCOLOR |
Odstraní pixely. Tento režim odstraní všechny odstraněné čáry pixelů, aniž by se pokusil zachovat jejich informace. |
HALFTONE |
Mapuje pixely ze zdrojového obdélníku do bloků pixelů v cílovém obdélníku. Průměrná barva nad cílovým blokem pixelů je přibližná barva zdrojových pixelů. |
Po nastavení HALFTONE režimu roztažení musí aplikace volat funkci SetBrushOrgEx Win32 pro nastavení původu štětce. Pokud se to nepodaří, dojde k chybnému zarovnání kartáče. |
|
STRETCH_ANDSCANS |
Windows 95/98: Stejné jako BLACKONWHITE |
STRETCH_DELETESCANS |
Windows 95/98: Stejné jako COLORONCOLOR |
STRETCH_HALFTONE |
Windows 95/98: Stejné jako HALFTONE . |
STRETCH_ORSCANS |
Windows 95/98: Stejné jako WHITEONBLACK |
WHITEONBLACK |
Provede logickou | operaci pomocí hodnot barev pro eliminované a existující pixely. Pokud je rastrový obrázek monochromatický rastrový obrázek, zachová tento režim bílé pixely na úkor černých pixelů. |
Návratová hodnota
Předchozí režim roztažení. Může to být STRETCH_ANDSCANS
, STRETCH_DELETESCANS
nebo STRETCH_ORSCANS
.
Poznámky
Režim rastrového roztažení definuje, jak se informace z rastrových obrázků komprimují pomocí funkce.
Režimy BLACKONWHITE
(STRETCH_ANDSCANS
) a WHITEONBLACK
(STRETCH_ORSCANS
) se obvykle používají k zachování pixelů popředí v monochromatických bitmapách. Režim COLORONCOLOR
(STRETCH_DELETESCANS
) se obvykle používá k zachování barvy v barevných bitmapách.
Režim HALFTONE
vyžaduje větší zpracování zdrojové image než ostatní tři režimy; je pomalejší než ostatní, ale vytváří obrázky s vyšší kvalitou. Je také nutné volat po nastavení HALFTONE
režimu, SetBrushOrgEx
aby nedošlo k nesprávnému zarovnání štětce.
V závislosti na možnostech ovladače zařízení může být k dispozici i více režimů roztažení.
CDC::SetTextAlign
Nastaví příznaky zarovnání textu.
UINT SetTextAlign(UINT nFlags);
Parametry
nFlags
Určuje příznaky zarovnání textu. Příznaky určují vztah mezi bodem a obdélníkem, který ohraničuje text. Bod může být buď aktuální pozice, nebo souřadnice určené funkcí textového výstupu. Obdélník, který ohraničuje text, je definován sousedními buňkami znaků v textovém řetězci. Parametr nFlags
může být jeden nebo více příznaků z následujících tří kategorií. Zvolte pouze jeden příznak z každé kategorie. První kategorie ovlivňuje zarovnání textu ve směru x:
TA_CENTER
Zarovná bod do vodorovného středu ohraničujícího obdélníku.TA_LEFT
Zarovná bod s levou stranou ohraničujícího obdélníku. Toto je výchozí nastavení.TA_RIGHT
Zarovná bod s pravou stranou ohraničujícího obdélníku.
Druhá kategorie má vliv na zarovnání textu ve směru y:
TA_BASELINE
Zarovná bod se základní čárou vybraného písma.TA_BOTTOM
Zarovná bod s dolní částí ohraničujícího obdélníku.TA_TOP
Zarovná bod s horní částí ohraničujícího obdélníku. Toto je výchozí nastavení.
Třetí kategorie určuje, zda je aktuální pozice aktualizována při zápisu textu:
TA_NOUPDATECP
Neaktualizuje aktuální pozici po každém volání funkce textového výstupu. Toto je výchozí nastavení.TA_UPDATECP
Aktualizuje aktuální pozici x po každém volání funkce textového výstupu. Nová pozice je na pravé straně ohraničujícího obdélníku textu. Při nastavení tohoto příznaku jsou souřadnice zadané ve volání členskéTextOut
funkce ignorovány.
Návratová hodnota
Předchozí nastavení zarovnání textu, pokud bylo úspěšné. Bajt s nízkým pořadím obsahuje vodorovné nastavení a bajt s vysokým pořadím obsahuje svislé nastavení; jinak 0.
Poznámky
ExtTextOut
Členské TextOut
funkce používají tyto příznaky při umístění řetězce textu na displeji nebo zařízení. Příznaky určují vztah mezi konkrétním bodem a obdélníkem, který ohraničuje text. Souřadnice tohoto bodu jsou předány jako parametry TextOut
členské funkci. Obdélník, který ohraničuje text, je tvořen sousedními buňkami znaků v textovém řetězci.
CDC::SetTextCharacterExtra
Nastaví velikost mezer mezi znaky.
int SetTextCharacterExtra(int nCharExtra);
Parametry
nCharExtra
Určuje množství nadbytečného místa (v logických jednotkách), které se má přidat ke každému znaku. Pokud aktuální režim mapování není MM_TEXT
, nCharExtra
transformuje se a zaokrouhlí na nejbližší pixel.
Návratová hodnota
Množství předchozích mezer mezi znaky.
Poznámky
GDI přidá toto řádkování ke každému znaku, včetně znaků zalomení, když zapíše řádek textu do kontextu zařízení. Výchozí hodnota pro množství mezer mezi znaky je 0.
CDC::SetTextColor
Nastaví barvu textu na zadanou barvu.
virtual COLORREF SetTextColor(COLORREF crColor);
Parametry
crColor
Určuje barvu textu jako hodnotu barvy RGB.
Návratová hodnota
Hodnota RGB pro předchozí barvu textu.
Poznámky
Systém používá tuto barvu textu při psaní textu do tohoto kontextu zařízení a také při převodu rastrových obrázků mezi barevnými a monochromatelnými kontexty zařízení.
Pokud zařízení nemůže reprezentovat zadanou barvu, systém nastaví barvu textu na nejbližší fyzickou barvu. Barva pozadí znaku je určena funkcemi SetBkColor
a SetBkMode
členy.
Příklad
Podívejte se na příklad pro CWnd::OnCtlColor
.
CDC::SetTextJustification
Přidá mezeru ke znakům zalomení v řetězci.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parametry
nBreakExtra
Určuje celkovou nadbytečnou mezeru, která se má přidat na řádek textu (v logických jednotkách). Pokud aktuální režim mapování není MM_TEXT
, hodnota zadaná tímto parametrem se převede na aktuální režim mapování a zaokrouhlí se na nejbližší jednotku zařízení.
nBreakCount
Určuje početznakůch
Návratová hodnota
Jeden, pokud je funkce úspěšná; jinak 0.
Poznámky
Aplikace může pomocí GetTextMetrics
členských funkcí načíst znak konce písma.
SetTextJustification
Po volání členské funkce volání funkce textového výstupu (například TextOut
) rozdělí zadané nadbytečné místo rovnoměrně mezi zadaný počet znaků přerušení. Znak zalomení je obvykle znak mezery (ASCII 32), ale může být definován písmem jako nějaký jiný znak.
Členské funkce GetTextExtent
se obvykle používá s SetTextJustification
. GetTextExtent
vypočítá šířku dané čáry před zarovnáním. Aplikace může určit, kolik místa se má v parametru nBreakExtra
zadat, odečtením hodnoty vrácené GetTextExtent
šířkou řetězce po zarovnání.
Pomocí SetTextJustification
funkce lze zarovnat čáru, která obsahuje více spuštění v různých písmech. V tomto případě musí být řádek vytvořen kusmeální zarovnáním a zápisem každého spuštění samostatně.
Vzhledem k tomu, že během zarovnání může dojít k chybám zaokrouhlení, systém uchovává spuštěný chybový termín, který definuje aktuální chybu. Když zarovnáte řádek, který obsahuje více spuštění, GetTextExtent
automaticky použije tento chybový termín při výpočtu rozsahu dalšího spuštění. To umožňuje funkci textového výstupu spojit chybu s novým spuštěním.
Po zarovnání každého řádku musí být tento chybový termín vymazán, aby se zabránilo jeho začlenění do dalšího řádku. Termín lze vymazat voláním SetTextJustification
s nastavenou nBreakExtra
na hodnotu 0.
CDC::SetViewportExt
Nastaví rozsahy x a y zobrazení kontextu zařízení.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Parametry
cx
Určuje rozsah zobrazení x (v jednotkách zařízení).
cy
Určuje rozsah zobrazení (v jednotkách zařízení).
size
Určuje rozsahy x a y oblasti zobrazení (v jednotkách zařízení).
Návratová hodnota
Předchozí rozsahy oblasti zobrazení jako objektu CSize
. Pokud dojde k chybě, souřadnice x a y vráceného CSize
objektu jsou obě nastaveny na hodnotu 0.
Poznámky
Oblast zobrazení spolu s oknem kontextu zařízení definuje, jak GDI mapuje body v logickém souřadnicovém systému na body v souřadnicovém systému skutečného zařízení. Jinými slovy definují, jak GDI převádí logické souřadnice na souřadnice zařízení.
Pokud jsou nastaveny následující režimy mapování, volání a SetWindowExt
SetViewportExt
jsou ignorována:
MM_HIENGLISH |
MM_LOMETRIC |
---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
Při MM_ISOTROPIC
nastavení režimu musí aplikace před voláním SetWindowExt
volat SetViewportExt
členovou funkci .
Příklad
Podívejte se na příklad pro CView::OnPrepareDC
.
CDC::SetViewportOrg
Nastaví původ oblasti zobrazení kontextu zařízení.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Parametry
x
Určuje souřadnici x (v jednotkách zařízení) původu oblasti zobrazení. Hodnota musí být v rozsahu souřadnicového systému zařízení.
y
Určuje souřadnici y (v jednotkách zařízení) původu oblasti zobrazení. Hodnota musí být v rozsahu souřadnicového systému zařízení.
point
Určuje původ oblasti zobrazení. Hodnoty musí být v rozsahu souřadnicového systému zařízení. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Předchozí původ oblasti zobrazení (v souřadnicích zařízení) jako CPoint
objekt.
Poznámky
Oblast zobrazení spolu s oknem kontextu zařízení definuje, jak GDI mapuje body v logickém souřadnicovém systému na body v souřadnicovém systému skutečného zařízení. Jinými slovy definují, jak GDI převádí logické souřadnice na souřadnice zařízení.
Původ oblasti zobrazení označuje bod v souřadnicovém systému zařízení, na který GDI mapuje původ okna, bod v logickém souřadnicovém systému určeném členovou SetWindowOrg
funkcí. GDI mapuje všechny ostatní body podle stejného procesu potřebného k mapování původu okna na zdroj oblasti zobrazení. Například všechny body v kruhu kolem bodu v počátku okna budou v kruhu kolem bodu na počátku oblasti zobrazení. Podobně budou všechny body v čáře, která prochází původem okna, na čáře, která prochází původem oblasti zobrazení.
Příklad
Podívejte se na příklad pro CView::OnPrepareDC
.
CDC::SetWindowExt
Nastaví rozsahy x a y okna přidruženého k kontextu zařízení.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Parametry
cx
Určuje rozsah x (v logických jednotkách) okna.
cy
Určuje rozsah y (v logických jednotkách) okna.
size
Určuje rozsahy x a y (v logických jednotkách) okna.
Návratová hodnota
Předchozí rozsahy okna (v logických jednotkách) jako CSize
objekt. Pokud dojde k chybě, souřadnice x a y vráceného CSize
objektu jsou obě nastaveny na hodnotu 0.
Poznámky
Okno spolu se zobrazením kontextu zařízení definuje, jak GDI mapuje body v logickém souřadnicovém systému na body v souřadnicovém systému zařízení.
Při nastavení následujících režimů mapování se volání SetWindowExt
a SetViewportExt
funkce ignorují:
MM_HIENGLISH
MM_HIMETRIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
Při MM_ISOTROPIC
nastavení režimu musí aplikace před voláním volat SetViewportExt
členovou SetWindowExt
funkci .
Příklad
Podívejte se na příklad pro CView::OnPrepareDC
.
CDC::SetWindowOrg
Nastaví původ okna kontextu zařízení.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Parametry
x
Určuje logickou souřadnici x nového původu okna.
y
Určuje logickou souřadnici y nového původu okna.
point
Určuje logické souřadnice nového původu okna. Pro tento parametr můžete předat POINT
strukturu nebo CPoint
objekt.
Návratová hodnota
Předchozí původ okna jako objektu CPoint
.
Poznámky
Okno spolu se zobrazením kontextu zařízení definuje, jak GDI mapuje body v logickém souřadnicovém systému na body v souřadnicovém systému zařízení.
Počátek okna označuje bod v logickém souřadnicovém systému, ze kterého GDI mapuje původ oblasti zobrazení, bod v souřadnicovém systému zařízení určeném SetWindowOrg
funkcí. GDI mapuje všechny ostatní body podle stejného procesu potřebného k mapování původu okna na zdroj oblasti zobrazení. Například všechny body v kruhu kolem bodu v počátku okna budou v kruhu kolem bodu na počátku oblasti zobrazení. Podobně budou všechny body v čáře, která prochází původem okna, na čáře, která prochází původem oblasti zobrazení.
CDC::SetWorldTransform
Nastaví dvojrozměrnou lineární transformaci mezi světovým prostorem a prostorem stránky pro zadaný kontext zařízení. Tuto transformaci lze použít ke škálování, otočení, překládání nebo překladu grafického výstupu.
BOOL SetWorldTransform(const XFORM& rXform);
Parametry
rXform
Odkaz na XFORM
strukturu, která obsahuje transformační data.
Návratová hodnota
Vrátí nenulovou hodnotu úspěchu.
Vrátí hodnotu 0 při selhání.
Pokud chcete získat rozšířené informace o chybě, zavolejte GetLastError
.
Poznámky
Tato metoda zabalí funkci SetWorldTransform
GDI systému Windows .
CDC::StartDoc
Informuje ovladač zařízení, že se spouští nová tisková úloha a že všechny následné StartPage
a EndPage
volání by měly být zařazovány pod stejnou úlohu, dokud EndDoc
nedojde k volání.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Parametry
lpDocInfo
Odkazuje na DOCINFO
strukturu obsahující název souboru dokumentu a název výstupního souboru.
lpszDocName
Ukazatel na řetězec obsahující název souboru dokumentu.
Návratová hodnota
Pokud je funkce úspěšná, návratová hodnota je větší než nula. Tato hodnota je identifikátor tiskové úlohy pro dokument.
Pokud funkce selže, návratová hodnota je menší nebo rovna nule.
Poznámky
Tím zajistíte, že dokumenty delší než jedna stránka nebudou interspersovány s jinými úlohami.
U systémů Windows verze 3.1 a novějších nahrazuje tato funkce řídicí znak tiskárny STARTDOC
. Pomocí této funkce zajistíte, že dokumenty obsahující více než jednu stránku nebudou interspersovány s jinými tiskovými úlohami.
StartDoc
nemělo by se používat uvnitř metasouborů.
Příklad
Tento fragment kódu získá výchozí tiskárnu, otevře tiskovou úlohu a zařadí jednu stránku s textem "Hello, World!". Vzhledem k tomu, že text vytištěný tímto kódem není škálován na logické jednotky tiskárny, může být výstupní text v malých písmenech, že výsledek není čitelný. Funkce škálování CDC, například SetMapMode
, SetViewportOrg
a SetWindowExt
, lze použít k opravě škálování.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initialize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
CDC::StartPage
Voláním této členské funkce připravte ovladač tiskárny na příjem dat.
int StartPage();
Návratová hodnota
Větší než nebo rovno 0, pokud je funkce úspěšná, nebo záporná hodnota, pokud došlo k chybě.
Poznámky
StartPage
NEWFRAME
nahrazuje a BANDINFO
unikne.
Přehled posloupnosti tiskových volání najdete v StartDoc
členské funkci.
Systém zakáže členovou ResetDC
funkci mezi voláními a StartPage
EndPage
.
Příklad
Podívejte se na příklad pro CDC::StartDoc
.
CDC::StretchBlt
Zkopíruje bitmapu ze zdrojového obdélníku do cílového obdélníku a roztáhne nebo ji zkomprimuje tak, aby odpovídala rozměrům cílového obdélníku.
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop);
Parametry
x
Určuje souřadnici x (v logických jednotkách) levého horního rohu cílového obdélníku.
y
Určuje souřadnici y (v logických jednotkách) levého horního rohu cílového obdélníku.
nWidth
Určuje šířku (v logických jednotkách) cílového obdélníku.
nHeight
Určuje výšku (v logických jednotkách) cílového obdélníku.
pSrcDC
Určuje kontext zdrojového zařízení.
xSrc
Určuje souřadnici x (v logických jednotkách) levého horního rohu zdrojového obdélníku.
ySrc
Určuje souřadnici y (v logických jednotkách) levého horního rohu zdrojového obdélníku.
nSrcWidth
Určuje šířku (v logických jednotkách) zdrojového obdélníku.
nSrcHeight
Určuje výšku (v logických jednotkách) zdrojového obdélníku.
dwRop
Určuje rastrovou operaci, která má být provedena. Kódy rastrové operace určují, jak rozhraní GDI kombinuje barvy ve výstupních operacích, které zahrnují aktuální štětec, možnou zdrojovou bitmapu a cílovou bitmapu. Tento parametr může mít jednu z následujících hodnot:
BLACKNESS
Změní veškerý výstup na černou.DSTINVERT
Invertuje cílovou bitmapu.MERGECOPY
Kombinuje vzor a zdrojový rastrový obrázek pomocí logického operátoru AND .MERGEPAINT
Kombinuje invertovaný zdrojový rastrový obrázek s cílovou bitmapou pomocí logického operátoru OR .NOTSRCCOPY
Zkopíruje invertovaný zdrojový rastr do cíle.NOTSRCERASE
Invertuje výsledek kombinování cílových a zdrojových rastrových obrázků pomocí logického operátoru OR .PATCOPY
Zkopíruje vzor do cílového rastrového obrázku.PATINVERT
Kombinuje cílovou bitmapu se vzorem pomocí logického operátoru XOR .PATPAINT
Kombinuje invertovaný zdrojový rastrový obrázek se vzorem pomocí logického operátoru OR . Kombinuje výsledek této operace s cílovou bitmapou pomocí logického operátoru OR .SRCAND
Kombinuje pixely cílového a zdrojového rastrového obrázku pomocí logického operátoru AND .SRCCOPY
Zkopíruje zdrojový rastrový obrázek do cílového rastrového obrázku.SRCERASE
Invertuje cílovou bitmapu a kombinuje výsledek se zdrojovým rastrem pomocí logického operátoru AND .SRCINVERT
Kombinuje pixely cílového a zdrojového rastrového obrázku pomocí logického operátoru XOR .SRCPAINT
Kombinuje pixely cílového a zdrojového rastrového obrázku pomocí logického operátoru OR .WHITENESS
Změní veškerý výstup na bílou.
Návratová hodnota
Nenulové, pokud je bitmapa nakreslena; jinak 0.
Poznámky
Funkce používá režim roztažení kontextu cílového zařízení (nastavený ) SetStretchBltMode
k určení, jak roztáhnout nebo komprimovat rastrový obrázek.
Funkce StretchBlt
přesune rastrový obrázek ze zdrojového zařízení zadaného pSrcDC
cílovým zařízením reprezentovaným objektem kontextu zařízení, jehož členovou funkci se volá. Parametry xSrc
, ySrc
a nSrcWidth
nSrcHeight
parametry definují levý horní roh a rozměry zdrojového obdélníku. Parametry x
a , nWidth
y
nHeight
poskytují levý horní roh a rozměry cílového obdélníku. Rastrová operace určená definováním dwRop
způsobu kombinování zdrojového rastrového obrázku a bitů, které jsou již v cílovém zařízení kombinovány.
Funkce StretchBlt
vytvoří zrcadlový obrázek rastrového obrázku, pokud se znaménka nSrcWidth
a nWidth
nebo nSrcHeight
a nHeight
parametry liší. Pokud nSrcWidth
a nWidth
mají různé znaménka, funkce vytvoří zrcadlový obrázek rastru podél osy x. Pokud nSrcHeight
a nHeight
mají různé znaménka, funkce vytvoří zrcadlový obrázek rastrového obrázku podél osy y.
Funkce StretchBlt
roztáhne nebo zkomprimuje zdrojový rastrový obrázek v paměti a potom zkopíruje výsledek do cíle. Pokud se má vzor sloučit s výsledkem, nebude sloučen, dokud se roztažený zdrojový rastrový obrázek nezkopíruje do cíle. Pokud se použije štětec, je to vybraný štětec v kontextu cílového zařízení. Cílové souřadnice jsou transformovány podle kontextu cílového zařízení; zdrojové souřadnice jsou transformovány podle kontextu zdrojového zařízení;
Pokud cílové, zdrojové a vzorové rastrové obrázky nemají stejný barevný formát, převede zdrojový a vzorový rastrový obrázek tak, StretchBlt
aby odpovídal cílovým rastrovým obrázkům. Během převodu se použijí barvy popředí a pozadí kontextu cílového zařízení.
Pokud StretchBlt
je nutné převést monochromatický rastr na barvu, nastaví bílé bity (1) na barvu pozadí a černé bity (0) na barvu popředí. V případě převodu barevného na černobílé zobrazení nastaví pixely, které odpovídají barvě pozadí, na bílé (1) a všechny ostatní pixely nastaví na černé (0). Použijí se barvy popředí a pozadí kontextu cílového zařízení s barvou.
Funkci nepodporují StretchBlt
všechna zařízení. Pokud chcete zjistit, jestli zařízení podporuje StretchBlt
, zavolejte GetDeviceCaps
členovou funkci s indexem RASTERCAPS
a zkontrolujte návratovou hodnotu příznaku RC_STRETCHBLT
.
CDC::StrokeAndFillPath
Zavře všechny otevřené obrázky v cestě, tahá obrys cesty pomocí aktuálního pera a vyplní jeho interiér pomocí aktuálního štětce.
BOOL StrokeAndFillPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Kontext zařízení musí obsahovat uzavřenou cestu. Členová StrokeAndFillPath
funkce má stejný účinek jako zavření všech otevřených obrázků v cestě a stroking a vyplňování cesty zvlášť, s tím rozdílem, že vyplněná oblast nepřekrývá oblast tahů, i když je pero široké.
CDC::StrokePath
Vykreslí zadanou cestu pomocí aktuálního pera.
BOOL StrokePath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Kontext zařízení musí obsahovat uzavřenou cestu.
CDC::TabbedTextOut
Voláním této členské funkce napište řetězec znaků v zadaném umístění a rozbalte tabulátory na hodnoty zadané v poli pozic zarážky tabulátoru.
virtual CSize TabbedTextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
CSize TabbedTextOut(
int x,
int y,
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
Parametry
x
Určuje logickou souřadnici x počátečního bodu řetězce.
y
Určuje logickou souřadnici y počátečního bodu řetězce.
lpszString
Odkazuje na řetězec znaků, který se má nakreslit. Pro tento parametr můžete předat ukazatel na pole znaků nebo CString
objekt.
nCount
Určuje délku řetězce , na který lpszString
odkazuje .
nTabPositions
Určuje počet hodnot v poli pozic zarážky tabulátoru.
lpnTabStopPositions
Odkazuje na pole obsahující pozice zarážky tabulátoru (v logických jednotkách). Zarážky tabulátoru musí být seřazeny vzestupně; nejmenší hodnota x by měla být první položkou v matici.
nTabOrigin
Určuje souřadnici x počáteční pozice, ze které jsou karty rozbalené (v logických jednotkách).
str
Objekt CString
, který obsahuje zadané znaky.
Návratová hodnota
Dimenze řetězce (v logických jednotkách) jako CSize
objekt.
Poznámky
Text je napsaný v aktuálně vybraném písmu. Pokud nTabPositions
je 0 a lpnTabStopPositions
je NULL
, tabulátory se rozbalí na osmkrát průměrnou šířku znaků.
Pokud nTabPositions
je 1, zarážky tabulátoru jsou odděleny vzdáleností určenou první hodnotou v matici lpnTabStopPositions
. Pokud matice lpnTabStopPositions
obsahuje více než jednu hodnotu, nastaví se zarážka tabulátoru pro každou hodnotu v matici až do čísla určeného nTabPositions
hodnotou . Parametr nTabOrigin
umožňuje aplikaci volat TabbedTextOut
funkci několikrát pro jeden řádek. Pokud aplikace volá funkci více než jednou se nTabOrigin
sadou na stejnou hodnotu pokaždé, funkce rozbalí všechny karty vzhledem k pozici určené nTabOrigin
.
Ve výchozím nastavení funkce nepoužívá ani neaktualizuje aktuální pozici. Pokud aplikace potřebuje aktualizovat aktuální pozici při volání funkce, může aplikace volat SetTextAlign
členovou funkci s nastavenou nFlags
hodnotou TA_UPDATECP
. Pokud je tento příznak nastaven, Systém Windows ignoruje x
a y
parametry při následných voláních TabbedTextOut
pomocí aktuální pozice.
CDC::TextOut
Zapíše řetězec znaků v zadaném umístění pomocí aktuálně vybraného písma.
virtual BOOL TextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount);
BOOL TextOut(
int x,
int y,
const CString& str);
Parametry
x
Určuje logickou souřadnici x počátečního bodu textu.
y
Určuje logickou souřadnici y počátečního bodu textu.
lpszString
Odkazuje na řetězec znaků, který chcete kreslit.
nCount
Určuje počet znaků v řetězci.
str
Objekt CString
obsahující znaky, které se mají nakreslit.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Počátky znaku jsou v levém horním rohu buňky znaku. Ve výchozím nastavení funkce nepoužívá ani neaktualizuje aktuální pozici.
Pokud aplikace potřebuje aktualizovat aktuální pozici při volání TextOut
, může aplikace volat SetTextAlign
členovou funkci s nastavenou nFlags
hodnotou TA_UPDATECP
. Pokud je tento příznak nastaven, Systém Windows ignoruje x
a y
parametry při následných voláních TextOut
pomocí aktuální pozice.
Příklad
Podívejte se na příklad pro CDC::BeginPath
.
CDC::TransparentBlt
Voláním této členské funkce přenesete bitový blok barevných dat, který odpovídá obdélníku pixelů ze zadaného kontextu zdrojového zařízení do kontextu cílového zařízení.
BOOL TransparentBlt(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
UINT clrTransparent);
Parametry
xDest
Určuje souřadnici x v logických jednotkách v levém horním rohu cílového obdélníku.
yDest
Určuje souřadnici y v logických jednotkách v levém horním rohu cílového obdélníku.
nDestWidth
Určuje šířku cílového obdélníku v logických jednotkách.
nDestHeight
Určuje výšku cílového obdélníku v logických jednotkách.
pSrcDC
Ukazatel na kontext zdrojového zařízení
xSrc
Určuje souřadnici x v logických jednotkách zdrojového obdélníku.
ySrc
Určuje souřadnici y v logických jednotkách zdrojového obdélníku.
nSrcWidth
Určuje šířku zdrojového obdélníku v logických jednotkách.
nSrcHeight
Určuje výšku zdrojového obdélníku v logických jednotkách.
clrTransparent
Barva RGB ve zdrojovém rastrovém obrázku, která má být považována za průhlednou.
Návratová hodnota
TRUE
v případě úspěchu; jinak FALSE
.
Poznámky
TransparentBlt
umožňuje transparentnost; to znamená, že barva RGB označená indikátorem clrTransparent
je pro přenos průhledná.
Další informace najdete TransparentBlt
v sadě Windows SDK.
CDC::UpdateColors
Aktualizuje oblast klienta kontextu zařízení tím, že odpovídá aktuálním barvám v klientské oblasti se systémovou paletou na pixel-by-pixel.
void UpdateColors();
Poznámky
Neaktivní okno s realizované logické palety může volat UpdateColors
jako alternativu k překreslení jeho klientské oblasti při změně systémové palety.
Další informace o použití palet barev naleznete UpdateColors
v sadě Windows SDK.
Členská UpdateColors
funkce obvykle aktualizuje klientskou oblast rychleji než překreslení oblasti. Vzhledem k tomu, že funkce provádí překlad barev na základě barvy každého pixelu před změnou systémové palety, každé volání této funkce způsobí ztrátu určité přesnosti barev.
CDC::WidenPath
Předefinuje aktuální cestu jako oblast, která by byla vykreslena, pokud by byla cesta tahována pomocí pera aktuálně vybraného do kontextu zařízení.
BOOL WidenPath();
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Tato funkce je úspěšná pouze v případě, že aktuální pero je geometrické pero vytvořené druhou verzí CreatePen
členské funkce, nebo pokud je vytvořeno pero s první verzí CreatePen
a má šířku v jednotkách zařízení větší než 1. Kontext zařízení musí obsahovat uzavřenou cestu. Všechny křivky Bzier v cestě se převedou na posloupnosti rovných čar, které znázorňují rozšířené křivky. Proto žádné křivky Bzier zůstávají v cestě po WidenPath
zavolání.
Viz také
CObject
Třída
Graf hierarchie
CPaintDC
Třída
CWindowDC
Třída
CClientDC
Třída
CMetaFileDC
Třída