共用方式為


CDC 類別

定義裝置內容物件的類別。

語法

class CDC : public CObject

成員

公用建構函式

名稱 描述
CDC::CDC 建構 CDC 物件。

公用方法

名稱 描述
CDC::AbortDoc 終止目前的列印作業,清除應用程式自上次呼叫 StartDoc 成員函式以來已寫入裝置的所有專案。
CDC::AbortPath 關閉並捨棄裝置內容中的任何路徑。
CDC::AddMetaFileComment 將批注從緩衝區複製到指定的增強格式元檔。
CDC::AlphaBlend 顯示具有透明或半透明圖元的點陣圖。
CDC::AngleArc 繪製線條線段和弧線,並將目前位置移至弧線的終點。
CDC::Arc 繪製橢圓形弧線。
CDC::ArcTo 繪製橢圓形弧線。此函式與 Arc類似,不同之處在於目前的位置已更新。
CDC::Attach 將 Windows 裝置內容附加至這個 CDC 物件。
CDC::BeginPath 在裝置內容中開啟路徑括號。
CDC::BitBlt 從指定的裝置內容複製點陣圖。
CDC::Chord 繪製和弦(封閉圖,由橢圓形和線段的交集所系結)。
CDC::CloseFigure 關閉路徑中的開啟圖。
CDC::CreateCompatibleDC 建立與另一個裝置內容相容的記憶體裝置內容。 您可以使用它來準備記憶體中的映像。
CDC::CreateDC 建立特定裝置的裝置內容。
CDC::CreateIC 建立特定裝置的信息內容。 這可讓您快速取得裝置的相關信息,而不需建立裝置內容。
CDC::DeleteDC 刪除與此 CDC 對象相關聯的 Windows 裝置內容。
CDC::DeleteTempMap CWinApp閑置時間處理程式呼叫,以刪除 所FromHandle建立的任何暫存CDC物件。 此外,也會中斷連結裝置內容。
CDC::Detach 將 Windows 裝置內容與這個 CDC 物件中斷連結。
CDC::DPtoHIMETRIC 將裝置單位轉換成 HIMETRIC 單位。
CDC::DPtoLP 將裝置單位轉換成邏輯單元。
CDC::Draw3dRect 繪製三維矩形。
CDC::DrawDragRect 在拖曳矩形時,清除並重新繪製矩形。
CDC::DrawEdge 繪製矩形的邊緣。
CDC::DrawEscape 存取無法透過圖形裝置介面 (GDI) 直接取得之視訊顯示器的繪圖功能。
CDC::DrawFocusRect 在用來表示焦點的樣式中繪製矩形。
CDC::DrawFrameControl 繪製框架控制件。
CDC::DrawIcon 繪製圖示。
CDC::DrawState 顯示影像並套用視覺效果來表示狀態。
CDC::DrawText 在指定的矩形中繪製格式化的文字。
CDC::DrawTextEx 使用其他格式,在指定的矩形中繪製格式化的文字。
CDC::Ellipse 繪製橢圓形。
CDC::EndDoc 結束成員函式所啟動的 StartDoc 列印作業。
CDC::EndPage 通知設備驅動器頁面即將結束。
CDC::EndPath 關閉路徑括弧,並將括弧所定義的路徑選取到裝置內容中。
CDC::EnumObjects 列舉裝置內容中可用的畫筆和筆刷。
CDC::Escape 允許應用程式透過 GDI 存取無法直接從特定裝置取得的設施。 也允許存取 Windows 逸出函式。 應用程式的逸出呼叫會轉譯並傳送至設備驅動器。
CDC::ExcludeClipRect 建立新的裁剪區域,其中包含現有的裁剪區域減去指定的矩形。
CDC::ExcludeUpdateRgn 藉由從裁剪區域排除視窗中更新的區域,防止在視窗的無效區域內繪製。
CDC::ExtFloodFill 以目前的筆刷填滿區域。 提供比 CDC::FloodFill 成員函式更多的彈性。
CDC::ExtTextOut 使用目前選取的字型,在矩形區域內寫入字元字串。
CDC::FillPath 關閉目前路徑中任何開啟的數位,並使用目前的筆刷和多邊形填滿模式填滿路徑的內部。
CDC::FillRect 使用特定筆刷填滿指定的矩形。
CDC::FillRgn 以指定的筆刷填滿特定區域。
CDC::FillSolidRect 以純色填滿矩形。
CDC::FlattenPath 將路徑中選取的任何曲線轉換成目前的裝置內容,並將每個曲線轉換成一連串的線條。
CDC::FloodFill 以目前的筆刷填滿區域。
CDC::FrameRect 在矩形周圍繪製框線。
CDC::FrameRgn 使用筆刷在特定區域周圍繪製框線。
CDC::FromHandle 當指定裝置內容的句柄時,傳回物件的指標 CDCCDC如果物件未附加至句柄,則會建立並附加暫存CDC物件。
CDC::GetArcDirection 傳回裝置內容的目前弧線方向。
CDC::GetAspectRatioFilter 擷取目前外觀比例篩選的設定。
CDC::GetBkColor 擷取目前的背景色彩。
CDC::GetBkMode 擷取背景模式。
CDC::GetBoundsRect 傳回指定裝置內容的目前累積周框。
CDC::GetBrushOrg 擷取目前筆刷的原點。
CDC::GetCharABCWidths 從目前字型擷取指定範圍中連續字元的寬度,以邏輯單位表示。
CDC::GetCharABCWidthsI 從目前的 TrueType 字型擷取指定範圍中連續圖像索引的寬度,以邏輯單位為單位。
CDC::GetCharacterPlacement 擷取字元字串的各種信息類型。
CDC::GetCharWidth 從目前字型擷取指定範圍中連續字元的小數寬度。
CDC::GetCharWidthI 從目前字型擷取指定範圍中連續圖像索引的寬度,以邏輯座標表示。
CDC::GetClipBox 擷取目前裁剪界限周圍最緊密周框的維度。
CDC::GetColorAdjustment 擷取裝置內容的色彩調整值。
CDC::GetCurrentBitmap 傳回目前選取 CBitmap 物件的指標。
CDC::GetCurrentBrush 傳回目前選取 CBrush 物件的指標。
CDC::GetCurrentFont 傳回目前選取 CFont 物件的指標。
CDC::GetCurrentPalette 傳回目前選取 CPalette 物件的指標。
CDC::GetCurrentPen 傳回目前選取 CPen 物件的指標。
CDC::GetCurrentPosition 擷取畫筆的目前位置(以邏輯座標為單位)。
CDC::GetDCBrushColor 擷取目前的筆刷色彩。
CDC::GetDCPenColor 擷取目前的畫筆顏色。
CDC::GetDeviceCaps 擷取所指定顯示裝置功能的指定裝置特定資訊。
CDC::GetFontData 從可調整字型檔案擷取字型計量資訊。 要擷取的資訊是藉由指定字型檔案的位移和要傳回的信息長度來識別。
CDC::GetFontLanguageInfo 傳回指定之顯示內容目前選取之字型的相關信息。
CDC::GetGlyphOutline 擷取目前字型中大綱字元的外框曲線或位圖。
CDC::GetGraphicsMode 擷取指定裝置內容的目前圖形模式。
CDC::GetHalftoneBrush 擷取半色調筆刷。
CDC::GetKerningPairs 擷取目前在指定裝置內容中選取之字型的字元斜線配對。
CDC::GetLayout 擷取裝置內容 (DC) 的配置。 版面配置可以是從左至右(預設值)或由右至左(鏡像)。
CDC::GetMapMode 擷取目前的對應模式。
CDC::GetMiterLimit 傳回裝置內容的錯位限制。
CDC::GetNearestColor 擷取最接近指定裝置可表示之指定邏輯色彩的邏輯色彩。
CDC::GetOutlineTextMetrics 擷取 TrueType 字型的字型計量資訊。
CDC::GetOutputCharWidth 使用輸出裝置內容,從目前字型擷取連續字元群組中個別字元的寬度。
CDC::GetOutputTabbedTextExtent 計算輸出裝置內容上字元字串的寬度和高度。
CDC::GetOutputTextExtent 使用目前的字型來判斷維度,計算輸出裝置內容上文字行的寬度和高度。
CDC::GetOutputTextMetrics 從輸出裝置內容擷取目前字型的計量。
CDC::GetPath 擷取定義線條端點的座標,以及選取到裝置內容之路徑中找到的曲線控制點。
CDC::GetPixel 擷取指定點圖元的 RGB 色彩值。
CDC::GetPolyFillMode 擷取目前的多邊形填滿模式。
CDC::GetROP2 擷取目前的繪圖模式。
CDC::GetSafeHdc CDC::m_hDC回 輸出裝置內容。
CDC::GetStretchBltMode 擷取目前的點陣圖延展模式。
CDC::GetTabbedTextExtent 計算屬性裝置內容上字元字串的寬度和高度。
CDC::GetTextAlign 擷取文字對齊旗標。
CDC::GetTextCharacterExtra 擷取字元間距數量目前的設定。
CDC::GetTextColor 擷取目前的文字色彩。
CDC::GetTextExtent 使用目前的字型來判斷維度,計算屬性裝置內容上文字行的寬度和高度。
CDC::GetTextExtentExPointI 擷取指定字串中的字元數,此字串會符合指定的空格,並以每個字元的文字範圍填滿陣列。
CDC::GetTextExtentPointI 擷取指定字元索引數位的寬度和高度。
CDC::GetTextFace 將目前字型的字樣名稱複製到緩衝區中做為 Null 終止的字串。
CDC::GetTextMetrics 從屬性裝置內容擷取目前字型的計量。
CDC::GetViewportExt 擷取檢視區的 x 和 Y 範圍。
CDC::GetViewportOrg 擷取檢視區原點的 X 和 Y 座標。
CDC::GetWindow 傳回與顯示裝置內容相關聯的視窗。
CDC::GetWindowExt 擷取相關聯視窗的 x 和 Y 範圍。
CDC::GetWindowOrg 擷取相關聯視窗原點的 X 和 Y 座標。
CDC::GetWorldTransform 擷取目前世界空間到分頁空間轉換。
CDC::GradientFill 以降級色彩填滿矩形和三角形結構。
CDC::GrayString 在指定位置繪製暗灰色(灰色)文字。
CDC::HIMETRICtoDP 將 HIMETRIC 單位轉換成裝置單位。
CDC::HIMETRICtoLP 將 HIMETRIC 單位轉換成邏輯單元。
CDC::IntersectClipRect 藉由形成目前區域和矩形的交集,建立新的裁剪區域。
CDC::InvertRect 反轉矩形的內容。
CDC::InvertRgn 反轉區域中的色彩。
CDC::IsPrinting 判斷裝置內容是否用於列印。
CDC::LineTo 從目前的位置繪製一條線,但不包括一個點。
CDC::LPtoDP 將邏輯單元轉換成裝置單位。
CDC::LPtoHIMETRIC 將邏輯單元轉換成 HIMETRIC 單位。
CDC::MaskBlt 使用指定的遮罩和點陣作業,結合來源和目的地點陣圖的色彩數據。
CDC::ModifyWorldTransform 使用指定的模式變更裝置內容的世界轉換。
CDC::MoveTo 移動目前的位置。
CDC::OffsetClipRgn 移動指定裝置的裁剪區域。
CDC::OffsetViewportOrg 修改檢視區原點相對於目前檢視區原點座標的檢視區原點。
CDC::OffsetWindowOrg 修改相對於目前視窗原點座標的視窗原點。
CDC::PaintRgn 以選取的筆刷填滿區域。
CDC::PatBlt 建立位模式。
CDC::Pie 繪製餅形的楔形。
CDC::PlayMetaFile 在指定的裝置上播放指定元檔的內容。 的增強版本 PlayMetaFile 會顯示儲存在指定增強格式元檔中的圖片。 元檔可以任意次數播放。
CDC::PlgBlt 執行位區塊傳輸從來源裝置內容中指定矩形到指定裝置內容中指定平行投影的色彩數據位。
CDC::PolyBezier 繪製一或多個 Bzier 曲線。 目前的位置未使用或更新。
CDC::PolyBezierTo 繪製一個或多個 Bzier 曲線,並將目前位置移至最後一個 Bzier 曲線的終點。
CDC::PolyDraw 繪製一組線條線段和 Bzier 曲線。 此函式會更新目前的位置。
CDC::Polygon 繪製多邊形,由兩個或多個點(頂點)組成,由線條連接。
CDC::Polyline 繪製一組連接指定點的線條線段。
CDC::PolylineTo 繪製一或多個直線,並將目前位置移至最後一行的終點。
CDC::PolyPolygon 建立使用目前多邊形填滿模式填滿的兩個或多個多邊形。 多邊形可能會脫離,或可能會重疊。
CDC::PolyPolyline 繪製多個連接的線段數列。 此函式不會使用或更新目前的位置。
CDC::PtVisible 指定指定的點是否在裁剪區域內。
CDC::RealizePalette 將目前邏輯調色盤中的調色盤項目對應至系統調色盤。
CDC::Rectangle 使用目前的畫筆繪製矩形,並使用目前的筆刷填滿矩形。
CDC::RectVisible 判斷指定矩形的任何部分是否位於裁剪區域內。
CDC::ReleaseAttribDC m_hAttribDC釋放屬性裝置內容。
CDC::ReleaseOutputDC m_hDC發行 ,輸出裝置內容。
CDC::ResetDC m_hAttribDC更新裝置內容。
CDC::RestoreDC 將裝置內容還原至以 SaveDC儲存的先前狀態。
CDC::RoundRect 使用目前的畫筆繪製具有圓角的矩形,並使用目前的筆刷填滿。
CDC::SaveDC 儲存裝置內容的目前狀態。
CDC::ScaleViewportExt 修改相對於目前值的檢視區範圍。
CDC::ScaleWindowExt 修改相對於目前值的視窗範圍。
CDC::ScrollDC 水平和垂直捲動位的矩形。
CDC::SelectClipPath 選取目前路徑做為裝置內容的裁剪區域,使用指定的模式,將新區域與任何現有的裁剪區域結合在一起。
CDC::SelectClipRgn 使用指定的模式,將指定的區域與目前的裁剪區域結合。
CDC::SelectObject 選取 GDI 繪圖物件,例如畫筆。
CDC::SelectPalette 選取邏輯選擇區。
CDC::SelectStockObject 選取 Windows 提供的其中一個預先定義的股票畫筆、筆刷或字型。
CDC::SetAbortProc 設定程式設計人員提供的回呼函式,Windows 會在必須中止列印作業時呼叫該函式。
CDC::SetArcDirection 設定要用於弧線和矩形函式的繪圖方向。
CDC::SetAttribDC 設定 m_hAttribDC屬性裝置內容。
CDC::SetBkColor 設定目前的背景色彩。
CDC::SetBkMode 設定背景模式。
CDC::SetBoundsRect 控制指定裝置內容的周框信息的累積。
CDC::SetBrushOrg 指定選取到裝置內容中下一個筆刷的來源。
CDC::SetColorAdjustment 使用指定的值設定裝置內容的色彩調整值。
CDC::SetDCBrushColor 設定目前的筆刷色彩。
CDC::SetDCPenColor 設定目前的畫筆色彩。
CDC::SetGraphicsMode 設定指定裝置內容的目前圖形模式。
CDC::SetLayout 變更裝置內容 (DC) 的配置。
CDC::SetMapMode 設定目前的對應模式。
CDC::SetMapperFlags 更改字型對應程式在將邏輯字型對應至實體字型時所使用的演算法。
CDC::SetMiterLimit 設定裝置內容之Miter聯結長度的限制。
CDC::SetOutputDC 設定 m_hDC輸出裝置內容。
CDC::SetPixel 將指定點的像素設定為最接近指定色彩的近似值。
CDC::SetPixelV 將指定座標的像素設定為最接近指定色彩的近似值。 SetPixelV 速度比 快, SetPixel 因為它不需要傳回繪製點的色彩值。
CDC::SetPolyFillMode 設定多邊形填滿模式。
CDC::SetROP2 設定目前的繪圖模式。
CDC::SetStretchBltMode 設定位圖延展模式。
CDC::SetTextAlign 設定文字對齊旗標。
CDC::SetTextCharacterExtra 設定字元間距的數量。
CDC::SetTextColor 設定文字顏色。
CDC::SetTextJustification 將空格新增至字串中的分隔字元。
CDC::SetViewportExt 設定檢視區的 x 和 Y 範圍。
CDC::SetViewportOrg 設定檢視區原點。
CDC::SetWindowExt 設定相關聯視窗的 x 和 Y 範圍。
CDC::SetWindowOrg 設定裝置內容的視窗原點。
CDC::SetWorldTransform 將目前的世界空間設定為分頁空間轉換。
CDC::StartDoc 通知設備驅動器,新的列印作業正在啟動。
CDC::StartPage 通知設備驅動器,新頁面正在啟動。
CDC::StretchBlt 視需要將點陣圖從來源矩形和裝置移至目的矩形,並縮放或壓縮位圖,以符合目的矩形的維度。
CDC::StrokeAndFillPath 關閉路徑中任何開啟的數位、使用目前的畫筆來觸達路徑的外框,並使用目前的筆刷填滿其內部。
CDC::StrokePath 使用目前的畫筆來轉譯指定的路徑。
CDC::TabbedTextOut 在指定的位置寫入字元字串,將索引標籤展開至定位點位置陣列中指定的值。
CDC::TextOut 使用目前選取的字型,在指定的位置寫入字元字串。
CDC::TransparentBlt 將色彩數據的位區塊從指定的來源裝置內容傳輸至目的地裝置內容,在傳輸中呈現指定的色彩透明。
CDC::UpdateColors 藉由將工作區中的目前色彩與系統調色盤中的目前色彩逐圖元比對,以更新裝置內容的工作區。
CDC::WidenPath 使用目前選取的手寫筆繪製到裝置內容中的畫筆,將目前路徑重新定義為要繪製的區域。

公用運算子

名稱 描述
CDC::operator HDC 擷取裝置內容的句柄。

公用資料成員

名稱 描述
CDC::m_hAttribDC 這個 CDC 物件所使用的屬性裝置內容。
CDC::m_hDC 這個 CDC 物件所使用的輸出裝置內容。

備註

物件 CDC 提供用於處理裝置內容的成員函式,例如顯示或印表機,以及使用與視窗工作區相關聯的顯示內容的成員。

執行所有繪製對象的成員函 CDC 式。 類別提供裝置內容作業、使用繪圖工具、類型安全圖形裝置介面 (GDI) 物件選取,以及使用色彩和調色盤的成員函式。 它也提供成員函式來取得和設定繪圖屬性、對應、使用檢視區、使用視窗範圍、轉換座標、使用區域、裁剪、繪圖線條,以及繪製簡單圖形、省略號和多邊形。 也會提供成員函式來繪製文字、使用字型、使用印表機逸出、捲動和播放元檔。

若要使用 CDC 物件,請建構物件,然後呼叫其成員函式,以平行處理使用裝置內容的 Windows 函式。

注意

在 Windows 95/98 下,所有螢幕座標限制為 16 位。 因此, int 傳遞至成員函式的 CDC 必須位於 -32768 到 32767 的範圍內。

針對特定用途,Microsoft Foundation Class Library 提供衍生自 CDC 的數個類別。 CPaintDC封裝 對和EndPaintBeginPaint呼叫。 CClientDC 管理與視窗工作區相關聯的顯示內容。 CWindowDC 管理與整個視窗相關聯的顯示內容,包括其框架和控件。 CMetaFileDC 將裝置內容與元檔產生關聯。

CDC 提供兩個成員函式 GetLayoutSetLayout,可反轉裝置內容的版面配置,而不會從窗口繼承其版面配置。 對於針對阿拉伯文或希伯來文等文化特性撰寫的應用程式,需要這種從右至左方向,其中字元配置不是歐洲標準。

CDC包含兩個CDC裝置內容,m_hDC以及 m_hAttribDC,在建立 物件時,參考相同的裝置。 CDC 會將所有輸出 GDI 呼叫導向 , m_hDC 並將大部分屬性 GDI 呼叫導向至 m_hAttribDC。 (屬性呼叫的範例是 GetTextColor,而 SetTextColor 是輸出呼叫。)

例如,架構會使用這兩個 CMetaFileDC 裝置內容來實作物件,以在從實體裝置讀取屬性時,將輸出傳送至元檔。 列印預覽是以類似的方式在架構中實作。 您也可以在應用程式特定程式代碼中以類似的方式使用這兩個裝置內容。

有時候您可能需要 來自和 m_hAttribDC 裝置內容的文字計量資訊m_hDC。 下列函式組提供這項功能:

使用 m_hAttribDC 使用m_hDC
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth

如需 的詳細資訊 CDC,請參閱 裝置內容

繼承階層架構

CObject

CDC

需求

標頭: afxwin.h

CDC::AbortDoc

終止目前的列印作業,並清除應用程式自上次呼叫 StartDoc 成員函式之後已寫入裝置的所有專案。

int AbortDoc();

傳回值

如果成功,大於或等於0的值,如果發生錯誤,則為負值。 下列清單顯示常見的錯誤值及其意義:

  • SP_ERROR 一般錯誤。

  • SP_OUTOFDISK 目前沒有足夠的磁碟空間可供多任務緩衝處理使用,且不會再使用任何空間。

  • SP_OUTOFMEMORY 沒有足夠的記憶體可用於多任務緩衝處理。

  • SP_USERABORT 使用者透過列印管理員終止作業。

備註

此成員函式會 ABORTDOC 取代印表機逸出。

AbortDoc 應該用來終止下列專案:

  • 未使用 SetAbortProc指定中止函式的列印作業。

  • 尚未到達其第一個 NEWFRAMENEXTBAND 逸出呼叫的列印作業。

如果應用程式發生列印錯誤或已取消的列印作業,則不得嘗試使用 EndDoc 類別CDC的 或 AbortDoc 成員函式來終止作業。 GDI 會在傳回錯誤值之前自動終止作業。

如果應用程式顯示對話框以允許使用者取消列印作業,它必須先呼叫 AbortDoc ,才能終結對話方塊。

如果列印管理員用來啟動列印作業,則呼叫 AbortDoc 會清除整個多任務緩衝處理作業,印表機不會收到任何訊息。 如果列印管理員未用來啟動列印作業,數據可能已在呼叫之前 AbortDoc 傳送至印表機。 在此情況下,印表機驅動程式會重設印表機(可能的話)並關閉列印作業。

範例

請參閱 CDC::StartDoc 的範例。

CDC::AbortPath

關閉並捨棄裝置內容中的任何路徑。

BOOL AbortPath();

傳回值

如果函式成功則為非零,否則為 0。

備註

如果裝置內容中有開啟的路徑括弧,則會關閉路徑括弧,並捨棄路徑。 如果裝置內容中有關閉的路徑,則會捨棄路徑。

CDC::AddMetaFileComment

將批注從緩衝區複製到指定的增強格式元檔。

BOOL AddMetaFileComment(
    UINT nDataSize,
    const BYTE* pCommentData);

參數

nDataSize
指定批注緩衝區的長度,以位元組為單位。

pCommentData
指向包含批注的緩衝區。

傳回值

如果函式成功則為非零,否則為 0。

備註

批注可能包含任何私人資訊,例如圖片的來源及其建立日期。 批注應該以應用程式簽章開頭,後面接著數據。 批注不應包含位置特定數據。 位置特定數據會指定記錄的位置,因此不應該包含該記錄,因為某個元檔可能會內嵌在另一個元檔內。 此函式只能與增強型元檔搭配使用。

CDC::AlphaBlend

呼叫此成員函式以顯示具有透明或半透明圖元的點陣圖。

BOOL AlphaBlend(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BLENDFUNCTION blend);

參數

xDest
指定目的地矩形左上角的 X 座標,以邏輯單位表示。

yDest
指定目的地矩形左上角的 Y 座標,以邏輯單位表示。

nDestWidth
指定目的地矩形的邏輯單位寬度。

nDestHeight
指定目的地矩形的邏輯單位的高度。

pSrcDC
來源裝置內容的指標。

xSrc
指定來源矩形左上角的 X 座標,以邏輯單位表示。

ySrc
指定來源矩形左上角的 Y 座標,以邏輯單位表示。

nSrcWidth
指定來源矩形的邏輯單位寬度。

nSrcHeight
指定來源矩形邏輯單位的高度。

blend
指定 BLENDFUNCTION 結構。

傳回值

如果成功,則為 TRUE,否則為 FALSE

備註

如需詳細資訊,請參閱 AlphaBlend Windows SDK。

CDC::AngleArc

繪製線條線段和弧線。

BOOL AngleArc(
    int x,
    int y,
    int nRadius,
    float fStartAngle,
    float fSweepAngle);

參數

x
指定圓形中心邏輯 X 座標。

y
指定圓形中心邏輯 Y 座標。

nRadius
以邏輯單位指定圓形的半徑。 此值必須是正數。

fStartAngle
指定相對於 X 軸的起始角度。

fSweepAngle
指定相對於起始角度的角度的掃掠角度。

傳回值

如果成功則為非零;否則為 0。

備註

線條線段是從目前位置繪製到弧線的開頭。弧線沿著圓圈的周長繪製,其半徑和中心。 弧線的長度是由指定的開始和掃掠角度所定義。

AngleArc 將目前的位置移至弧線的結束點。根據目前的轉換和對應模式,此函式所繪製的弧線可能看起來為橢圓形。 在繪製弧線之前,此函式會從目前位置繪製線條線段到弧線的開頭。弧線是透過在指定中心點周圍建構具有指定半徑的虛圓來繪製。 弧線的起點取決於以開始角度的度數,從圓形的 X 軸逆時針測量。 結束點的位置類似,方法是以掃掠角度的度數從起點逆時針測量。

如果掃掠角度大於 360 度,弧線會多次橫掃。 此函式會使用目前的畫筆繪製線條。 此圖未填滿。

CDC::Arc

繪製橢圓形弧線。

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);

參數

x1
指定周框左上角的 X 座標(以邏輯單位為單位)。

y1
指定周框左上角的 Y 座標(以邏輯單位為單位)。

x2
指定周框右下角的 X 座標(以邏輯單位為單位)。

y2
指定周框右下角的 Y 座標(以邏輯單位為單位)。

x3
指定定義弧線起點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y3
指定定義弧線起點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

x4
指定定義弧線端點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y4
指定定義弧線端點之點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

lpRect
指定周框(以邏輯單位為單位)。 您可以傳遞此參數的 LPRECTCRect 物件。

ptStart
指定定義弧線起點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。您可以傳遞這個參數的結構 POINTCPoint 物件。

ptEnd
指定定義弧線結束點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

使用函式繪製的弧線是指定周框所定義的橢圓形區段。

弧線的實際起點是透過指定的起點與橢圓形交集,從周框中央繪製的光線。 弧線的實際結束點是透過指定的結束點交集橢圓形,從周框中央繪製的光線點。 弧線是以逆時針方向繪製。 因為弧線不是封閉的數位,所以不會填滿。 矩形的寬度和高度必須大於2個單位,且小於32,767個單位。

範例

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

繪製橢圓形弧線。

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);

參數

x1
指定周框左上角的 X 座標(以邏輯單位為單位)。

y1
指定周框左上角的 Y 座標(以邏輯單位為單位)。

x2
指定周框右下角的 X 座標(以邏輯單位為單位)。

y2
指定周框右下角的 Y 座標(以邏輯單位為單位)。

x3
指定定義弧線起點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y3
指定定義弧線起點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

x4
指定定義弧線端點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y4
指定定義弧線端點之點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

lpRect
指定周框(以邏輯單位為單位)。 您可以將指標傳遞至 RECT 資料結構或 CRect 此參數的物件。

ptStart
指定定義弧線起點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。您可以傳遞 POINT 此參數的數據結構或 CPoint 物件。

ptEnd
指定定義弧線結束點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。您可以傳遞 POINT 此參數的數據結構或 CPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

此函式與 CDC::Arc類似,不同之處在於目前的位置已更新。 點 ( x1y1) 和 ( x2y2) 會指定周框。 由指定周框形成的橢圓形會定義弧線的曲線。弧線會逆時針延伸(預設弧形方向),從其與周框中央交集星形線的點延伸至 (*x3*y3)。 弧線的結尾會與周框中央的星形線交集到 (、 x4y4) 。 如果起點和終點相同,則會繪製完整的橢圓形。

線條是從目前位置繪製到弧線的起點。如果沒有發生錯誤,目前的位置會設定為弧線的結束點。弧線是使用目前的畫筆繪製的;它未填滿。

CDC::Attach

使用此成員函式將 附加 hDCCDC 物件。

BOOL Attach(HDC hDC);

參數

hDC
Windows 裝置內容。

傳回值

如果函式成功則為非零,否則為 0。

備註

hDC儲存在 m_hDC、輸出裝置內容和 中的m_hAttribDC屬性裝置內容中。

CDC::BeginPath

在裝置內容中開啟路徑括號。

BOOL BeginPath();

傳回值

如果函式成功則為非零,否則為 0。

備註

開啟路徑括弧之後,應用程式可以開始呼叫 GDI 繪圖函式,以定義位於路徑中的點。 應用程式可以藉由呼叫 EndPath 成員函式來關閉開啟的路徑括號。 當應用程式呼叫 BeginPath時,會捨棄任何先前的路徑。

如需定義路徑中點的繪圖函式清單,請參閱 BeginPath Windows SDK。

範例

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

將點陣圖從來源裝置內容複製到這個目前的裝置內容。

BOOL BitBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    DWORD dwRop);

參數

x
指定目的矩形左上角的邏輯 X 座標。

y
指定目的矩形左上角的邏輯 Y 座標。

nWidth
指定目的矩形和來源位圖的寬度(以邏輯單位為單位)。

nHeight
指定目的矩形和來源位圖的高度(以邏輯單位為單位)。

pSrcDC
CDC物件的指標,識別要從中複製位圖的裝置內容。 如果dwRop指定不包含來源的點陣作業,則必須NULL是 。

xSrc
指定來源點陣圖左上角的邏輯 X 座標。

ySrc
指定來源位圖左上角的邏輯 Y 座標。

dwRop
指定待執行的點陣作業。 點陣作業程式代碼會定義 GDI 如何結合輸出作業中的色彩,這些色彩牽涉到目前的筆刷、可能的來源位圖和目的地位圖。 如需點陣作業程式代碼dwRop的清單及其描述,請參閱 BitBlt Windows SDK 中的

如需點陣作業程序代碼的完整清單,請參閱 關於 Windows SDK 中的點陣作業代碼

傳回值

如果函式成功則為非零,否則為 0。

備註

應用程式可以對齊位元組界限上的視窗或工作區,以確保 BitBlt 作業發生在位元組對齊的矩形上。 (當您註冊視窗類別時, CS_BYTEALIGNWINDOW 請設定 或 CS_BYTEALIGNCLIENT 旗標。

BitBlt 位元組對齊矩形上的作業比 BitBlt 未對齊位元組的矩形上的作業快得多。 如果您想要為自己的裝置內容指定類別樣式,例如位元組對齊,您必須註冊窗口類別,而不是依賴 Microsoft Foundation 類別為您執行。 使用全域函式 AfxRegisterWndClass

GDI 會 nWidth 使用目的地裝置內容,並使用來源裝置內容來轉換 和 nHeight一次。 如果產生的範圍不相符,GDI 會視需要使用 Windows StretchBlt 函式來壓縮或延展來源位圖。

如果目的地、來源和模式位圖沒有相同的色彩格式,函 BitBlt 式會轉換來源和模式位圖以符合目的地。 目的地點陣圖的前景和背景色彩會用於轉換中。

當函 BitBlt 式將單色位圖轉換成色彩時,會將白色位 (1) 設定為背景色彩,並將黑色位 (0) 設定為前景色彩。 會使用目的地裝置內容的前景和背景色彩。 若要將色彩轉換成單色, BitBlt 請將符合背景色彩的像素設為白色,並將所有其他像素設為黑色。 BitBlt 會使用色彩裝置內容的前景和背景色彩,從色彩轉換成單色。

並非所有裝置內容都支援 BitBlt。 若要檢查指定的裝置內容是否支援 BitBlt,請使用 GetDeviceCaps 成員函式並指定 RASTERCAPS 索引。

範例

請參閱 CDC::CreateCompatibleDC 的範例。

CDC::CDC

建構 CDC 物件。

CDC();

CDC::Chord

繪製和弦(封閉圖,由橢圓形和線段的交集所系結)。

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);

參數

x1
指定和弦周框左上角的 X 座標(以邏輯單位為單位)。

y1
指定和弦周框左上角的 Y 座標(以邏輯單位為單位)。

x2
指定和弦周框右下角的 X 座標(以邏輯單位為單位)。

y2
指定和弦周框右下角的 Y 座標(以邏輯單位為單位)。

x3
指定點的 X 座標,該點定義和弦的起點(以邏輯單位為單位)。

y3
指定點的 Y 座標,該點會定義和弦的起點(以邏輯單位為單位)。

x4
指定定義和弦端點的點 X 座標(以邏輯單位為單位)。

y4
指定定義和弦端點的點 Y 座標(以邏輯單位為單位)。

lpRect
指定周框(以邏輯單位為單位)。 您可以傳遞 此參數的 LPRECTCRect 物件。

ptStart
指定定義合弦起點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在合弦上。 您可以傳遞這個參數的結構 POINTCPoint 物件。

*ptEnd*
指定定義和弦結束點之點的 X 和 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在合弦上。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

x1y1和 ( x2y2) 參數分別指定周框的左上角和右下角,而橢圓形是和弦的一部分。 ( x3y3、 和 ( x4y4) 參數會指定與橢圓形交集的線條端點。 和弦是使用選取的畫筆繪製,並使用選取的筆刷填滿。

函式所繪製的 Chord 圖表會延伸至 ,但不包含右座標和底部座標。 這表示圖形的高度是 y2 - y1 ,而圖表的寬度為。x2 - x1

範例

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

關閉路徑中的開啟圖。

BOOL CloseFigure();

傳回值

如果函式成功則為非零,否則為 0。

備註

函式會藉由從目前位置繪製線條到圖的第一個點來關閉此圖(通常是最近呼叫 MoveTo 成員函式所指定的點),並使用線條聯結樣式連接線條。 如果使用成員函式而非 CloseFigure關閉LineTo圖表,則會使用結束上限來建立角落,而不是聯結。 CloseFigure 只有在裝置內容中有開啟的路徑括弧時,才應該呼叫 。

除非使用這個函式明確關閉路徑中的圖表,否則路徑中的圖表是開啟的。 (即使目前點和圖表的起點相同,圖表也可以開啟。在開始新圖形之後 CloseFigure ,任何新增至路徑的線條或曲線。

CDC::CreateCompatibleDC

建立與所 pDC指定裝置相容的記憶體裝置內容。

BOOL CreateCompatibleDC(CDC* pDC);

參數

pDC
裝置內容的指標。 如果 pDCNULL,函式會建立與系統顯示相容的記憶體裝置內容。

傳回值

如果函式成功則為非零,否則為 0。

備註

記憶體裝置內容是代表顯示介面的記憶體區塊。 它可用來準備記憶體中的映像,再將它們複製到相容裝置的實際裝置介面。

建立記憶體裝置內容時,GDI 會自動為其選取一個 1 到 1 個單色股票點陣圖。 只有在已建立位圖並選取該內容時,GDI 輸出函式才能與記憶體裝置內容搭配使用。

此函式只能用於為支援點陣作業的裝置建立相容的裝置內容。 CDC::BitBlt如需裝置內容之間位區塊傳輸的相關信息,請參閱成員函式。 若要判斷裝置內容是否支援點陣作業,請參閱 RC_BITBLT 成員函 CDC::GetDeviceCaps式 中的點陣功能。

範例

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

建立指定裝置的裝置內容。

BOOL CreateDC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

參數

lpszDriverName
指向以 Null 結尾的字串,指定設備驅動器的檔名(不含擴展名),例如 “EPSON”。 您也可以傳遞 CString 此參數的物件。

lpszDeviceName
指向以 Null 結尾的字串,指定要支援之特定裝置的名稱(例如 “EPSON FX-80” )。 lpszDeviceName如果模組支援多個裝置,則會使用 參數。 您也可以傳遞 CString 此參數的物件。

lpszOutput
指向以 Null 結尾的字串,指定實體輸出媒體的檔案或裝置名稱(檔案或輸出埠)。 您也可以傳遞 CString 此參數的物件。

lpInitData
指向結構, DEVMODE 其中包含裝置驅動程式的裝置特定初始化數據。 Windows DocumentProperties 函式會擷取填入指定裝置的這個結構。 lpInitData如果設備驅動器是使用使用者透過 控制台 所指定的預設初始化,則必須是 參數NULL

傳回值

如果函式成功則為非零,否則為 0。

備註

如果使用 結構 PRINT.HDEVMODE 則需要頭檔。

裝置名稱遵循下列慣例:建議使用結尾冒號(:),但為選擇性。 Windows 會移除終止冒號,讓結尾為冒號的裝置名稱對應到與沒有冒號之相同名稱的相同埠。 驅動程式和埠名稱不得包含前置或尾端空格。 GDI 輸出函式無法與資訊內容搭配使用。

CDC::CreateIC

建立指定裝置的信息內容。

BOOL CreateIC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

參數

lpszDriverName
指向以 Null 結尾的字串,指定設備驅動器的檔名(不含擴展名),例如 “EPSON”。 您可以傳遞 CString 此參數的物件。

lpszDeviceName
指向以 Null 結尾的字串,指定要支援之特定裝置的名稱(例如 “EPSON FX-80” )。 lpszDeviceName如果模組支援多個裝置,則會使用 參數。 您可以傳遞 CString 此參數的物件。

lpszOutput
指向以 Null 結尾的字串,指定實體輸出媒體(檔案或埠)的檔案或裝置名稱。 您可以傳遞 CString 此參數的物件。

lpInitData
指向裝置驅動程式的裝置特定初始化數據。 lpInitData如果設備驅動器是使用使用者透過 控制台 所指定的預設初始化,則必須是 參數NULL。 如需裝置特定初始化的數據格式,請參閱 CreateDC

傳回值

如果成功則為非零;否則為 0。

備註

信息內容可讓您快速取得裝置的相關信息,而不需建立裝置內容。

裝置名稱遵循下列慣例:建議使用結尾冒號(:),但為選擇性。 Windows 會移除終止冒號,讓結尾為冒號的裝置名稱對應到與沒有冒號之相同名稱的相同埠。 驅動程式和埠名稱不得包含前置或尾端空格。 GDI 輸出函式無法與資訊內容搭配使用。

CDC::DeleteDC

一般而言,請勿呼叫此函式;解構函式會為您執行此動作。

BOOL DeleteDC();

傳回值

如果函式成功完成,則為非零;否則為 0。

備註

成員DeleteDC函式會刪除目前 CDC 物件中與相關聯的 m_hDC Windows 裝置內容。 如果這個 CDC 物件是指定裝置的最後一個使用中裝置內容,則會釋放裝置所使用的所有記憶體和系統資源。

如果物件已選擇至裝置內容,則應用程式不應該呼叫 DeleteDC 。 必須先從裝置內容中選取物件,再將其刪除。

應用程式不得刪除透過呼叫 CWnd::GetDC取得句柄的裝置內容。 相反地,它必須呼叫 CWnd::ReleaseDC 以釋放裝置內容。 CClientDC提供和 CWindowDC 類別來包裝這項功能。

DeleteDC 式通常用來刪除使用 CreateDCCreateICCreateCompatibleDC建立的裝置內容。

範例

請參閱 CPrintDialog::GetPrinterDC 的範例。

CDC::DeleteTempMap

由閑置時間處理程式自動呼叫,會刪除 所CWinApp建立FromHandle的任何暫存CDC物件,DeleteTempMap但不會終結暫時與CDC對象相關聯的裝置內容句柄。hDC

static void PASCAL DeleteTempMap();

CDC::Detach

呼叫此函式以中斷連結m_hDC物件(輸出裝置內容),並將和 m_hAttribDC 設定m_hDCNULLCDC

HDC Detach();

傳回值

Windows 裝置內容。

CDC::DPtoHIMETRIC

當您提供 HIMETRIC 大小給 OLE 時,請使用此函式,將像素 HIMETRIC轉換成 。

void DPtoHIMETRIC(LPSIZE lpSize) const;

參數

lpSize
指向 SIZE 結構或CSize物件。

備註

如果裝置內容對象的對應模式是 MM_LOENGLISH、、 MM_HIENGLISHMM_LOMETRICMM_HIMETRIC,則轉換是根據實體英吋中的像素數目。 如果對應模式是其他非限制模式之一(例如 MM_TEXT),則轉換會以邏輯英吋中的像素數目為基礎。

CDC::DPtoLP

將裝置單位轉換成邏輯單元。

void DPtoLP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;

參數

lpPoints
指向結構或CPoint物件的陣列POINT

nCount
陣列中的點數。

lpRect
指向 RECT 結構或 CRect 物件。 此參數用於將一個矩形從裝置點轉換成邏輯點的簡單案例。

lpSize
指向 SIZE 結構或 CSize 物件。

備註

函式會將每個點或大小維度的座標從裝置座標系統對應到 GDI 的邏輯座標系統。 轉換取決於裝置視窗和檢視區的目前對應模式和原點和範圍設定。

CDC::Draw3dRect

呼叫這個成員函式以繪製立體矩形。

void Draw3dRect(
    LPCRECT lpRect,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

void Draw3dRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

參數

lpRect
指定周框(以邏輯單位為單位)。 您可以傳遞這個參數之 RECT 結構的指標或 CRect 物件。

clrTopLeft
指定三維矩形上側和左側的色彩。

clrBottomRight
指定三維矩形下側和右側的色彩。

x
指定三維矩形左上角的邏輯 X 座標。

y
指定三維矩形左上角的邏輯 Y 座標。

cx
指定三維矩形的寬度。

cy
指定三維矩形的高度。

備註

矩形會以 所 clrTopLeft 指定色彩的上側和左側繪製,而右下側則以 所指定色彩繪製 clrBottomRight

範例

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

重複呼叫這個成員函式以重繪拖曳矩形。

void DrawDragRect(
    LPCRECT lpRect,
    SIZE size,
    LPCRECT lpRectLast,
    SIZE sizeLast,
    CBrush* pBrush = NULL,
    CBrush* pBrushLast = NULL);

參數

lpRect
RECT指向結構或CRect物件,指定矩形的邏輯座標,在此案例中,重新繪製矩形的結束位置。

size
指定從外框線左上角到內框線左上角(也就是框線粗細)的位移。

lpRectLast
RECT指向結構或CRect物件,指定矩形位置的邏輯座標,在此案例中,會重新繪製矩形的原始位置。

sizeLast
指定從外部框線左上角到內部框線左上角(也就是框線粗細)的位移。要重新繪製的原始矩形。

pBrush
筆刷物件的指標。 設定為 NULL 以使用預設半色調筆刷。

pBrushLast
最後一個筆刷物件的指標。 設定為 NULL 以使用預設半色調筆刷。

備註

當您取樣滑鼠位置時,請在迴圈中呼叫它,以提供視覺回饋。 當您呼叫 DrawDragRect時,會清除先前的矩形,並繪製新的矩形。 例如,當使用者將矩形拖曳到畫面上時,將會清除原始矩形, DrawDragRect 並在新位置重新繪製新的矩形。 根據預設,使用半色調筆刷來繪製矩形, DrawDragRect 以消除閃爍,並建立順暢移動矩形的外觀。

第一次呼叫 DrawDragRect時, lpRectLast 參數應該是 NULL

CDC::DrawEdge

呼叫這個成員函式,以繪製指定類型和樣式之矩形的邊緣。

BOOL DrawEdge(
    LPRECT lpRect,
    UINT nEdge,
    UINT nFlags);

參數

lpRect
結構的指標 RECT ,其中包含矩形的邏輯座標。

nEdge
指定要繪製的內邊緣和外邊緣類型。 此參數必須是一個內部框線旗標和一個外框線旗標的組合。 如需參數類型的數據表,請參閱 DrawEdge Windows SDK。

nFlags
指定要繪製之框線類型的旗標。 如需參數值的數據表,請參閱 DrawEdge Windows SDK。 對於對角線, BF_RECT 旗標會指定由矩形參數系結之向量的終點。

傳回值

如果成功則為非零;否則為 0。

CDC::DrawEscape

存取無法透過圖形裝置介面 (GDI) 直接取得之視訊顯示器的繪圖功能。

int DrawEscape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData);

參數

nEscape
指定要執行的逸出函式。

nInputSize
指定 參數所指向 lpszInputData 的數據位元組數目。

lpszInputData
指向指定逸出所需的輸入結構。

傳回值

指定函式的結果。 如果成功,則大於零,但只 QUERYESCSUPPORT 檢查實作的繪製逸出除外;如果未實作逸出則為零;如果發生錯誤則小於零。

備註

當應用程式呼叫 DrawEscape時,所 nInputSize 識別的數據 lpszInputData 會直接傳遞至指定的顯示驅動程式。

CDC::DrawFocusRect

在樣式中繪製矩形,以指出矩形具有焦點。

void DrawFocusRect(LPCRECT lpRect);

參數

lpRect
指向 RECT 結構或 CRect 物件,指定要繪製之矩形的邏輯座標。

備註

因為這是布爾 XOR^) 函式,因此第二次呼叫此函式時,相同的矩形會從顯示器中移除矩形。 無法捲動此函式所繪製的矩形。 若要捲動包含此函式所繪製矩形的區域,請先呼叫 DrawFocusRect 以從顯示中移除矩形,然後捲動區域,然後再次呼叫 DrawFocusRect 以在新位置繪製矩形。

警告

DrawFocusRect 僅適用於 MM_TEXT 模式。 在其他模式中,此函式不會正確繪製焦點矩形,但不會傳回錯誤值。

CDC::DrawFrameControl

呼叫這個成員函式,以繪製指定類型和樣式的框架控件。

BOOL DrawFrameControl(
    LPRECT lpRect,
    UINT nType,
    UINT nState);

參數

lpRect
結構的指標 RECT ,其中包含矩形的邏輯座標。

nType
指定要繪製的框架控制件類型。 uType如需此參數可能值的清單,請參閱 Windows SDK 中的 參數DrawFrameControl

nState
指定框架控制件的初始狀態。 可以是 Windows SDK 中 DrawFrameControl 參數uState描述的一或多個值。 nState使用 值DFCS_ADJUSTRECT來調整周框,以排除按鈕周圍的邊緣。

傳回值

如果成功則為非零;否則為 0。

備註

在數種情況下, nState 取決於 nType 參數。 下列清單顯示四 nType 個值與 nState之間的關聯性:

  • DFC_BUTTON

    • DFCS_BUTTON3STATE 三狀態按鈕

    • DFCS_BUTTONCHECK 複選框

    • DFCS_BUTTONPUSH 按鈕

    • DFCS_BUTTONRADIO 單選按鈕

    • DFCS_BUTTONRADIOIMAGE 單選按鈕的影像(非quare 需要影像)

    • DFCS_BUTTONRADIOMASK 單選按鈕的遮罩(非誇大需要遮罩)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE 關閉按鈕

    • DFCS_CAPTIONHELP [說明] 按鈕

    • DFCS_CAPTIONMAX 最大化按鈕

    • DFCS_CAPTIONMIN 最小化按鈕

    • DFCS_CAPTIONRESTORE 還原按鈕

  • DFC_MENU

    • DFCS_MENUARROW 子功能表箭號

    • DFCS_MENUBULLET 子彈

    • DFCS_MENUCHECK 複選標記

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX 下拉式方塊滾動條

    • DFCS_SCROLLDOWN 滾動條的向下箭號

    • DFCS_SCROLLLEFT 滾動條的向左箭號

    • DFCS_SCROLLRIGHT 滾動條的向右箭號

    • DFCS_SCROLLSIZEGRIP 視窗右下角的大小底框

    • DFCS_SCROLLUP 滾動條向上箭號

範例

此程式代碼會在視窗右下角繪製大小夾。 它適用於 OnPaint 對話框的處理程式,該對話框沒有樣式,而且通常不包含其他控制項(例如狀態列),可能會提供大小夾。

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

在目前物件所 CDC 代表的裝置上繪製圖示。

BOOL DrawIcon(
    int x,
    int y,
    HICON hIcon);

BOOL DrawIcon(
    POINT point,
    HICON hIcon);

參數

x
指定圖示左上角的邏輯 X 座標。

y
指定圖示左上角的邏輯 Y 座標。

hIcon
識別要繪製之圖示的句柄。

point
指定圖示左上角的邏輯 x 和 Y 座標。 您可以傳遞 POINT 這個參數的結構或 CPoint 物件。

傳回值

如果函式成功完成,則為非零;否則為 0。

備註

函式會將圖示的左上角放在 和 yx指定的位置。 位置受限於裝置內容的目前對應模式。

先前必須使用、 CWinApp::LoadStandardIconCWinApp::LoadOEMIcon函式來載入CWinApp::LoadIcon圖示資源。 MM_TEXT使用此函式之前,必須先選取對應模式。

範例

請參閱 CWnd::IsIconic 的範例。

CDC::DrawState

呼叫這個成員函式以顯示影像,並套用視覺效果來表示狀態,例如已停用或默認狀態。

注意

針對以外的DSS_NORMAL所有nFlag狀態,影像會在套用視覺效果之前轉換成單色。

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);

參數

pt
指定影像的位置。

size
指定影像的大小。

hBitmap
點陣圖的句柄。

nFlags
指定影像類型和狀態的旗標。 如需可能的 nFlags 類型和狀態,請參閱 DrawState Windows SDK。

hBrush
筆刷的句柄。

pBitmap
CBitmap 物件的指標。

pBrush
CBrush 物件的指標。

hIcon
圖示的句柄。

lpszText
文字的指標。

bPrefixText
可能包含快捷鍵助記鍵的文字。 參數 lData 會指定字串的位址,而 nTextLen 參數會指定長度。 如果 nTextLen 為 0,則會假設字串為 Null 終止。

nTextLen
lpszText指向之文字字串的長度。 如果 nTextLen 為 0,則會假設字串為 Null 終止。

lpDrawProc
用來轉譯影像之回調函式的指標。 如果中的 nFlags 影像類型為 DST_COMPLEX,則需要此參數。 這是選擇性的,如果影像類型為 DST_TEXT,則為 NULL 。 若為所有其他影像類型,則會忽略此參數。 如需回呼函式的詳細資訊,請參閱 DrawStateProc Windows SDK 中的 函式。

lData
指定映像的相關信息。 此參數的意義取決於影像類型。

傳回值

如果成功則為非零;否則為 0。

CDC::DrawText

呼叫這個成員函式,以格式化指定矩形中的文字。 若要指定更多格式設定選項, 請使用 CDC::DrawTextEx

virtual int DrawText(
    LPCTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat);

int DrawText(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat);

參數

lpszString
指向要繪製的字串。 如果 nCount 為 -1,字串必須以 Null 結束。

nCount
指定字串中的字元數目。 如果 nCount 為 -1,則會 lpszString 假設為 Null 終止字串的長指標,並 DrawText 自動計算字元計數。

lpRect
指向 RECT 結構或 CRect 物件,其中包含要格式化文字的矩形(以邏輯座標表示)。

str
CString物件,包含要繪製的指定字元。

nFormat
指定格式化文字的方法。 它可以是 Windows SDK 中 DrawText 參數uFormat所描述之值的任何組合。 (結合使用位 OR 運算符):

注意

某些 uFormat 旗標組合可能會導致修改傳遞的字串。 搭配 DT_END_ELLIPSIS 使用 DT_MODIFYSTRINGDT_PATH_ELLIPSIS 可能會導致字串遭到修改,導致覆寫中的CString判斷提示。 、 DT_EXTERNALLEADINGDT_INTERNALDT_NOCLIP、 和 DT_NOPREFIX 的值DT_CALCRECT不能與 值搭配DT_TABSTOP使用。

傳回值

如果函式成功,則為文字的高度。

備註

它會藉由將索引標籤展開為適當的空格、將文字對齊指定矩形的左、右或中央,以及將文字分成符合指定矩形內的行,來格式化文字。 格式設定的類型是由 nFormat指定。

此成員函式會使用裝置內容選取的字型、文字色彩和背景色彩來繪製文字。 DT_NOCLIP除非使用格式,DrawText否則會裁剪文字,讓文字不會出現在指定的矩形外。 除非指定格式, DT_SINGLELINE 否則所有格式都會假設有多行。

如果選取的字型對指定的矩形太大, DrawText 成員函式不會嘗試取代較小的字型。

DT_CALCRECT如果指定旗標,所lpRect指定的矩形將會更新,以反映繪製文字所需的寬度和高度。

TA_UPDATECP如果已設定文字對齊旗標(請參閱 CDC::SetTextAlign),DrawText則會顯示從目前位置開始的文字,而不是在指定矩形的左邊。 DrawText 設定旗標時 TA_UPDATECP 不會換行文字(也就是說, DT_WORDBREAK 旗標不會有任何作用)。

文字色彩可由 設定 CDC::SetTextColor

CDC::DrawTextEx

格式化指定矩形中的文字。

virtual int DrawTextEx(
    LPTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

int DrawTextEx(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

參數

lpszString
指向要繪製的字串。 如果 nCount 為 -1,字串必須以 Null 終止。

nCount
指定字串中的字元數目。 如果 nCount 為 -1,則會 lpszString 假設為 Null 終止字串的長指標,並 DrawText 自動計算字元計數。

lpRect
指向 RECT 結構或 CRect 物件,其中包含要格式化文字的矩形(以邏輯座標表示)。

str
CString物件,包含要繪製的指定字元。

nFormat
指定格式化文字的方法。 它可以是 Windows SDK 中 DrawText 參數uFormat所描述之值的任何組合。 (使用位 結合OR 運算子):

注意

某些 uFormat 旗標組合可能會導致修改傳遞的字串。 搭配 DT_END_ELLIPSIS 使用 DT_MODIFYSTRINGDT_PATH_ELLIPSIS 可能會導致字串遭到修改,導致覆寫中的CString判斷提示。 、 DT_EXTERNALLEADINGDT_INTERNALDT_NOCLIP、 和 DT_NOPREFIX 的值DT_CALCRECT不能與 值搭配DT_TABSTOP使用。

lpDTParams
DRAWTEXTPARAMS指定更多格式選項之結構的指標。 這個參數可以是 NULL

備註

它會藉由將索引標籤展開為適當的空格、將文字對齊指定矩形的左、右或中央,以及將文字分成符合指定矩形內的行,來格式化文字。 格式的類型是由 nFormatlpDTParams指定。 如需詳細資訊,請參閱 CDC::DrawText Windows SDK 中的 和 DrawTextEx

文字色彩可由 設定 CDC::SetTextColor

CDC::Ellipse

繪製橢圓形。

BOOL Ellipse(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Ellipse(LPCRECT lpRect);

參數

x1
指定橢圓形周框左上角的邏輯 X 座標。

y1
指定橢圓形周框左上角的邏輯 Y 座標。

x2
指定橢圓形周框右下角的邏輯 X 座標。

y2
指定橢圓形周框右下角的邏輯 Y 座標。

lpRect
指定橢圓形的周框。 您也可以傳遞 CRect 此參數的物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

橢圓形的中心是 、、 x2y1y2lpRectx1指定周框的中心。 橢圓形會以目前的畫筆繪製,其內部會填滿目前的筆刷。

此函式所繪製的圖會延伸至右座標和底部座標,但不包含 。 這表示圖形的高度是 y2 - y1 ,而圖表的寬度為。x2 - x1

如果周框的寬度或高度為 0,則不會繪製省略號。

CDC::EndDoc

結束呼叫成員函式所啟動的 StartDoc 列印作業。

int EndDoc();

傳回值

如果函式成功,則大於或等於 0,如果發生錯誤,則為負值。

備註

此成員函式會 ENDDOC 取代印表機逸出,而且應該在完成成功的列印作業之後立即呼叫。

如果應用程式發生列印錯誤或已取消的列印作業,則不得嘗試使用 EndDocAbortDoc來終止作業。 GDI 會在傳回錯誤值之前自動終止作業。

此函式不應該在元檔內使用。

範例

請參閱 CDC::StartDoc 的範例。

CDC::EndPage

通知裝置應用程式已完成寫入頁面。

int EndPage();

傳回值

如果函式成功,則大於或等於 0,如果發生錯誤,則為負值。

備註

此成員函式通常用來指示設備驅動器前進到新頁面。

此成員函式會 NEWFRAME 取代印表機逸出。 不同於 NEWFRAME,列印頁面之後一律會呼叫此函式。

範例

請參閱 CDC::StartDoc 的範例。

CDC::EndPath

關閉路徑括弧,並將括弧所定義的路徑選取到裝置內容中。

BOOL EndPath();

傳回值

如果函式成功則為非零,否則為 0。

範例

請參閱 CDC::BeginPath 的範例。

CDC::EnumObjects

列舉裝置內容中可用的畫筆和筆刷。

int EnumObjects(
    int nObjectType,
    int (CALLBACK* lpfn)(
    LPVOID,
    LPARAM),
    LPARAM lpData);

參數

nObjectType
指定物件類型。 它可以有 值 OBJ_BRUSHOBJ_PEN

lpfn
這是應用程式提供的回呼函式的程序實例位址。 請參閱下方的一節。

lpData
指向應用程式提供的數據。 數據會連同對象資訊一起傳遞至回調函式。

傳回值

指定回呼函式傳回的最後一個值。 其意義是用戶定義的。

備註

針對指定類型的每個物件,您傳遞的回呼函式會使用該對象的資訊來呼叫。 系統會呼叫回呼函式,直到沒有其他物件或回呼函式傳回 0 為止。

Microsoft Visual C++ 的新功能可讓您使用一般函式作為傳遞至 EnumObjects的函式。 傳遞至 EnumObjects 的位址是使用 和 Pascal 呼叫慣例匯出 EXPORT 之函式的指標。 在保護模式應用程式中,您不需要使用 Windows 函式來建立此函式,或在搭配 FreeProcInstance Windows MakeProcInstance 函式使用之後釋放函式。

您也不需要在應用程式模組定義檔案的 語句中 EXPORTS 匯出函式名稱。 您可以改用 函 EXPORT 式修飾詞,如同 in

int CALLBACK EXPORT AFunction (LPSTRLPSTR):

會導致編譯程式發出適當的導出記錄,以依名稱匯出而不產生別名。 這適用於大部分的需求。 對於某些特殊案例,例如藉由序數或將導出的別名匯出函式,您仍然需要在模組定義檔案中使用 EXPORTS 語句。

若要編譯Microsoft Foundation 程式,您通常會使用 /GA/GEs 編譯程序選項。 編譯 /Gw 程式選項不會與 Microsoft Foundation 類別搭配使用。 (如果您使用 Windows 函 MakeProcInstance式,您必須明確地將傳回的函式指標從 FARPROC 轉換成此 API 所需的類型。回呼註冊介面現在的類型安全(您必須傳入指向特定回呼正確函式類型的函式指標)。

此外,所有回呼函式都必須在返回 Windows 之前先設陷Microsoft基礎例外狀況,因為無法跨回呼界限擲回例外狀況。 如需例外狀況的詳細資訊,請參閱例外狀況一文

範例

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

對於 Win32 程式設計而言,這個成員函式實際上已過時。

virtual int Escape(
    int nEscape,
    int nCount,
    LPCSTR lpszInData,
    LPVOID lpOutData);

int Escape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData,
    int nOutputSize,
    LPSTR lpszOutputData);

參數

nEscape
指定要執行的逸出函式。

如需逸出函式的完整清單,請參閱 Escape Windows SDK 中的 。

nCount
指定所 lpszInData指向的數據位元組數目。

lpszInData
指向這個逸出所需的輸入數據結構。

lpOutData
指向要從這個逸出接收輸出的結構。 如果未傳回任何資料,則 lpOutData 參數為 NULL

nInputSize
指定 參數所指向 lpszInputData 的數據位元組數目。

lpszInputData
指向指定逸出所需的輸入結構。

nOutputSize
指定 參數所指向 lpszOutputData 的數據位元組數目。

lpszOutputData
指向從這個逸出接收輸出的結構。 如果未傳回任何資料,則此參數應該是 NULL

傳回值

如果函式成功,則會傳回正值,但逸出除外 QUERYESCSUPPORT ,只檢查實作。 如果未實作逸出,則會傳回零。 如果發生錯誤,則會傳回負值。 以下是常見的錯誤值:

  • SP_ERROR 一般錯誤。

  • SP_OUTOFDISK 目前沒有足夠的磁碟空間可供多任務緩衝處理使用,且不會再使用任何空間。

  • SP_OUTOFMEMORY 沒有足夠的記憶體可用於多任務緩衝處理。

  • SP_USERABORT 使用者透過列印管理員結束作業。

備註

在原始印表機逸出中,只有 QUERYESCSUPPORT Win32 應用程式支援。 所有其他印表機逸出已過時,且僅支援與16位應用程式的相容性。

針對 Win32 程式設計, CDC 現在提供六個成員函式來取代其對應的印表機逸出:

此外, CDC::GetDeviceCaps 支援取代其他印表機逸出的 Win32 索引。 如需詳細資訊,請參閱 GetDeviceCaps Windows SDK。

此成員函式可讓應用程式存取無法透過 GDI 直接取得之特定裝置的設施。

如果您的應用程式使用預先定義的逸出值,請使用第一個版本。 如果您的應用程式定義私人逸出值,請使用第二個版本。 如需第二個版本的詳細資訊,請參閱 ExtEscape Windows SDK。

CDC::ExcludeClipRect

建立新的裁剪區域,其中包含現有的裁剪區域減去指定的矩形。

int ExcludeClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int ExcludeClipRect(LPCRECT lpRect);

參數

x1
指定矩形左上角的邏輯 X 座標。

y1
指定矩形左上角的邏輯 Y 座標。

x2
指定矩形右下角的邏輯 X 座標。

y2
指定矩形右下角的邏輯 Y 座標。

lpRect
指定矩形。 也可以是 CRect 物件。

傳回值

指定新的裁剪區域類型。 它可以是下列任何一個值:

  • COMPLEXREGION 區域有重疊的框線。

  • ERROR 未建立任何區域。

  • NULLREGION 區域是空的。

  • SIMPLEREGION 區域沒有重疊的框線。

備註

矩形的寬度,由的絕對值 x2 - x1指定,不得超過 32,767 單位。 此限制也適用於矩形的高度。

CDC::ExcludeUpdateRgn

防止在視窗無效區域內繪製,方法是從與 CDC 對象相關聯的裁剪區域排除視窗中的更新區域。

int ExcludeUpdateRgn(CWnd* pWnd);

參數

pWnd
指向正在更新其視窗的窗口物件。

傳回值

排除區域的類型。 它可以是下列任何一個值:

  • COMPLEXREGION 區域有重疊的框線。

  • ERROR 未建立任何區域。

  • NULLREGION 區域是空的。

  • SIMPLEREGION 區域沒有重疊的框線。

CDC::ExtFloodFill

以目前的筆刷填滿顯示介面的區域。

BOOL ExtFloodFill(
    int x,
    int y,
    COLORREF crColor,
    UINT nFillType);

參數

x
指定填滿開始之點的邏輯 X 座標。

y
指定填滿開始之點的邏輯 Y 座標。

crColor
指定要填滿之界限或區域的色彩。 的 crColor 解譯取決於的值 nFillType

nFillType
指定要執行的洪水填滿類型。 它必須是下列其中一個值:

  • FLOODFILLBORDER 填滿區域會以 所 crColor指定的色彩限定。 此樣式與 所 FloodFill執行的填滿相同。

  • FLOODFILLSURFACE 填滿區域是由 指定的 crColor色彩所定義。 只要遇到色彩,填滿就會向外向外。 此樣式適用於填滿多色界限的區域。

傳回值

如果函式成功,則為非零;否則,如果無法完成填滿,則為 0;如果指定的點具有指定的 crColor 界限色彩,則為 ( FLOODFILLBORDER 如果已要求),如果指定的點沒有指定的色彩 crColorFLOODFILLSURFACE 則為 ,如果點位於裁剪區域之外,則為 0。

備註

此成員函式所提供的彈性比 FloodFill 您可以在 中 nFillType指定填滿類型還要多。

如果 nFillType 設定為 FLOODFILLBORDER,則會假設區域完全由 所指定的色彩系 crColor結。 函式會從 和 y 指定的x點開始,並填入色彩界限的所有方向。

如果 nFillType 設定為 FLOODFILLSURFACE,則函式會從 指定的 x 點開始,並在 y 所有方向繼續,填滿包含 所 crColor指定色彩的所有相鄰區域。

只有支援點陣顯示技術支援 ExtFloodFill的記憶體裝置內容和裝置。 如需詳細資訊,請參閱 GetDeviceCaps 成員函式。

CDC::ExtTextOut

呼叫此成員函式,以使用目前選取的字型在矩形區域內寫入字元字串。

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);

參數

x
指定指定字串中第一個字元之字元儲存格的邏輯 x 座標。

y
指定指定字串中第一個字元之字元儲存格頂端的邏輯 y 座標。

nOptions
指定矩形類型。 此參數可以是下列兩個值之一或兩個值:

  • ETO_CLIPPED 指定文字裁剪到矩形。

  • ETO_OPAQUE 指定目前的背景色彩填滿矩形。 (您可以使用 和 GetBkColor 成員函式來設定及查詢目前的背景色彩SetBkColor

lpRect
指向 RECT 決定矩形維度的結構。 這個參數可以是 NULL。 您也可以傳遞 CRect 此參數的物件。

lpszString
指向要繪製的指定字元字串。 您也可以傳遞 CString 此參數的物件。

nCount
指定字串中的字元數。

lpDxWidths
指向值陣列,這個陣列表示相鄰字元儲存格的原點之間的距離。 例如, lpDxWidths[ i] 邏輯儲存元會分隔字元儲存格 i 和字元儲存格 i + 1 的原點。 如果 lpDxWidthsNULLExtTextOut 則會使用字元之間的預設間距。

str
CString物件,包含要繪製的指定字元。

傳回值

如果函式成功則為非零,否則為 0。

備註

矩形區域可以是不透明的(填滿目前的背景色彩),而且可以是裁剪區域。

如果 nOptions 為 0 且 lpRectNULL,則函式會將文字寫入裝置內容,而不使用矩形區域。 根據預設,函式不會使用或更新目前的位置。 如果應用程式在呼叫 ExtTextOut時需要更新目前的位置,則應用程式可以呼叫成員函式SetTextAlignCDC並將 nFlags 設定為 TA_UPDATECP。 設定此旗標時,Windows 會在x後續呼叫 ExtTextOut 時忽略 和 y ,並改用目前的位置。 當應用程式使用 TA_UPDATECP 來更新目前的位置時, ExtTextOut 請將目前位置設定為前一行文字的結尾,或設定為所指向 lpDxWidths陣列的最後一個專案所指定的位置,無論哪一個更大。

CDC::FillPath

關閉目前路徑中任何開啟的數位,並使用目前的筆刷和多邊形填滿模式填滿路徑的內部。

BOOL FillPath();

傳回值

如果函式成功則為非零,否則為 0。

備註

填滿內部之後,路徑會從裝置內容捨棄。

CDC::FillRect

呼叫這個成員函式,以使用指定的筆刷填滿指定的矩形。

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

參數

lpRect
指向 RECT 結構,其中包含要填滿之矩形的邏輯座標。 您也可以傳遞 CRect 此參數的物件。

pBrush
識別用來填滿矩形的筆刷。

備註

函式會填滿完整的矩形,包括左框線和上框線,但不會填滿右框線和下框線。

筆刷必須使用 Windows 函式所擷取的成員函CreateHatchBrush式、 CreatePatternBrushCreateSolidBrush來建立CBrushGetStockObject

填滿指定的矩形時, FillRect 不包含矩形的右側和下側。 無論目前的對應模式為何,GDI 都會填滿矩形,但不包含右欄和下列。 FillRect會比較指定矩形的topbottomleft、 和 right 成員的值。 如果 bottom 小於或等於 top,或 right 如果 小於或等於 left,則不會繪製矩形。

FillRect 與 類似 CDC::FillSolidRect;不過, FillRect 採用筆刷,因此可用來以純色、立體色彩、有形筆刷或圖樣填滿矩形。 FillSolidRect 只會使用純色(以 COLORREF 參數表示)。 FillRect 通常比 慢 FillSolidRect

CDC::FillRgn

以 指定的筆刷填滿 所pRgnpBrush指定的區域。

BOOL FillRgn(
    CRgn* pRgn,
    CBrush* pBrush);

參數

pRgn
要填滿之區域的指標。 指定區域的座標會以邏輯單位指定。

pBrush
識別要用來填滿區域的筆刷。

傳回值

如果函式成功則為非零,否則為 0。

備註

筆刷必須使用 成員函式 CreateHatchBrushCreatePatternBrushCreateSolidBrush或 擷取來GetStockObject建立CBrush

範例

請參閱 CRgn::CreateRoundRectRgn 的範例。

CDC::FillSolidRect

呼叫這個成員函式,以指定的純色填滿指定的矩形。

void FillSolidRect(
    LPCRECT lpRect,
    COLORREF clr);

void FillSolidRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clr);

參數

lpRect
指定周框(以邏輯單位為單位)。 您可以將指標傳遞至 RECT 資料結構或 CRect 此參數的物件。

clr 指定要用來填滿矩形的色彩。

x
指定矩形左上角的邏輯 X 座標。

y
指定目的矩形左上角的邏輯 Y 座標。

cx
指定矩形的寬度。

cy
指定矩形的高度。

備註

FillSolidRect 與 非常類似 CDC::FillRect;不過, FillSolidRect 只使用純色(以 COLORREF 參數表示),而 FillRect 採用筆刷,因此可用來以純色、斜色、影線筆刷或圖樣填滿矩形。 FillSolidRect 通常比 快 FillRect

注意

當您呼叫 FillSolidRect時,先前使用 SetBkColor所設定的背景色彩會設定為 所指示的 clr色彩。

CDC::FlattenPath

將路徑中選取的任何曲線轉換成目前的裝置內容,並將每個曲線轉換成一連串的線條。

BOOL FlattenPath();

傳回值

如果函式成功則為非零,否則為 0。

CDC::FloodFill

以目前的筆刷填滿顯示介面的區域。

BOOL FloodFill(
    int x,
    int y,
    COLORREF crColor);

參數

x
指定填滿開始之點的邏輯 X 座標。

y
指定填滿開始之點的邏輯 Y 座標。

crColor
指定界限的色彩。

傳回值

如果函式成功,則為非零;否則,如果無法完成填滿,則傳回 0,指定的點具有 所 crColor指定的界限色彩,或該點位於裁剪區域之外。

備註

區域假設系結為 所 crColor指定。 函 FloodFill 式會從 所 x 指定的點開始,並繼續 y 向色彩界限的所有方向。

只有支援點陣顯示技術的記憶體裝置內容和裝置支持 FloodFill 成員函式。 如需功能的相關信息 RC_BITBLT ,請參閱 GetDeviceCaps 成員函式。

ExtFloodFill 式提供類似的功能,但更大的彈性。

CDC::FrameRect

在 指定的 lpRect矩形周圍繪製框線。

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

參數

lpRect
RECT指向結構或CRect物件,其中包含矩形左上角和右下角的邏輯座標。 您也可以傳遞 CRect 此參數的物件。

pBrush
識別要用來框架矩形的筆刷。

備註

函式會使用指定的筆刷來繪製框線。 框線的寬度和高度一律為1個邏輯單位。

如果矩形的 bottom 座標小於或等於 top,或 right 如果 小於或等於 left,則不會繪製矩形。

所繪製 FrameRect 的框線與成員函式使用相同的座標繪製 Rectangle 的框線位置(如果使用 Rectangle 1個邏輯單元寬的畫筆)。 矩形的內部不會填 FrameRect滿 。

CDC::FrameRgn

使用 所pBrush指定的pRgn筆刷,在區域周圍繪製框線。

BOOL FrameRgn(
    CRgn* pRgn,
    CBrush* pBrush,
    int nWidth,
    int nHeight);

參數

pRgn
指向 CRgn 對象,識別要包含在框線中的區域。 指定區域的座標會以邏輯單位指定。

pBrush
指向 CBrush 對象,識別要用來繪製框線的筆刷。

nWidth
指定裝置單位中垂直筆刷筆劃中框線的寬度。

nHeight
指定裝置單位中水平筆刷筆劃中框線的高度。

傳回值

如果函式成功則為非零,否則為 0。

範例

請參閱 CRgn::CombineRgn 的範例。

CDC::FromHandle

當指定裝置內容的句柄時,傳回物件的指標 CDC

static CDC* PASCAL FromHandle(HDC hDC);

參數

hDC
包含 Windows 裝置內容的句柄。

傳回值

指標可能是暫時的,不應儲存在立即使用之外。

備註

CDC如果物件未附加至句柄,則會建立並附加暫存CDC物件。

範例

請參閱 CPrintDialog::GetPrinterDC 的範例。

CDC::GetArcDirection

傳回裝置內容的目前弧線方向。

int GetArcDirection() const;

傳回值

如果成功,則指定目前的弧線方向。 以下是有效的傳回值:

  • AD_COUNTERCLOCKWISE 反時針繪製的弧線和矩形。

  • AD_CLOCKWISE Arcs 和矩形會順時針繪製。

如果發生錯誤,傳回值為零。

備註

弧形和矩形函式會使用弧形方向。

CDC::GetAspectRatioFilter

擷取目前外觀比例篩選的設定。

CSize GetAspectRatioFilter() const;

傳回值

CSize物件,表示目前外觀比例篩選所使用的外觀比例。

備註

外觀比例是由裝置的圖元寬度和高度所構成的比例。 裝置外觀比例的相關信息用於字型的建立、選取和顯示。 Windows 提供特殊的篩選,外觀比例篩選,從所有可用的字型中選取專為特定外觀比例設計的字型。 篩選會使用成員函式所 SetMapperFlags 指定的外觀比例。

CDC::GetBkColor

傳回目前的背景色彩。

COLORREF GetBkColor() const;

傳回值

RGB 色彩值。

備註

如果背景模式為 OPAQUE,則系統會使用背景色彩來填滿樣式線條的間距、筆刷中影線之間的間距,以及字元單元格中的背景。 在色彩與單色裝置內容之間轉換點陣圖時,系統也會使用背景色彩。

CDC::GetBkMode

傳回背景模式。

int GetBkMode() const;

傳回值

目前的背景模式,可以是 OPAQUETRANSPARENT

備註

背景模式會定義系統在繪製文字、影線筆刷或任何不是實線的畫筆樣式之前,移除繪圖介面上現有的背景色彩。

CDC::GetBoundsRect

傳回指定裝置內容的目前累積周框。

UINT GetBoundsRect(
    LPRECT lpRectBounds,
    UINT flags);

參數

lpRectBounds
指向將接收目前周框的緩衝區。 矩形會以邏輯座標傳回。

flags
指定周框在傳回之後是否要清除。 此參數應為零,或設定為下列值:

  • DCB_RESET 強制在傳回周框之後清除周框。

傳回值

如果函式成功,指定周框的目前狀態。 它可以是下列值的組合:

  • DCB_ACCUMULATE 周框累加發生。

  • DCB_RESET 周框是空的。

  • DCB_SET 周框不是空的。

  • DCB_ENABLE 周框累積已開啟。

  • DCB_DISABLE 周框累積已關閉。

CDC::GetBrushOrg

擷取目前為裝置內容選取之筆刷的原點(以裝置單位為單位)。

CPoint GetBrushOrg() const;

傳回值

筆刷的目前原點(以裝置單位為單位)作為 CPoint 物件。

備註

初始筆刷原點位於工作區的 (0,0)。 傳回值會指定相對於桌面視窗原點的裝置單位。

CDC::GetCharacterPlacement

擷取字元字串的各種信息類型。

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;

參數

lpString
要處理的字元字串指標。

nCount
指定字串的長度。 針對 ANSI 版本,它是 BYTE 計數,而 Unicode 函式則為 WORD 計數。 如需詳細資訊,請參閱GetCharacterPlacement

nMaxExtent
指定處理字串的最大範圍(以邏輯單位為單位)。 如果已處理,則會忽略超出此範圍的字元。 任何必要排序或字元陣列的計算僅適用於包含的字元。 只有在參數中dwFlags指定值時GCP_MAXEXTENT,才會使用此參數。 當函式處理輸入字串時,只有當總範圍尚未超過最大值時,才會將每個字元及其範圍新增至輸出、範圍和其他陣列。 達到限制之後,處理將會停止。

lpResults
GCP_Results接收函式結果之結構的指標。

dwFlags
指定如何將字串處理至所需的陣列。 此參數可以是主題區段中GetCharacterPlacement所列dwFlags的一或多個值。

str
要處理之物件的指標 CString

傳回值

如果函式成功,傳回值會是邏輯單元中字串的寬度和高度。

如果此函式失敗,則傳回值為零。

備註

此成員函式會模擬 函式的功能 GetCharacterPlacement,如 Windows SDK 中所述。

CDC::GetCharABCWidths

從目前的 TrueType 字型擷取指定範圍中連續字元的寬度。

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABC lpabc) const;

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABCFLOAT lpABCF) const;

參數

nFirstChar
從傳回字元寬度的目前字型中,指定字元範圍中的第一個字元。

nLastChar
從傳回字元寬度的目前字型中,指定字元範圍中的最後一個字元。

lpabc
指向函式傳回時接收字元寬度的結構陣列 ABC 。 此陣列至少必須包含和參數所nFirstCharnLastChar指定範圍內的字元數ABC

lpABCF
指向具有結構陣列 ABCFLOAT 的應用程式提供的緩衝區,以在函式傳回時接收字元寬度。 此函式傳回的寬度為 IEEE 浮點格式。

傳回值

如果函式成功則為非零,否則為 0。

備註

寬度會以邏輯單元傳回。 此函式只會使用 TrueType 字型來成功。

TrueType 轉譯器會在選取特定點大小之後,提供 “ABC” 字元間距。 “A” 間距是在放置圖像之前新增至目前位置的距離。 “B” 間距是圖像黑色部分的寬度。 “C” 間距會新增至目前的位置,以考慮字元右邊的空格符。 總進階寬度是由 A + B + C 提供。

GetCharABCWidths當成員函式擷取字元的負 “A” 或 “C” 寬度時,該字元會包含下行或懸空。

若要將 ABC 寬度轉換成字型設計單位,應用程式應該建立其高度(如 結構成員所指定lfHeight)等於結構成員NEWTEXTMETRICntmSizeEM儲存的值的字LOGFONT型。 (可以呼叫 EnumFontFamilies Windows 函式來擷取成員的值ntmSizeEM

默認字元的 ABC 寬度會用於目前選取字型範圍以外的字元。

若要擷取非 TrueType 字型中的字元寬度,應用程式應該使用 GetCharWidth Windows 函式。

CDC::GetCharABCWidthsI

從目前的 TrueType 字型擷取指定範圍中連續圖像索引的寬度,以邏輯單位為單位。

BOOL GetCharABCWidthsI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPABC lpabc) const;

參數

giFirst
指定目前字型中連續圖像索引群組中的第一個圖像索引。 只有在 參數為 NULLpgi,才會使用此參數。

cgi
指定圖像索引的數目。

pgi
包含字元索引之陣列的指標。 如果值為 NULL,則會 giFirst 改用 參數。 參數 cgi 會指定這個陣列中的字元索引數目。

lpabc
接收字元寬度之結構的陣列 ABC 指標。 此陣列至少必須包含 參數所cgi指定的字元索引數量至少一樣多ABC的結構。

傳回值

如果函式成功則為非零,否則為 0。

備註

此成員函式會模擬 函式的功能 GetCharABCWidthsI,如 Windows SDK 中所述。

CDC::GetCharWidth

使用 m_hAttribDC輸入設備內容,從目前字型擷取連續字元群組中個別字元的寬度。

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    float* lpFloatBuffer) const;

參數

nFirstChar
指定目前字型中連續字元群組中的第一個字元。

nLastChar
指定目前字型中連續字元群組中的最後一個字元。

lpBuffer
指向緩衝區,這個緩衝區將接收目前字型中連續字元群組的寬度值。

lpFloatBuffer
指向接收字元寬度的緩衝區。 傳回的寬度為 32 位 IEEE 浮點格式。 (寬度會沿著字元的底線來測量。

傳回值

如果函式成功則為非零,否則為 0。

備註

例如,如果 nFirstChar 識別字母 'a' 並 nLastChar 識別字母 'z',則函式會擷取所有小寫字元的寬度。

函式會將值儲存在 所指向的 lpBuffer緩衝區中。 此緩衝區必須夠大,才能容納所有寬度。 也就是說,指定的範例中必須至少有26個專案。

如果連續字元群組中的字元不存在於特定字型中,則會指派預設字元的寬度值。

CDC::GetCharWidthI

從目前字型擷取指定範圍中連續圖像索引的寬度,以邏輯座標表示。

BOOL GetCharWidthI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPINT lpBuffer) const;

參數

giFirst
指定目前字型中連續圖像索引群組中的第一個圖像索引。 只有在 參數為 NULLpgi,才會使用此參數。

cgi
指定圖像索引的數目。

pgi
包含字元索引之陣列的指標。 如果值為 NULL,則會 giFirst 改用 參數。 參數 cgi 會指定這個陣列中的字元索引數目。

lpBuffer
接收寬度之緩衝區的指標。

傳回值

如果函式成功則為非零,否則為 0。

備註

此成員函式會模擬 函式的功能 GetCharWidthI,如 Windows SDK 中所述。

CDC::GetClipBox

擷取目前裁剪界限周圍最緊密周框的維度。

virtual int GetClipBox(LPRECT lpRect) const;

參數

lpRect
指向 RECT 要接收矩形維度的結構或 CRect 物件。

傳回值

裁剪區域的類型。 它可以是下列任何一個值:

  • COMPLEXREGION 裁剪區域有重疊的框線。

  • ERROR 裝置內容無效。

  • NULLREGION 裁剪區域是空的。

  • SIMPLEREGION 裁剪區域沒有重疊的框線。

備註

維度會複製到 所指向的 lpRect緩衝區。

CDC::GetColorAdjustment

擷取裝置內容的色彩調整值。

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

參數

lpColorAdjust
COLORADJUSTMENT指向要接收色彩調整值的數據結構。

傳回值

如果函式成功則為非零,否則為 0。

CDC::GetCurrentBitmap

傳回目前選取 CBitmap 物件的指標。

CBitmap* GetCurrentBitmap() const;

傳回值

如果成功,則 CBitmap 為物件的指標,否則 NULL為 。

備註

此成員函式可能會傳回暫存物件。

CDC::GetCurrentBrush

傳回目前選取 CBrush 物件的指標。

CBrush* GetCurrentBrush() const;

傳回值

如果成功,則 CBrush 為物件的指標,否則 NULL為 。

備註

此成員函式可能會傳回暫存物件。

CDC::GetCurrentFont

傳回目前選取 CFont 物件的指標。

CFont* GetCurrentFont() const;

傳回值

如果成功,則 CFont 為物件的指標,否則 NULL為 。

備註

此成員函式可能會傳回暫存物件。

CDC::GetCurrentPalette

傳回目前選取 CPalette 物件的指標。

CPalette* GetCurrentPalette() const;

傳回值

如果成功,則 CPalette 為物件的指標,否則 NULL為 。

備註

此成員函式可能會傳回暫存物件。

CDC::GetCurrentPen

傳回目前選取 CPen 物件的指標。

CPen* GetCurrentPen() const;

傳回值

如果成功,則 CPen 為物件的指標,否則 NULL為 。

備註

此成員函式可能會傳回暫存物件。

CDC::GetCurrentPosition

擷取目前的位置 (在邏輯座標中)。

CPoint GetCurrentPosition() const;

傳回值

目前的位置做為 CPoint 物件。

備註

您可以使用成員函式來設定 MoveTo 目前的位置。

CDC::GetDCBrushColor

擷取目前的筆刷色彩。

COLORREF GetDCBrushColor() const;

傳回值

如果函式成功,傳回值就是 COLORREF 目前筆刷色彩的值。

如果函式失敗,傳回值為 CLR_INVALID

備註

此成員函式會模擬 函式的功能 GetDCBrushColor,如 Windows SDK 中所述。

CDC::GetDCPenColor

擷取目前的畫筆顏色。

COLORREF GetDCPenColor() const;

傳回值

如果函式成功,則傳回值是 COLORREF 目前畫筆色彩的值。

如果函式失敗,傳回值為 CLR_INVALID

備註

此成員函式會利用 Win32 函 GetDCPenColor式 ,如 Windows SDK 中所述。

CDC::GetDeviceCaps

擷取有關顯示裝置的各種裝置特定資訊。

int GetDeviceCaps(int nIndex) const;

參數

nIndex
指定要傳回的資訊類型。 如需值清單,請參閱 GetDeviceCaps Windows SDK 中的 。

傳回值

如果函式成功,則為所要求功能的值。

範例

請參閱 CPrintDialog::GetDefaults 的範例。

CDC::GetFontData

從可調整的字型檔案擷取字型計量資訊。

DWORD GetFontData(
    DWORD dwTable,
    DWORD dwOffset,
    LPVOID lpData,
    DWORD cbData) const;

參數

dwTable
指定要傳回的計量數據表名稱。 此參數可以是 Microsoft Corporation 所發佈 TrueType 字型檔案規格中記載的其中一個計量數據表。 如果此參數為 0,則會從字型檔案的開頭擷取資訊。

dwOffset
指定要開始擷取信息的數據表開頭的位移。 如果此參數為 0,則會從 參數所 dwTable 指定的數據表開頭擷取資訊。 如果此值大於或等於數據表的大小, GetFontData 則傳回 0。

lpData
指向將接收字型信息的緩衝區。 如果此值為 NULL,此函式會傳回參數中所 dwTable 指定字型數據所需的緩衝區大小。

cbData
指定要擷取之資訊的長度,以位元組為單位。 如果此參數為 0, GetFontData 則傳回 參數中指定的 dwTable 資料大小。

傳回值

如果函式成功,則指定所指向 lpData 之緩衝區中傳回的位元組數目,否則為 -1。

備註

要擷取的資訊是藉由指定字型檔案的位移和要傳回的信息長度來識別。

應用程式有時 GetFontData 可以使用成員函式,將 TrueType 字型與檔案儲存。 若要這樣做,應用程式會判斷是否可以內嵌字型,然後擷取整個字型檔案,並針對 dwTabledwOffsetcbData 參數指定 0。

應用程式可以藉由檢查 otmfsType 結構的成員 OUTLINETEXTMETRIC 來判斷字型是否可以內嵌。 如果已設定的 otmfsType 位 1,則不允許字型進行內嵌。 如果位 1 是清楚的,則可以內嵌字型。 如果已設定位 2,則內嵌是唯讀的。

如果應用程式嘗試使用此函式來擷取非 TrueType 字型的資訊, GetFontData 則成員函式會傳回 -1。

CDC::GetFontLanguageInfo

傳回指定之顯示內容目前選取之字型的相關信息。

DWORD GetFontLanguageInfo() const;

傳回值

傳回值會識別目前選取字型的特性。 如需可能值的完整清單,請參閱 GetFontLanguageInfo

備註

此成員函式會模擬 函式的功能 GetFontLanguageInfo,如 Windows SDK 中所述。

CDC::GetGlyphOutline

擷取目前字型中大綱字元的外框曲線或位圖。

DWORD GetGlyphOutline(
    UINT nChar,
    UINT nFormat,
    LPGLYPHMETRICS lpgm,
    DWORD cbBuffer,
    LPVOID lpBuffer,
    const MAT2* lpmat2) const;

參數

nChar
指定要傳回資訊的字元。

nFormat
指定函式傳回資訊的格式。 它可以是下列其中一個值,或 0:

意義
GGO_BITMAP 傳回圖像點陣圖。 當函式傳回時,所 lpBuffer 指向的緩衝區會包含一個每圖元 1 位位陣陣圖,其數據列從雙字界限開始。
GGO_NATIVE 使用裝置單位,傳迴轉譯器原生格式中的曲線數據點。 指定這個值時,會忽略 中 lpmat2 指定的任何轉換。

當值為 nFormat 0 時,函式會填入結構, GLYPHMETRICS 但不會傳回圖像大綱數據。

lpgm
指向 GLYPHMETRICS 描述字元儲存格中字元位置的結構。

cbBuffer
指定函式複製大綱字元相關信息的緩衝區大小。 如果此值為 0,而且 nFormat 參數為 GGO_BITMAPGGO_NATIVE 值,則函式會傳回所需的緩衝區大小。

lpBuffer
指向函式複製大綱字元相關信息的緩衝區。 如果nFormat指定GGO_NATIVE值,則會以 和 TTPOLYCURVE 結構的形式TTPOLYGONHEADER複製資訊。 如果這個值是 NULLnFormatGGO_BITMAPGGO_NATIVE 值,則函式會傳回緩衝區的必要大小。

lpmat2
指向 MAT2 包含字元轉換矩陣的結構。 即使為 指定了 值,GGO_NATIVE這個參數也不能NULLnFormat

傳回值

如果 cbBuffer 為 0 或 lpBuffer NULL為 ,則擷取資訊所需的緩衝區大小,以位元組為單位。 否則,如果函式成功,則為正值,如果發生錯誤則為 -1。

備註

應用程式可以在 指向的結構中指定 2-by-2 轉換矩陣,以點陣圖格式輪替擷取的 lpmat2字元。

圖像外框會以一系列輪廓傳回。 每個輪廓是由 TTPOLYGONHEADER 結構所定義,後面接著需要多少 TTPOLYCURVE 結構來描述它。 所有點都會傳回為 POINTFX 結構,並代表絕對位置,而不是相對移動。 結構成員TTPOLYGONHEADER所提供的pfxStart起點是輪廓的大綱開始的起點。 TTPOLYCURVE後續的結構可以是聚合線記錄或曲線記錄。 聚合線記錄是一系列點;在點之間繪製的線條描述字元的外框。 曲線記錄代表 TrueType 所使用的二次曲線(也就是二次曲線 b 曲線)。

CDC::GetGraphicsMode

擷取指定裝置內容的目前圖形模式。

int GetGraphicsMode() const;

傳回值

傳回成功時的目前圖形模式。 如需這個方法可以傳回的值清單,請參閱 GetGraphicsMode

在失敗時傳回 0。

若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

這個方法會包裝 Windows GDI 函式 GetGraphicsMode

CDC::GetHalftoneBrush

呼叫此成員函式以擷取半色調筆刷。

static CBrush* PASCAL GetHalftoneBrush();

傳回值

如果成功, CBrush 則為物件的指標,否則 NULL為 。

備註

半色調筆刷會顯示圖元,這些圖元會替代前景和背景色彩,以建立任一圖案。 下圖顯示半色調筆刷所建立的任一模式範例:

顯示如何撰寫任一筆筆劃的圖表。

此圖顯示黑色的背景色彩和黃色的前景色彩如何透過相互交替黑色和黃色圖元來組合成圖樣,以建立一個兩邊的畫筆筆劃。

CDC::GetKerningPairs

擷取目前在指定裝置內容中選取之字型的字元斜線配對。

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

參數

nPairs
指定所lpkrnpair指向的結構KERNINGPAIR數目。 函式不會複製比 所 nPairs指定的更多字距字組。

lpkrnpair
指向函式傳回時接收 kerning 配對的結構數位 KERNINGPAIR 。 這個陣列至少必須包含 所 nPairs指定的結構。 如果此參數為 NULL,則函式會傳回字型的字型字型的字距字組總數。

傳回值

如果函式成功,指定擷取的字型中擷取的 Kerning 字組數目或字型中的字距字組總數。 如果函式失敗,或字型沒有字型的斜線字組,則會傳回零。

CDC::GetLayout

呼叫此成員函式,以判斷裝置內容的文字和圖形配置,例如印表機或元檔。

DWORD GetLayout() const;

傳回值

如果成功,則目前裝置內容的版面配置旗標。 否則為 GDI_ERROR。 如您需要延伸的錯誤資訊, 請呼叫 GetLastError。 如需版面設定旗標的清單,請參閱 CDC::SetLayout

備註

默認版面配置由左至右。

CDC::GetMapMode

擷取目前的對應模式。

int GetMapMode() const;

傳回值

對應模式。

備註

如需對應模式的描述,請參閱 SetMapMode 成員函式。

注意

如果您呼叫 SetLayout 將 DC 變更為右至左設定, SetLayout 則會自動將對應模式變更為 MM_ISOTROPIC。 因此,對的任何後續呼叫 GetMapMode 都會傳回 MM_ISOTROPIC

CDC::GetMiterLimit

傳回裝置內容的錯位限制。

float GetMiterLimit() const;

傳回值

如果函式成功則為非零,否則為 0。

備註

繪製具有Miter聯結的幾何線條時,會使用Miter限制。

CDC::GetNearestColor

傳回最符合指定邏輯色彩的純色。

COLORREF GetNearestColor(COLORREF crColor) const;

參數

crColor
指定要比對的色彩。

傳回值

RGB(紅色、綠色、藍色)色彩值,定義最接近 crColor 裝置可表示值的純色。

備註

指定的裝置必須能夠表示此色彩。

CDC::GetOutlineTextMetrics

擷取 TrueType 字型的計量資訊。

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

參數

lpotm
指向結構的陣列 OUTLINETEXTMETRIC 。 如果此參數為 NULL,此函式會傳回所擷取計量數據所需的緩衝區大小。

cbData
指定傳回資訊之緩衝區的大小,以位元組為單位。

lpotm
指向 OUTLINETEXTMETRIC 結構。 如果此參數為 NULL,此函式會傳回所擷取計量資訊所需的緩衝區大小。

傳回值

如果函式成功則為非零,否則為 0。

備註

結構 OUTLINETEXTMETRIC 包含 TrueType 格式所提供的大部分字型計量資訊,包括 TEXTMETRIC 結構。 結構的最後四個成員 OUTLINETEXTMETRIC 是字串的指標。 除了其他成員所需的空間之外,應用程式也應該為這些字串配置空間。 由於沒有字串大小的系統強制限制,配置記憶體的最簡單方法是在第一次呼叫GetOutlineTextMetrics函式時指定NULL lpotm 來擷取所需的大小。

CDC::GetOutputCharWidth

使用輸出裝置內容 , m_hDC並從目前字型擷取連續字元群組中的個別字元寬度。

BOOL GetOutputCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

參數

nFirstChar
指定目前字型中連續字元群組中的第一個字元。

nLastChar
指定目前字型中連續字元群組中的最後一個字元。

lpBuffer
指向緩衝區,這個緩衝區將接收目前字型中連續字元群組的寬度值。

傳回值

如果函式成功則為非零,否則為 0。

備註

例如,如果 nFirstChar 識別字母 'a' 並 nLastChar 識別字母 'z',則函式會擷取所有小寫字元的寬度。

函式會將值儲存在 所指向的 lpBuffer緩衝區中。 此緩衝區必須夠大,才能容納所有寬度;也就是說,指定的範例中必須至少有26個專案。

如果連續字元群組中的字元不存在於特定字型中,則會指派預設字元的寬度值。

CDC::GetOutputTabbedTextExtent

呼叫這個成員函式,以使用 m_hDC來計算字元字串的寬度和高度,輸出裝置內容。

CSize GetOutputTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetOutputTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

參數

lpszString
指向要測量的字元字串。 您也可以傳遞 CString 此參數的物件。

nCount
指定lpszString指向之字串的長度。

nTabPositions
指定所指向 lpnTabStopPositions數位中的製表位位置數目。

lpnTabStopPositions
指向包含邏輯單元中製表位位置的整數陣列。 製表位必須依遞增順序排序;最小的 x 值應該是陣列中的第一個專案。 不允許返回索引標籤。

str
CString物件,包含要測量的指定字元。

傳回值

物件中 CSize 字串的維度(以邏輯單位為單位)。

備註

如果字串包含一或多個製表符,則字串的寬度是以 所 lpnTabStopPositions指定的製表位為基礎。 函式會使用目前選取的字型來計算字串的維度。

目前的裁剪區域不會位移函式傳 GetOutputTabbedTextExtent 回的寬度和高度。

由於某些裝置不會將字元放在一般單元格陣列中(也就是它們會縮小字元),因此字串中字元的範圍總和可能不等於字串的範圍。

如果 nTabPositions 為 0 且 lpnTabStopPositionsNULL,索引標籤會展開為八個平均字元寬度。 如果 nTabPositions 為 1,則製表位會以數位中第一個值所指定的距離分隔點 lpnTabStopPositions 。 如果 lpnTabStopPositions 指向多個單一值,則會針對數位中的每個值設定製表位,最多為 所 nTabPositions指定的數位。

CDC::GetOutputTextExtent

呼叫此成員函式以使用輸出裝置內容, m_hDC並使用目前的字型計算文字行的寬度和高度。

CSize GetOutputTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetOutputTextExtent(const CString& str) const;

參數

lpszString
指向字元字串。 您也可以傳遞 CString 此參數的物件。

nCount
指定lpszString指向之字串的長度。

str
CString物件,包含要測量的指定字元。

傳回值

對象中 CSize 傳回之字串的維度(以邏輯單位為單位)。

備註

目前的裁剪區域不會影響 所 GetOutputTextExtent傳回的寬度和高度。

由於某些裝置不會將字元放在一般單元格陣列中(也就是它們進行 Kerning),因此字串中字元的範圍總和可能不等於字串的範圍。

CDC::GetOutputTextMetrics

使用 m_hDC擷取目前字型的計量,輸出裝置內容。

BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;

參數

lpMetrics
指向 TEXTMETRIC 接收計量的結構。

傳回值

如果函式成功則為非零,否則為 0。

CDC::GetPath

擷取定義線條端點的座標,以及選取到裝置內容之路徑中找到的曲線控制點。

int GetPath(
    LPPOINT lpPoints,
    LPBYTE lpTypes,
    int nCount) const;

參數

lpPoints
指向放置線條端點和曲線控制點的數據結構或CPoint物件陣列POINT

lpTypes
指向放置頂點類型的位元組陣列。 值為下列其中一項:

  • PT_MOVETO 指定中的 lpPoints 對應點會啟動脫離的圖形。

  • PT_LINETO 指定中的上一個點和對應的點 lpPoints 是線條的端點。

  • PT_BEZIERTO 指定中的 lpPoints 對應點是 Bzier 曲線的控制點或結束點。

PT_BEZIERTO 類型一律會在三組中發生。 路徑正前面的點會定義 Bzier 曲線的起點。 前兩 PT_BEZIERTO 個點是控制點,第三 PT_BEZIERTO 個點是終點(如果硬式編碼)。

PT_LINETOPT_BEZIERTO 型別可以結合下列旗標(使用位運算符 OR)來指出對應的點是圖中的最後一個點,而且該圖應該關閉:

  • PT_CLOSEFIGURE 指定在繪製對應的線條或曲線之後,圖表會自動關閉。 從線條或曲線端點繪製線條到對應到最後 PT_MOVETO一個 的點,以關閉此圖。

nCount
指定可能放在陣列中的數據lpPoints結構總數POINT。 這個值必須與陣列中 lpTypes 可能放置的位元元組數目相同。

傳回值

nCount如果參數為非零,則列舉的點數。 如果 nCount 為 0,則路徑中的點總數(且 GetPath 不會寫入緩衝區)。 如果 nCount 為非零,且小於路徑中的點數,則傳回值為 -1。

備註

裝置內容必須包含關閉的路徑。 路徑的點會以邏輯座標傳回。 點會儲存在裝置座標的路徑中,因此 GetPath 會使用目前的轉換反向,將點從裝置座標變更為邏輯座標。 FlattenPath成員函式可以在 之前GetPath呼叫,將路徑中的所有曲線轉換成折線段。

範例

請參閱 CDC::BeginPath 的範例。

CDC::GetPixel

擷取 和 所y*指定x點圖元的 RGB 色彩值。

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

參數

x
指定要檢查之點的邏輯 X 座標。

y
指定要檢查之點的邏輯 Y 座標。

point
指定要檢查之點的邏輯 x 和 Y 座標。

傳回值

針對任一版本的函式,指定點色彩的 RGB 色彩值。 如果座標未在裁剪區域中指定點,則為 -1。

備註

點必須位於裁剪區域中。 如果點不在裁剪區域中,函式不會有任何作用,並傳回 -1。

並非所有的裝置皆支援 GetPixel 函式。 如需詳細資訊,請參閱 RC_BITBLT 成員函式底下的 GetDeviceCaps 點陣功能。

成員 GetPixel 函式有兩種形式。 第一個採用兩個座標值:第二個 POINT 接受 結構或 CPoint 物件。

CDC::GetPolyFillMode

擷取目前的多邊形填滿模式。

int GetPolyFillMode() const;

傳回值

如果函式成功,則為目前的多邊形填滿模式或 ALTERNATE WINDING

備註

SetPolyFillMode如需多邊形填滿模式的描述,請參閱成員函式。

CDC::GetROP2

擷取目前的繪圖模式。

int GetROP2() const;

傳回值

繪圖模式。 如需繪圖模式值的清單,請參閱 SetROP2 成員函式。

備註

繪圖模式會指定畫筆和填滿物件內部的色彩如何與顯示介面上的色彩結合。

CDC::GetSafeHdc

呼叫此成員函式以取得 m_hDC輸出裝置內容。

HDC GetSafeHdc() const;

傳回值

裝置內容句柄。

備註

此成員函式也適用於 Null 指標。

CDC::GetStretchBltMode

擷取目前的點陣圖延展模式。

int GetStretchBltMode() const;

傳回值

如果函式成功,傳回值會指定目前的點陣圖延展模式, STRETCH_ANDSCANSSTRETCH_DELETESCANSSTRETCH_ORSCANS

備註

位圖延展模式會定義如何從成員函式延 StretchBlt 展或壓縮的點陣圖中移除資訊。

STRETCH_ANDSCANSSTRETCH_ORSCANS 模式通常用來在單色位圖中保留前景圖元。 模式 STRETCH_DELETESCANS 通常用來保留色彩點陣圖中的色彩。

CDC::GetTabbedTextExtent

呼叫這個成員函式,以使用 m_hAttribDC屬性裝置內容來計算字元字串的寬度和高度。

CSize GetTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

參數

lpszString
指向字元字串。 您也可以傳遞 CString 此參數的物件。

nCount
指定lpszString指向之字串的長度。

nTabPositions
指定所指向 lpnTabStopPositions數位中的製表位位置數目。

lpnTabStopPositions
指向包含邏輯單元中製表位位置的整數陣列。 製表位必須依遞增順序排序;最小的 x 值應該是陣列中的第一個專案。 不允許返回索引標籤。

str
CString物件,包含要繪製的指定字元。

傳回值

物件中 CSize 字串的維度(以邏輯單位為單位)。

備註

如果字串包含一或多個製表符,則字串的寬度是以 所 lpnTabStopPositions指定的製表位為基礎。 函式會使用目前選取的字型來計算字串的維度。

目前的裁剪區域不會位移函式傳 GetTabbedTextExtent 回的寬度和高度。

由於某些裝置不會將字元放在一般單元格陣列中(也就是它們會縮小字元),因此字串中字元的範圍總和可能不等於字串的範圍。

如果 nTabPositions 為 0 且 lpnTabStopPositionsNULL,索引標籤會展開為平均字元寬度的八倍。 如果 nTabPositions 為 1,則製表位會以數位中第一個值所指定的距離分隔點 lpnTabStopPositions 。 如果 lpnTabStopPositions 指向多個單一值,則會針對數位中的每個值設定製表位,最多為 所 nTabPositions指定的數位。

CDC::GetTextAlign

擷取裝置內容之文字對齊旗標的狀態。

UINT GetTextAlign() const;

傳回值

文字對齊旗標的狀態。 傳回值是下列其中一或多個值:

  • TA_BASELINE 指定 X 軸的對齊方式,以及周框內所選字型的基準。

  • TA_BOTTOM 指定 X 軸和周框底部的對齊方式。

  • TA_CENTER 指定Y軸和周框中央的對齊方式。

  • TA_LEFT 指定Y軸和周框左側的對齊方式。

  • TA_NOUPDATECP 指定目前的位置未更新。

  • TA_RIGHT 指定Y軸和周框右側的對齊方式。

  • TA_TOP 指定 X 軸和周框頂端的對齊方式。

  • TA_UPDATECP 指定更新目前的位置。

備註

文字對齊旗標會決定 和 ExtTextOut 成員函式如何TextOut對齊與字串起點相關的文字字串。 文字對齊旗標不一定是單一位旗標,而且可能等於0。 若要測試是否已設定旗標,應用程式應遵循下列步驟:

  1. 將位 OR|) 運算子套用至 旗標及其相關旗標,分組如下:

    • TA_LEFTTA_CENTERTA_RIGHT

    • TA_BASELINETA_BOTTOMTA_TOP

    • TA_NOUPDATECPTA_UPDATECP

  2. 將C++位 AND&) 運算子套用至結果和 的 GetTextAlign傳回值。

  3. 測試此結果和旗標是否相等。

CDC::GetTextCharacterExtra

擷取字元間距數量目前的設定。

int GetTextCharacterExtra() const;

傳回值

字元間距的數量。

備註

GDI 會在將文字行寫入裝置內容時,將這個間距新增至每個字元,包括斷字元。

字元間距的預設值為 0。

CDC::GetTextColor

擷取目前的文字色彩。

COLORREF GetTextColor() const;

傳回值

目前的文字色彩做為 RGB 色彩值。

備註

文字色彩是使用 GDI 文字輸出成員函 TextOut式、 ExtTextOutTabbedTextOut所繪製字元的前景色彩。

CDC::GetTextExtent

呼叫這個成員函式,以使用目前的字型來計算文字行的寬度和高度,以判斷維度。

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

參數

lpszString
指向字元字串。 您也可以傳遞 CString 此參數的物件。

nCount
指定字串中的字元數。

str
CString物件,包含指定的字元。

傳回值

物件中 CSize 字串的維度(以邏輯單位為單位)。

備註

從 擷取 m_hAttribDC資訊,也就是屬性裝置內容。

根據預設, GetTextExtent 假設其擷取維度的文字會沿著水平線設定(也就是逸出器為0)。 如果您建立指定非零逸出項的字型,則必須明確地轉換文字的角度,以取得字串的維度。

目前的裁剪區域不會影響 所 GetTextExtent傳回的寬度和高度。

由於某些裝置不會將字元放在一般單元格陣列中(也就是它們進行 Kerning),因此字串中字元的範圍總和可能不等於字串的範圍。

CDC::GetTextExtentExPointI

擷取指定字串中的字元數,此字串會符合指定的空格,並以每個字元的文字範圍填滿陣列。

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

參數

pgiIn
要擷取範圍之圖像索引數位的指標。

cgi
指定所指向 pgiIn陣列中的字元數。

nMaxExtent
指定格式化字串的最大允許寬度,以邏輯單位表示。

lpnFit
整數的指標,接收將符合 所 nMaxExtent指定之空格的最大字元數計數。 當為NULLlpnFitnMaxExtent會忽略 。

alpDx
接收部分圖像範圍之整數陣列的指標。 陣列中的每個元素都會提供字元索引數位開頭與符合 所 nMaxExtent指定空間之其中一個圖像之間的距離,以邏輯單位表示。 雖然此陣列至少應該有 所指定的 cgi字元索引數目,但函式會以範圍填滿陣列,只包含所指定的 lpnFit字元索引數目。 如果 lpnDxNULL,則函式不會計算部分字串寬度。

lpSize
SIZE結構指標,這個結構會以邏輯單位接收字元索引數位的維度。 這個值不能是 NULL

傳回值

如果函式成功則為非零,否則為 0。

備註

此成員函式會模擬 函式的功能 GetTextExtentExPointI,如 Windows SDK 中所述。

CDC::GetTextExtentPointI

擷取指定字元索引數位的寬度和高度。

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

參數

pgiIn
要擷取範圍之圖像索引數位的指標。

cgi
指定所指向 pgiIn陣列中的字元數。

lpSize
SIZE結構指標,這個結構會以邏輯單位接收字元索引數位的維度。 這個值不能是 NULL

傳回值

如果函式成功則為非零,否則為 0。

備註

此成員函式會模擬 函式的功能 GetTextExtentPointI,如 Windows SDK 中所述。

CDC::GetTextFace

呼叫這個成員函式,將目前字型的字樣名稱複製到緩衝區。

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

參數

nCount
指定緩衝區的大小(以位元組為單位)。 如果字樣名稱超過此參數指定的位元元組數目,則會截斷名稱。

lpszFacename
指向字樣名稱的緩衝區。

rString
CString 物件的參考。

傳回值

複製到緩衝區的位元組數目,不包括終止的Null字元。 如果發生錯誤,則為 0。

備註

字樣名稱會複製為以 Null 結尾的字串。

CDC::GetTextMetrics

使用屬性裝置內容擷取目前字型的計量。

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

參數

lpMetrics
指向 TEXTMETRIC 接收計量的結構。

傳回值

如果函式成功則為非零,否則為 0。

CDC::GetViewportExt

擷取裝置內容檢視區的 x 和 Y 範圍。

CSize GetViewportExt() const;

傳回值

x 和 y 範圍(以裝置單位為單位)作為 CSize 物件。

CDC::GetViewportOrg

擷取與裝置內容相關聯之檢視區原點的 X 和 Y 座標。

CPoint GetViewportOrg() const;

傳回值

檢視區 (在裝置座標中) CPoint 作為物件的來源。

CDC::GetWindow

傳回與顯示裝置內容相關聯的視窗。

CWnd* GetWindow() const;

傳回值

如果成功, CWnd 則為物件的指標,否則 NULL為 。

備註

這是進階函式。 例如,列印或列印預覽時,這個成員函式可能不會傳回檢視視窗。 它一律會傳回與輸出相關聯的視窗。 使用指定DC繪製到此視窗的輸出函式。

CDC::GetWindowExt

擷取與裝置內容相關聯之視窗的 x 和 Y 範圍。

CSize GetWindowExt() const;

傳回值

x 和 y 範圍(以邏輯單位為單位)做為 CSize 物件。

CDC::GetWindowOrg

擷取與裝置內容相關聯之視窗原點的 X 和 Y 座標。

CPoint GetWindowOrg() const;

傳回值

視窗的原點(以邏輯座標表示),做為 CPoint 物件。

CDC::GetWorldTransform

擷取目前世界空間到分頁空間轉換。

BOOL GetWorldTransform(XFORM& rXform) const;

參數

rXform
參考 XFORM 可接收目前世界空間到分頁空間轉換的結構。

傳回值

傳回成功時的非零值。

在失敗時傳回 0。

若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

這個方法會包裝 Windows GDI 函式 GetWorldTransform

CDC::GradientFill

呼叫此成員函式,以色彩填滿矩形和三角形結構,其色彩會從一側平滑淡出到另一側。

BOOL GradientFill(
    TRIVERTEX* pVertices,
    ULONG nVertices,
    void* pMesh,
    ULONG nMeshElements,
    DWORD dwMode);

參數

pVertices
每個結構陣列的 TRIVERTEX 指標都會定義三角形頂點。

nVertices
頂點數目。

pMesh
GRADIENT_TRIANGLE三角形模式中的結構陣列,或矩形模式中的結構陣列GRADIENT_RECT

nMeshElements
中的 pMesh項目數(三角形或矩形)。

dwMode
指定漸層填滿模式。 如需可能值的清單,請參閱 GradientFill Windows SDK 中的 。

傳回值

如果成功,則為 TRUE,否則為 FALSE

備註

如需詳細資訊,請參閱 GradientFill Windows SDK 中的 。

CDC::GrayString

在指定位置繪製暗灰色(灰色)文字,方法是在記憶體位圖中寫入文字、將點陣圖變暗,然後將點陣圖複製到顯示器。

virtual BOOL GrayString(
    CBrush* pBrush,
    BOOL (CALLBACK* lpfnOutput)(
    HDC,
    LPARAM,
    int),
    LPARAM lpData,
    int nCount,
    int x,
    int y,
    int nWidth,
    int nHeight);

參數

pBrush
識別要用於暗灰色的筆刷(灰色)。

lpfnOutput
指定將繪製字串之應用程式提供回呼函式的程序實例位址。 如需詳細資訊,請參閱 Windows OutputFunc 回呼函式的描述。 如果此參數為 NULL,則系統會使用 Windows TextOut 函式來繪製字串,並 lpData 假設為要輸出之字元字串的長指標。

lpData
指定要傳遞至輸出函式之數據的遠指標。 如果 lpfnOutputNULLlpData 必須是要輸出之字串的長指標。

nCount
指定要輸出的字元數。 如果此參數為 0, GrayString 則計算字串的長度(假設為 lpData 字串的指標)。 如果 nCount 是 1,且 所指向的函式會傳 lpfnOutput 回 0,則會顯示影像,但不會呈現暗灰色。

x
指定以字串括住之矩形起始位置的邏輯 X 座標。

y
指定矩形開頭位置的邏輯 Y 座標,該矩形會括住字串。

nWidth
指定將字串括住之矩形的寬度(以邏輯單位為單位)。 如果 nWidth 為 0, GrayString 則計算區域的寬度,假設 lpData 是字串的指標。

nHeight
指定矩形的高度(以邏輯單位為單位),以括住字串。 如果 nHeight 為 0, GrayString 則計算區域的高度,假設 lpData 是字串的指標。

傳回值

如果繪製字串,則為非零,如果 TextOut 函式或應用程式提供的輸出函式傳回 0,或記憶體不足而無法建立記憶體位圖來呈現暗灰色,則為 0。

備註

不論選取的筆刷和背景為何,函式都會將文字變暗。 成員 GrayString 函式會使用目前選取的字型。 MM_TEXT使用這個函式之前,必須先選取對應模式。

應用程式可以在支援純灰色色彩的裝置上繪製暗灰色(灰色)字串,而不需要呼叫 GrayString 成員函式。 系統色彩 COLOR_GRAYTEXT 是用來繪製停用文字的純灰色系統色彩。 應用程式可以呼叫 GetSysColor Windows 函式來擷取的 COLOR_GRAYTEXT色彩值。 如果色彩不是 0(黑色),應用程式可以呼叫 SetTextColor 成員函式,將文字色彩設定為色彩值,然後直接繪製字串。 如果擷取的色彩為黑色,應用程式必須呼叫 GrayString 以暗色(灰色)文字。

如果 lpfnOutputNULL,GDI 會使用 Windows TextOut 函式,並 lpData 假設為要輸出之字元的遠指標。 如果成員函式無法處理要輸出的 TextOut 字元(例如,字串會儲存為位圖),應用程式必須提供自己的輸出函式。

所有回呼函式都必須在返回 Windows 之前Microsoft基礎例外狀況,因為無法跨回呼界限擲回例外狀況。 如需例外狀況的詳細資訊,請參閱例外狀況一文

傳遞至 GrayString__stdcall 回調函式必須使用呼叫慣例,而且必須使用 匯出 __declspec

當架構處於預覽模式時,成員函式的 GrayString 呼叫會轉譯為 TextOut 呼叫,而且不會呼叫回呼函式。

CDC::HIMETRICtoDP

當您將大小從 OLE 轉換成 HIMETRIC 像素時,請使用此函式。

void HIMETRICtoDP(LPSIZE lpSize) const;

參數

lpSize
指向 SIZE 結構或 CSize 物件。

備註

如果裝置內容對象的對應模式為MM_LOENGLISHMM_HIENGLISHMM_LOMETRICMM_HIMETRIC,則轉換是根據實體英吋中的像素數目。 如果對應模式是其他非限制模式之一(例如 MM_TEXT),則轉換會以邏輯英吋中的像素數目為基礎。

CDC::HIMETRICtoLP

呼叫此函式,將單位轉換成 HIMETRIC 邏輯單元。

void HIMETRICtoLP(LPSIZE lpSize) const;

參數

lpSize
指向 SIZE 結構或 CSize 物件。

備註

當您從 OLE 取得 HIMETRIC 大小,並想要將它們轉換成應用程式的自然對應模式時,請使用此函式。

轉換是先將單位轉換成 HIMETRIC 圖元,然後使用裝置內容目前的對應單位,將這些單位轉換成邏輯單元來完成。 請注意,裝置視窗和檢視區的範圍會影響結果。

CDC::IntersectClipRect

藉由形成目前區域的交集和 、y1x2y2x1指定的矩形,建立新的裁剪區域。

int IntersectClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int IntersectClipRect(LPCRECT lpRect);

參數

x1
指定矩形左上角的邏輯 X 座標。

y1
指定矩形左上角的邏輯 Y 座標。

x2
指定矩形右下角的邏輯 X 座標。

y2
指定矩形右下角的邏輯 Y 座標。

lpRect
指定矩形。 您可以傳遞 CRect 物件或此參數結構的指標 RECT

傳回值

新的裁剪區域類型。 它可以是下列任何一個值:

  • COMPLEXREGION 新的裁剪區域有重疊的框線。

  • ERROR 裝置內容無效。

  • NULLREGION 新的裁剪區域是空的。

  • SIMPLEREGION 新的裁剪區域沒有重疊的框線。

備註

GDI 會裁剪所有後續輸出,以符合新的界限。 寬度和高度不得超過 32,767。

CDC::InvertRect

反轉指定矩形的內容。

void InvertRect(LPCRECT lpRect);

參數

lpRect
指向 RECT ,其中包含要反轉之矩形的邏輯座標。 您也可以傳遞 CRect 此參數的物件。

備註

Inversion 是邏輯 NOT 作業,會翻轉每個圖元的位。 在單色顯示器上,函式會讓白色圖元變成黑色和黑色圖元白色。 在色彩顯示器上,反轉取決於顯示色彩的產生方式。 使用相同的矩形呼叫 InvertRect 兩次,會將顯示器還原成其先前的色彩。

如果矩形是空的,則不會繪製任何專案。

範例

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

反轉 所指定區域中的 pRgn色彩。

BOOL InvertRgn(CRgn* pRgn);

參數

pRgn
識別要反轉的區域。 區域的座標會以邏輯單位指定。

傳回值

如果函式成功則為非零,否則為 0。

備註

在單色顯示器上,函式會讓白色圖元變成黑色和黑色圖元白色。 在色彩顯示上,反轉取決於顯示色彩的產生方式。

CDC::IsPrinting

判斷裝置內容是否用於列印。

BOOL IsPrinting() const;

傳回值

如果對像是印表機 DC, CDC 則為非零,否則為 0。

CDC::LineTo

從目前的位置繪製一條線,但不包括 和 yx指定的點(或 point)。

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

參數

x
指定該行端點的邏輯 x 座標。

y
指定線條端點的邏輯 Y 座標。

point
指定行的端點。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果繪製線條,則為非零;否則為 0。

備註

線條會以選取的畫筆繪製。 目前的位置設定為 xy 或設定為 point

範例

請參閱 CRect::CenterPoint 的範例。

CDC::LPtoDP

將邏輯單元轉換成裝置單位。

void LPtoDP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;

參數

lpPoints
指向點陣列。 陣列中的每個點都是 POINT 結構或 CPoint 物件。

nCount
陣列中的點數。

lpRect
RECT指向結構或 CRect 物件。 此參數用於將矩形從邏輯對應到裝置單位的常見案例。

lpSize
SIZE指向結構或 CSize 物件。

備註

函式會將 GDI 邏輯座標系統的每個點或大小維度對應到裝置座標系統。 轉換取決於目前的對應模式,以及裝置視窗和檢視區的原點和範圍設定。

點的 x 和 Y 座標是介於 -32,768 到 32,767 之間的 2 位元組帶正負號整數。 如果對應模式會產生大於這些限制的值,系統會將值分別設定為 -32,768 和 32,767。

CDC::LPtoHIMETRIC

呼叫此函式,將邏輯單元轉換成 HIMETRIC 單位。

void LPtoHIMETRIC(LPSIZE lpSize) const;

參數

lpSize
SIZE指向結構或 CSize 物件。

備註

當您提供 HIMETRIC 大小給 OLE 時,請使用此函式,從應用程式的自然對應模式轉換。 裝置視窗和檢視區的範圍會影響結果。

轉換是先使用裝置內容的目前對應單位將邏輯單元轉換成圖元,然後將這些單位轉換成 HIMETRIC 單位來完成。

CDC::m_hAttribDC

這個 CDC 物件的屬性裝置內容。

HDC m_hAttribDC;

備註

根據預設,此裝置內容等於 m_hDC。 一般而言, CDC 從裝置內容要求資訊的 GDI 呼叫會導向至 m_hAttribDCCDC如需使用這兩個裝置內容的詳細資訊,請參閱類別描述。

CDC::m_hDC

這個 CDC 物件的輸出裝置內容。

HDC m_hDC;

備註

根據預設, m_hDC 等於 m_hAttribDC,另一個由 包裝的 CDC裝置內容。 一般而言, CDC 建立輸出的 m_hDC GDI 呼叫會移至裝置內容。 您可以初始化 m_hDCm_hAttribDC 指向不同的裝置。 CDC如需使用這兩個裝置內容的詳細資訊,請參閱類別描述。

CDC::MaskBlt

使用指定的遮罩和點陣作業,結合來源和目的地點陣圖的色彩數據。

BOOL MaskBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    CBitmap& maskBitmap,
    int xMask,
    int yMask,
    DWORD dwRop);

參數

x
指定目的矩形左上角的邏輯 X 座標。

y
指定目的矩形左上角的邏輯 Y 座標。

nWidth
指定目的地矩形和來源位圖的邏輯單位寬度。

nHeight
指定目的地矩形和來源位圖的邏輯單位高度。

pSrcDC
識別要從中複製位圖的裝置內容。 如果 dwRop 參數指定不包含來源的點陣作業,它必須是零。

xSrc
指定來源點陣圖左上角的邏輯 X 座標。

ySrc
指定來源位圖左上角的邏輯 Y 座標。

maskBitmap
識別與來源裝置內容中色彩點陣圖結合的單色遮罩位圖。

xMask
指定參數所 maskBitmap 指定遮罩位圖的水準圖元位移。

yMask
指定 參數所 maskBitmap 指定遮罩位圖的垂直圖元位移。

dwRop
指定前景和背景三元點陣作業代碼,函式會用來控制來源和目的地數據的組合。 背景點陣作業程式代碼會儲存在此值之高位元的高位元組中;前景點陣作業程式代碼會儲存在此值之高字的低位元組中;忽略這個值的低字,而且應該是零。 MAKEROP4巨集會建立前景和背景點陣作業程式代碼的這類組合。 如需此函式內容中前景和背景的討論,請參閱一節。 BitBlt如需一般點陣作業代碼的清單,請參閱成員函式。

傳回值

如果函式成功則為非零,否則為 0。

備註

maskBitmap 指定遮罩中的值 1 表示應該在該位置套用 所 dwRop 指定的前景點陣作業程序代碼。 遮罩中的值 0 表示應該在該位置套用 所 dwRop 指定的背景點陣作業程序代碼。 如果點陣作業需要來源,遮罩矩形必須涵蓋來源矩形。 如果沒有,函式會失敗。 如果點陣作業不需要來源,遮罩矩形必須涵蓋目的地矩形。 如果沒有,函式會失敗。

如果呼叫此函式時,來源裝置內容的旋轉或剪差轉換生效,就會發生錯誤。 不過,允許其他類型的轉換。

如果來源、模式和目的地位圖的色彩格式不同,此函式會轉換模式或來源格式,或兩者,以符合目的地格式。 如果遮罩位圖不是單色位圖,就會發生錯誤。 當記錄增強型元檔時,如果來源裝置內容識別增強型元檔裝置內容,就會發生錯誤(且函式會傳回 0)。 並非所有裝置都支援 MaskBlt。 應用程式應該呼叫 GetDeviceCaps 以判斷裝置是否支援此函式。 如果未提供遮罩位圖,則此函式的行為與 BitBlt使用前景點陣作業程序代碼完全相同。 遮罩位圖中的圖元位移會對應至來源裝置內容點 (0,0)。 這適用於遮罩位圖包含一組遮罩的情況;應用程式可以藉由調整傳送至 的圖元位移和矩形大小,輕鬆地將其中任何一個套用至 MaskBlt遮罩傾斜工作。

CDC::ModifyWorldTransform

使用指定的模式變更裝置內容的世界轉換。

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

參數

rXform
XFORM用於修改指定裝置內容之世界轉換的結構參考。

iMode
指定轉換資料如何修改目前的世界轉換。 如您參數可接受的值清單,請參閱 ModifyWorldTransform

傳回值

傳回成功時的非零值。

在失敗時傳回 0。

若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

這個方法會包裝 Windows GDI 函式 ModifyWorldTransform

CDC::MoveTo

將目前的位置移至和 yx指定的點(或 由所指定)。point

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

參數

x
指定新位置的邏輯 X 座標。

y
指定新位置的邏輯 Y 座標。

point
指定新位置。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

上一個位置的 X 和 Y 座標做為 CPoint 物件。

範例

請參閱 CRect::CenterPoint 的範例。

CDC::OffsetClipRgn

依指定的位移行動裝置內容的裁剪區域。

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

參數

x
指定要向左或向右移動的邏輯單元數目。

y
指定要向上或向下移動的邏輯單元數目。

size
指定要位移的數量。

傳回值

新區域的類型。 它可以是下列任何一個值:

  • COMPLEXREGION 裁剪區域有重疊的框線。

  • ERROR 裝置內容無效。

  • NULLREGION 裁剪區域是空的。

  • SIMPLEREGION 裁剪區域沒有重疊的框線。

備註

函式會沿著 x 軸移動區域 x 單位,沿著 y y 軸移動單位。

CDC::OffsetViewportOrg

修改檢視區原點的座標,相對於目前檢視區原點的座標。

virtual CPoint OffsetViewportOrg(
    int nWidth,
    int nHeight);

參數

nWidth
指定要新增至目前原點 x 座標的裝置單位數目。

nHeight
指定要新增至目前原點 Y 座標的裝置單位數目。

傳回值

上一個檢視區原點 (在裝置座標中) 做為 CPoint 物件。

CDC::OffsetWindowOrg

修改視窗原點的座標,相對於目前視窗原點的座標。

CPoint OffsetWindowOrg(
    int nWidth,
    int nHeight);

參數

nWidth
指定要新增至目前原點 x 座標的邏輯單位數目。

nHeight
指定要新增至目前原點 Y 座標的邏輯單位數目。

傳回值

上一個視窗原點 (在邏輯座標中) 做為 CPoint 物件。

CDC::operator HDC

使用此運算符來擷取對象的裝置內容句柄 CDC

operator HDC() const;

傳回值

如果成功,則為裝置內容物件的句柄;否則為 NULL

備註

您可以使用 句柄直接呼叫 Windows API。

CDC::PaintRgn

使用目前的筆刷填滿指定的 pRgn 區域。

BOOL PaintRgn(CRgn* pRgn);

參數

pRgn
識別要填滿的區域。 指定區域的座標會以邏輯單位指定。

傳回值

如果函式成功則為非零,否則為 0。

CDC::PatBlt

在裝置上建立位模式。

BOOL PatBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    DWORD dwRop);

參數

x
指定要接收模式之矩形左上角的邏輯 X 座標。

y
指定要接收圖樣之矩形左上角的邏輯 Y 座標。

nWidth
指定要接收模式之矩形的寬度(以邏輯單位為單位)。

nHeight
指定要接收模式之矩形的高度(以邏輯單位為單位)。

dwRop
指定點陣作業程序代碼。 點陣作業代碼 (ROPs) 定義 GDI 如何結合輸出作業中的色彩,這些色彩牽涉到目前的筆刷、可能的來源位圖和目的地位圖。 這個參數可以是下列其中一個 值:

  • PATCOPY 將模式複製到目的地點陣圖。

  • PATINVERT 使用布爾 XOR^) 運算子結合目的地點陣圖與模式。

  • DSTINVERT 反轉目的地點陣圖。

  • BLACKNESS 將所有輸出變成黑色。

  • WHITENESS 將所有輸出變成白色。

傳回值

如果函式成功則為非零,否則為 0。

備註

此圖樣是所選筆刷和裝置上已經存在的圖樣的組合。 所 dwRop 指定的點陣作業程式代碼會定義如何結合模式。 此函式所列的點陣作業是完整 256 個三元點陣作業代碼的有限子集;特別是,無法使用參考來源的點陣作業程序代碼。

並非所有裝置內容都支援函式 PatBlt 。 若要判斷裝置內容是否支援 PatBlt,請使用索引呼叫 GetDeviceCaps 成員函式 RASTERCAPS ,並檢查旗標的 RC_BITBLT 傳回值。

CDC::Pie

繪製橢圓形的橢形,繪製橢圓形弧線,其中央和兩個端點會以線條聯結。

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);

參數

x1
指定周框左上角的 X 座標(以邏輯單位為單位)。

y1
指定周框左上角的 Y 座標(以邏輯單位為單位)。

x2
指定周框右下角的 X 座標(以邏輯單位為單位)。

y2
指定周框右下角的 Y 座標(以邏輯單位為單位)。

x3
指定弧線起點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y3
指定弧線起點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

x4
指定弧線端點的 X 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

y4
指定弧線端點的 Y 座標(以邏輯單位為單位)。 這一點不必完全躺在弧線上。

lpRect
指定周框。 您可以傳遞 CRect 物件或此參數結構的指標 RECT

ptStart
指定弧線的起點。這一點不必完全躺在弧線上。您可以傳遞這個參數的結構 POINTCPoint 物件。

ptEnd
指定弧線的端點。這一點不必完全躺在弧線上。您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

弧線的中心是 、、 x2y1y2 (或lpRect) 所x1指定周框的中心。 弧線的起點和終點是由 、、 和 (或 和 ptEnd) 指定。y4 x4y3x3ptStart

弧線會以選取的畫筆繪製,以逆時針方向移動。 另外兩條線是從每個端點繪製到弧線的中心。 餅形區域會填入目前的筆刷。 如果 x3 等於 x4y3 等於 y4,則結果是橢圓形中央到點 (、 y3) 或 (x4x3y4) 的單一線條橢圓形。

此函式所繪製的圖表會延伸至 ,但不包含右座標和底部座標。 這表示圖形的高度是 y2 - y1 ,而圖表的寬度為。x2 - x1 周框的寬度和高度必須大於2個單位,且小於32,767個單位。

範例

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

在裝置內容上播放指定元檔的內容。

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

參數

hMF
識別要播放的元檔。

hEnhMetaFile
識別增強型元檔。

lpBounds
RECT指向結構或CRect物件,其中包含用來顯示圖片之周框座標的物件。 座標會以邏輯單位指定。

傳回值

如果函式成功則為非零,否則為 0。

備註

元檔可以任意次數播放。

的第二個版本 PlayMetaFile 會顯示儲存在指定增強格式元檔中的圖片。 當應用程式呼叫 的第二個版本 PlayMetaFile時,Windows 會使用增強元檔標頭中的圖片框架,將圖片對應到 lpBounds 參數指向的矩形。 (此圖片可能會在呼叫 PlayMetaFile之前,先在輸出裝置中設定世界轉換來剪下或旋轉。矩形邊緣的點會包含在圖片中。 在播放增強型元檔之前,可以在輸出裝置中定義裁剪區域來裁剪增強型元檔。

如果增強型元檔包含選擇性調色盤,應用程式可以在呼叫 的第二個版本 PlayMetaFile之前,在輸出裝置上設定調色盤,以達到一致的色彩。 若要擷取選用調色盤,請使用 GetEnhMetaFilePaletteEntries Windows函式。 增強型元檔可以藉由呼叫 的第二個 版本 PlayMetaFile ,並將來源增強型元檔內嵌到新增強型元檔裝置內容中,以內嵌至新增強型元檔。

輸出裝置內容的狀態會由此函式保留。 此函式會刪除在增強型元檔中建立但未刪除的任何物件。 若要停止此函式,應用程式可以從另一個線程呼叫 CancelDC Windows 函式來終止作業。 在此情況下,函式會傳回零。

CDC::PlgBlt

執行位區塊傳輸從來源裝置內容中指定矩形到指定裝置內容中指定平行投影的色彩數據位。

BOOL PlgBlt(
    LPPOINT lpPoint,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nWidth,
    int nHeight,
    CBitmap& maskBitmap,
    int xMask,
    int yMask);

參數

lpPoint
指向邏輯空間中三個點的陣列,可識別目的地平行投影的三個角落。 來源矩形的左上角會對應至此陣列中的第一個點、此陣列中第二個點的右上角,以及左下角對應至第三個點。 來源矩形的右下角會對應至平行方圖中的隱含第四個點。

pSrcDC
識別來源裝置內容。

xSrc
指定來源矩形左上角的 X 座標,以邏輯單位表示。

ySrc
指定來源矩形左上角的 Y 座標,以邏輯單位表示。

nWidth
指定來源矩形的邏輯單位寬度。

nHeight
指定來源矩形邏輯單位的高度。

maskBitmap
識別用來遮罩來源矩形色彩的選擇性單色位圖。

xMask
指定單色點圖左上角的 X 座標。

yMask
指定單色位圖左上角的 Y 座標。

傳回值

如果函式成功則為非零,否則為 0。

備註

如果指定的位掩碼句柄識別有效的單色位圖,函式會使用此點陣圖來遮罩來源矩形中的色彩數據位。

平行投影 (D) 的第四個頂點是藉由將前三個點 (A、B 和 C) 視為向量和運算 D = B + C - A 來定義。

如果位掩碼存在,遮罩中的值為 1,表示來源圖元色彩應該複製到目的地。 遮罩中的值 0 表示目的地圖元色彩不會變更。

如果遮罩矩形小於來源和目的矩形,則函式會復寫遮罩模式。

來源裝置內容允許縮放、轉譯和反映轉換;不過,旋轉和切變不是。 如果遮罩位圖不是單色位圖,就會發生錯誤。 目的地裝置內容的延展模式可用來判斷必要時如何縮放或壓縮圖元。 當記錄增強型元檔時,如果來源裝置內容識別增強型元檔裝置內容,就會發生錯誤。

目的地座標會根據目的地裝置內容而轉換;來源座標會根據來源裝置內容而轉換。 如果來源轉換具有旋轉或切變,則會傳回錯誤。 如果目的地和來源矩形沒有相同的色彩格式, PlgBlt 請轉換來源矩形以符合目的矩形。 並非所有裝置都支援 PlgBlt。 如需詳細資訊,請參閱成員函式中CDC::GetDeviceCaps點陣功能的描述RC_BITBLT

如果來源和目的地裝置內容代表不相容的裝置, PlgBlt 則傳回錯誤。

CDC::PolyBezier

繪製一或多個 Bzier 曲線。

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

參數

lpPoints
指向包含曲線端點和控制點的數據結構數位 POINT

nCount
指定陣列中的 lpPoints 點數。 此值必須是繪製曲線數目的三倍以上,因為每個 Bzier 曲線都需要兩個控制點和一個端點,而初始曲線需要另一個起點。

傳回值

如果函式成功則為非零,否則為 0。

備註

此函式會使用 參數指定的 lpPoints 端點和控制點,繪製立方體 Bzier 曲線。 第一個曲線是從第一個點繪製到第四個點,方法是使用第二和第三個點作為控制點。 序列中的每個後續曲線只需要三個點:前一個曲線的終點會當做起點使用,序列中的下兩個點是控制點,第三個是終點。

函式不會使用或更新 PolyBezier 目前的位置。 此圖未填滿。 此函式會使用目前的畫筆繪製線條。

CDC::PolyBezierTo

繪製一或多個 Bzier 曲線。

BOOL PolyBezierTo(
    const POINT* lpPoints,
    int nCount);

參數

lpPoints
指向包含端點和控制點的數據結構數位 POINT

nCount
指定陣列中的 lpPoints 點數。 此值必須是要繪製的曲線數目的三倍,因為每個 Bzier 曲線都需要兩個控制點和一個終點。

傳回值

如果函式成功則為非零,否則為 0。

備註

此函式會使用 參數所 lpPoints 指定的控制點來繪製三次方 Bzier 曲線。 第一個曲線是從目前位置繪製到第三個點,方法是使用前兩個點作為控制點。 針對每個後續曲線,函式只需要三個以上的點,並使用上一個曲線的終點做為下一個起點。 PolyBezierTo 將目前位置移至最後一個 Bzier 曲線的終點。 此圖未填滿。 此函式會使用目前的畫筆繪製線條。

範例

請參閱 CDC::BeginPath 的範例。

CDC::PolyDraw

繪製一組線條線段和 Bzier 曲線。

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

參數

lpPoints
指向數據結構陣列 POINT ,其中包含每個線段的端點,以及每個 Bzier 曲線的端點和控制點。

lpTypes
指向指定數位中每個點的使用方式的 lpPoints 陣列。 值可以是下列其中一項:

  • PT_MOVETO 指定這個點會啟動脫離的圖形。 這個點會變成新的目前位置。

  • PT_LINETO 指定要從目前位置繪製到這個點的線條,然後變成新的目前位置。

  • PT_BEZIERTO 指定這個點是 Bzier 曲線的控制點或結束點。

PT_BEZIERTO 類型一律會在三組中發生。 目前的位置會定義 Bzier 曲線的起點。 前兩 PT_BEZIERTO 個點是控制點,第三 PT_BEZIERTO 個點是結束點。 結束點會變成新的目前位置。 如果沒有三個連續 PT_BEZIERTO 點,就會產生錯誤。

PT_LINETOPT_BEZIERTO 型別可以使用位運算符 OR 來結合下列常數,以指出對應的點是圖的最後一個點,而且圖表已關閉:

  • PT_CLOSEFIGURE指定在完成此點的 或 PT_BEZIERTO 類型之後PT_LINETO,會自動關閉此圖形。 從這個點繪製到最近 PT_MOVETOMoveTo 點的線條。

    這個旗標會與 PT_LINETO 線條的類型結合,或使用 PT_BEZIERTOOR 運算符來結合 Bzier 曲線的結束點類型。 目前的位置會設定為結束線的結束點。

nCount
指定陣列中的 lpPoints 點總數,與陣列中的 lpTypes 位元組數目相同。

傳回值

如果函式成功則為非零,否則為 0。

備註

此函式可用來繪製脫離的數位,以取代對、 CDC::LineToCDC::PolyBezierTo 成員函式的連續呼叫CDC::MoveTo。 線條和曲線是使用目前的畫筆繪製的,而且不會填滿圖形。 如果有透過呼叫 CDC::BeginPath 成員函式啟動的作用中路徑, PolyDraw 請將 新增至路徑。 陣列中包含的lpPoints點,以及中lpTypes指出每個點是否為、 CDC::LineTo或作業的一CDC::MoveToCDC::BezierTo部分。 您也可以關閉資料。 此函式會更新目前的位置。

範例

請參閱 CDC::BeginPath 的範例。

CDC::Polygon

使用目前的手寫筆繪製由線條連接的兩個或多個點(頂點)組成的多邊形。

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

參數

lpPoints
指向指定多邊形頂點的點陣列。 陣列中的每個點都是 POINT 結構或 CPoint 物件。

nCount
指定陣列中的頂點數目。

傳回值

如果函式成功則為非零,否則為 0。

備註

如有必要,系統會將最後一個頂點的線條繪製到第一個,自動關閉多邊形。

您可以使用 和 SetPolyFillMode 成員函式來擷取或設定GetPolyFillMode目前的多邊形填滿模式。

範例

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

繪製一組連接 所指定點的 lpPoints線條線段。

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

參數

lpPoints
指向要連接的結構或CPoint物件的陣列POINT

nCount`
指定陣列中的點數。 此值必須至少為 2。

傳回值

如果函式成功則為非零,否則為 0。

備註

線條是從第一個點繪製到使用目前手寫筆的後續點。 LineTo與成員函式不同,函Polyline式不會使用或更新目前的位置。

如需詳細資訊,請參閱 PolyLine Windows SDK 中的 。

CDC::PolylineTo

繪製一或多個直線。

BOOL PolylineTo(
    const POINT* lpPoints,
    int nCount);

參數

lpPoints
指向包含線條頂點的數據結構陣列 POINT

nCount
指定陣列中的點數。

傳回值

如果函式成功則為非零,否則為 0。

備註

使用目前的手寫筆,從目前位置繪製到 參數所 lpPoints 指定的第一個點。 針對每個額外的行,函式會從上一行的結束點繪製到 所 lpPoints指定的下一個點。 PolylineTo 將目前位置移至最後一行的結束點。 如果此函式所繪製的折線段形成封閉圖,則不會填滿該圖。

CDC::PolyPolygon

建立使用目前多邊形填滿模式填滿的兩個或多個多邊形。

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

參數

lpPoints
指向定義多邊形頂點的結構或CPoint物件數位。POINT

lpPolyCounts
指向整數陣列,其中每一個都會指定陣列中其中一個多邊形中的 lpPoints 點數。

nCount
陣列中的 lpPolyCounts 項目數。 這個數位會指定要繪製的多邊形數目。 此值必須至少為 2。

傳回值

如果函式成功則為非零,否則為 0。

備註

多邊形可能會脫離或重疊。

函數呼叫 PolyPolygon 中指定的每個多邊形都必須關閉。 不同於成員函式所建立的 Polygon 多邊形,所 PolyPolygon 建立的多邊形不會自動關閉。

函式會建立兩個或多個多邊形。 若要建立單一多邊形,應用程式應該使用 Polygon 成員函式。

您可以使用 和 SetPolyFillMode 成員函式來擷取或設定GetPolyFillMode目前的多邊形填滿模式。

CDC::PolyPolyline

繪製多個連接的線段數列。

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

參數

lpPoints
指向包含聚合線條頂點的結構數位。 聚合線條會連續指定。

lpPolyPoints
指向變數陣列,指定對應多邊形數位中的 lpPoints 點數。 每個項目必須大於或等於 2。

nCount
指定數位中的 lpPolyPoints 計數總數。

傳回值

如果函式成功則為非零,否則為 0。

備註

線條線段是使用目前的畫筆繪製的。 不會填滿區段所形成的數位。 此函式不會使用或更新目前的位置。

CDC::PtVisible

判斷指定的點是否在裝置內容的裁剪區域內。

virtual BOOL PtVisible(
    int x,
    int y) const;

BOOL PtVisible(POINT point) const;

參數

x
指定點的邏輯 x 座標。

y
指定點的邏輯 Y 座標。

point
指定要簽入邏輯座標的點。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果指定的點在裁剪區域內,則為非零;否則為 0。

CDC::QueryAbort

針對列印應用程式呼叫成員函式所 SetAbortProc 安裝的中止函式,並查詢是否應該終止列印。

BOOL QueryAbort() const;

傳回值

如果列印應該繼續,或沒有中止程式,則傳回值為非零值。 如果列印作業應該終止,則為 0。 中止函式會提供傳回值。

CDC::RealizePalette

將目前邏輯調色盤中的項目對應至系統調色盤。

UINT RealizePalette();

傳回值

指出邏輯選擇區中有多少項目對應至系統調色盤中的不同專案。 這代表此函式重新對應以因應系統調色盤中變更的項目數,因為上次實現邏輯調色盤。

備註

邏輯調色盤可做為大量色彩應用程式與系統之間的緩衝區,可讓應用程式視需要使用任意數目的色彩,而不需要干擾自己的顯示色彩或其他視窗所顯示的色彩。

當視窗具有輸入焦點並呼叫 RealizePalette時,Windows 可確保視窗會顯示所有要求的色彩,最多到畫面上同時可用的最大數目。 Windows 也會比對視窗的調色盤中找不到色彩,使其符合可用的色彩。

此外,Windows 會比對非使用中視窗所要求的色彩,讓函式盡可能接近可用的色彩。 這可大幅減少非使用中視窗所顯示色彩的不想要變更。

CDC::Rectangle

使用目前的畫筆繪製矩形。

BOOL Rectangle(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Rectangle(LPCRECT lpRect);

參數

x1
指定矩形左上角的 X 座標(以邏輯單位為單位)。

y1
指定矩形左上角的 Y 座標(以邏輯單位為單位)。

x2
指定矩形右下角的 X 座標(以邏輯單位為單位)。

y2
指定矩形右下角的 Y 座標(以邏輯單位為單位)。

lpRect
指定邏輯單元中的矩形。 您可以傳遞 CRect 物件或此參數結構的指標 RECT

傳回值

如果函式成功則為非零,否則為 0。

備註

矩形的內部會使用目前的筆刷填滿。

矩形會向上延伸,但不包含右座標和底部座標。 這表示矩形的高度是 y2 - y1 ,而矩形的寬度為 。x2 - x1 矩形的寬度和高度必須大於2個單位,且小於32,767個單位。

範例

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

判斷指定矩形的任何部分是否位於顯示內容的裁剪區域內。

virtual BOOL RectVisible(LPCRECT lpRect) const;

參數

lpRect
指向 RECT 包含指定矩形之邏輯座標的結構或 CRect 物件。

傳回值

如果指定矩形的任何部分位於裁剪區域內,則為非零;否則為 0。

CDC::ReleaseAttribDC

呼叫這個成員函式以設定 m_hAttribDC 為NULL。

virtual void ReleaseAttribDC();

備註

這不會造成 Detach 發生。 只有輸出裝置內容會附加至 CDC 物件,而且只能中斷連結。

CDC::ReleaseOutputDC

通叫這個成員函式,將成員設定 m_hDCNULL

virtual void ReleaseOutputDC();

備註

當輸出裝置內容附加至 CDC 物件時,無法呼叫這個成員函式。 Detach使用成員函式來中斷連結輸出裝置內容。

CDC::ResetDC

呼叫這個成員函式,以更新 對象包裝的 CDC 裝置內容。

BOOL ResetDC(const DEVMODE* lpDevMode);

參數

lpDevMode
Windows DEVMODE 結構的指標。

傳回值

如果函式成功則為非零,否則為 0。

備註

裝置內容會從 Windows DEVMODE 結構中指定的資訊更新。 此成員函式只會重設屬性裝置內容。

當窗口處理WM_DEVMODECHANGE訊息時,ResetDC應用程式通常會使用成員函式。 您也可以使用這個成員函式,在列印文件時變更紙張方向或紙箱。

您無法使用此成員函式來變更驅動程式名稱、裝置名稱或輸出埠。 當使用者變更埠連線或裝置名稱時,您必須刪除原始裝置內容,並使用新的資訊建立新的裝置內容。

在呼叫此成員函式之前,您必須確定已選取到裝置內容的所有物件(非股票物件)都已選取。

CDC::RestoreDC

將裝置內容還原至 所 nSavedDC識別的先前狀態。

virtual BOOL RestoreDC(int nSavedDC);

參數

nSavedDC
指定要還原的裝置內容。 它可以是先前 SaveDC 函數調用所傳回的值。 如果 nSavedDC 為 -1,則會還原最近儲存的裝置內容。

傳回值

如果還原指定的內容,則為非零;否則為 0。

備註

RestoreDC 藉由將狀態資訊從先前呼叫 SaveDC 成員函式所建立的堆疊中彈出來還原裝置內容。

堆疊可以包含數個裝置內容的狀態資訊。 如果 指定的 nSavedDC 內容不在堆疊頂端, RestoreDC 則會刪除 所 nSavedDC 指定裝置內容與堆疊頂端之間的所有狀態資訊。 已刪除的資訊會遺失。

CDC::RoundRect

使用目前的畫筆繪製圓角的矩形。

BOOL RoundRect(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

BOOL RoundRect(
    LPCRECT lpRect,
    POINT point);

參數

x1
指定矩形左上角的 X 座標(以邏輯單位為單位)。

y1
指定矩形左上角的 Y 座標(以邏輯單位為單位)。

x2
指定矩形右下角的 X 座標(以邏輯單位為單位)。

y2
指定矩形右下角的 Y 座標(以邏輯單位為單位)。

x3
指定用來繪製圓角的橢圓形寬度(以邏輯單位為單位)。

y3
指定用來繪製圓角的橢圓形高度(以邏輯單位為單位)。

lpRect
指定邏輯單元中的周框。 您可以傳遞 CRect 物件或此參數結構的指標 RECT

point
point X 座標會指定要繪製圓角的橢圓形寬度(以邏輯單位為單位)。 的 Y 座標 point 會指定要繪製圓角的橢圓形高度(以邏輯單位為單位)。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

矩形的內部會使用目前的筆刷填滿。

此函式繪製的圖會延伸至 ,但不包含右座標和底部座標。 這表示圖形的高度是 y2 - y1 ,而圖表的寬度為。x2 - x1 周框的高度和寬度必須大於2個單位,且小於32,767個單位。

範例

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

將狀態資訊(例如裁剪區域、選取的對象和對應模式)複製到 Windows 維護的內容堆疊,以儲存裝置內容的目前狀態。

virtual int SaveDC();

傳回值

識別已儲存裝置內容的整數。 如果發生錯誤,則為 0。 這個傳回值可用來藉由呼叫 RestoreDC來還原裝置內容。

備註

稍後可以使用 來還原 RestoreDC已儲存的裝置內容。

SaveDC 可以使用任意次數來儲存任意數目的裝置內容狀態。

CDC::ScaleViewportExt

修改相對於目前值的檢視區範圍。

virtual CSize ScaleViewportExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

參數

xNum
指定要乘以目前 x 範圍所依據的數量。

xDenom
指定要將目前 x 範圍乘以 參數值 xNum 的結果相乘的量。

yNum
指定要乘以目前 Y 範圍所依據的數量。

yDenom
指定要將目前 Y 範圍乘以 參數值 yNum 的結果除以的量。

傳回值

先前的檢視區範圍(以裝置單位為單位)作為 CSize 物件。

備註

公式的撰寫方式如下:

xNewVE = ( xOldVE * xNum ) / xDenom

yNewVE = ( yOldVE * yNum ) / yDenom

新的檢視區範圍是藉由將目前的範圍乘以指定的分子,然後除以指定的分母來計算。

CDC::ScaleWindowExt

修改相對於目前值的視窗範圍。

virtual CSize ScaleWindowExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

參數

xNum
指定要乘以目前 x 範圍所依據的數量。

xDenom
指定要將目前 x 範圍乘以 參數值 xNum 的結果相乘的量。

yNum
指定要乘以目前 Y 範圍所依據的數量。

yDenom
指定要將目前 Y 範圍乘以 參數值 yNum 的結果除以的量。

傳回值

上一個視窗範圍 (以邏輯單位為單位) 做為 CSize 物件。

備註

公式的撰寫方式如下:

xNewWE = ( xOldWE * xNum ) / xDenom

yNewWE = ( yOldWE * yNum ) / yDenom

新的視窗範圍是藉由將目前的範圍乘以指定的分子,然後除以指定的分母來計算。

CDC::ScrollDC

水平和垂直捲動位的矩形。

BOOL ScrollDC(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* pRgnUpdate,
    LPRECT lpRectUpdate);

參數

dx
指定水平捲動單位的數目。

dy
指定垂直捲動單位的數目。

lpRectScroll
RECT指向包含卷動矩形座標的結構或CRect物件。

lpRectClip
指向 RECT 包含裁剪矩形座標的結構或 CRect 物件。 當這個矩形小於 所 lpRectScroll指向的原始矩形時,捲動只會發生在較小的矩形中。

pRgnUpdate
識別捲動程式所發現的區域。 函 ScrollDC 式會定義此區域;它不一定是矩形。

lpRectUpdate
指向 RECT 結構或 CRect 物件,該物件會接收系結卷動更新區域之矩形的座標。 這是需要重繪的最大矩形區域。 當函式傳回時,結構或物件中的值會位於用戶端座標中,而不論指定裝置內容的對應模式為何。

傳回值

如果執行卷動,則為非零;否則為 0。

備註

如果 lpRectUpdateNULL,則 Windows 不會計算更新矩形。 如果 和 lpRectUpdate NULL都是 pRgnUpdate ,Windows 不會計算更新區域。 如果 pRgnUpdate 不是 NULL,Windows 會假設它包含卷動程式所發現區域的有效指標(由 ScrollDC 成員函式定義)。 如有需要,可以將 傳回的 lpRectUpdate 更新區域傳遞給 CWnd::InvalidateRgn

當需要捲動視窗的整個工作區時, ScrollWindow 應用程式應該使用 類別 CWnd 的成員函式。 否則,它應該使用 ScrollDC

CDC::SelectClipPath

選取目前路徑做為裝置內容的裁剪區域,使用指定的模式,將新區域與任何現有的裁剪區域結合在一起。

BOOL SelectClipPath(int nMode);

參數

nMode
指定使用路徑的方式。 允許下列值:

  • RGN_AND 新的裁剪區域包含目前裁剪區域和目前路徑的交集(重疊區域)。

  • RGN_COPY 新的裁剪區域是目前的路徑。

  • RGN_DIFF 新的裁剪區域包含目前裁剪區域的區域,以及排除目前路徑的區域。

  • RGN_OR 新的裁剪區域包含目前裁剪區域和目前路徑的等位(合併區域)。

  • RGN_XOR 新的裁剪區域包含目前裁剪區域和目前路徑的聯集,但不含重疊區域。

傳回值

如果函式成功則為非零,否則為 0。

備註

識別的裝置內容必須包含關閉的路徑。

CDC::SelectClipRgn

選取指定的區域作為裝置內容的目前裁剪區域。

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

參數

pRgn
識別要選取的區域。

  • 針對此函式的第一個版本,如果此值為 NULL,則會選取整個工作區,而且輸出仍會裁剪至視窗。

  • 對於此函式的第二個版本,此句柄只能在 NULL 指定模式時 RGN_COPY 使用。

nMode
指定要執行的作業。 它必須是下列其中一個值:

  • RGN_AND 新的裁剪區域結合了目前裁剪區域的重疊區域,以及所 pRgn識別的區域。

  • RGN_COPY 新的裁剪區域是 所 pRgn識別之區域的複本。 這項功能與的第一個版本 SelectClipRgn相同。 如果 所 pRgn 識別的區域是 NULL,新的裁剪區域會變成預設裁剪區域(Null 區域)。

  • RGN_DIFF 新的裁剪區域結合了目前裁剪區域的區域與 所識別 pRgn區域排除的區域。

  • RGN_OR 新的裁剪區域結合了目前的裁剪區域和 所 pRgn識別的區域。

  • RGN_XOR 新的裁剪區域結合了目前裁剪區域和所 pRgn 識別的區域,但排除任何重疊的區域。

傳回值

區域的型別。 它可以是下列任何一個值:

  • COMPLEXREGION 新的裁剪區域有重疊的框線。

  • ERROR 裝置內容或區域無效。

  • NULLREGION 新的裁剪區域是空的。

  • SIMPLEREGION 新的裁剪區域沒有重疊的框線。

備註

只會使用選取區域的複本。 您可以針對任意數目的其他裝置內容選取區域本身,也可以加以刪除。

函式假設指定區域的座標是在裝置單位中指定。 某些印表機裝置支援解析度高於圖形輸出的文字輸出,以保留表達文字計量所需的精確度。 這些裝置會以較高解析度回報裝置單位,也就是文字單位。 這些裝置接著會調整圖形的座標,讓數個回報的裝置單位只對應到1個圖形單位。 您應該一律使用文字單位呼叫 函 SelectClipRgn 式。

必須採用 GDI 中圖形物件縮放的應用程式可以使用 GETSCALINGFACTOR 印表機逸出來判斷縮放比例。 此縮放比例會影響裁剪。 如果使用區域來裁剪圖形,GDI 會將座標除以縮放比例。 如果區域用來裁剪文字,GDI 不會調整縮放比例。 縮放比例為 1 會導致座標除以 2;縮放比例為 2 會導致座標除以 4;等等。

CDC::SelectObject

將物件選取到裝置內容中。

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);

參數

pPen
要選取之物件的指標 CPen

pBrush
要選取之物件的指標 CBrush

pFont
要選取之物件的指標 CFont

pBitmap
要選取之物件的指標 CBitmap

pRgn
要選取之物件的指標 CRgn

pObject
要選取之物件的指標 CGdiObject

傳回值

要取代之物件的指標。 這是衍生自 CGdiObject之其中一個類別之物件的指標,例如 CPen,視所使用的函式版本而定。 如果發生錯誤,則傳回值 NULL 為 。 此函式可能會傳回暫存物件的指標。 這個暫存物件只有在處理一個 Windows 訊息時才有效。 如需詳細資訊,請參閱CGdiObject::FromHandle

採用 region 參數的成員函式版本會執行與 SelectClipRgn 成員函式相同的工作。 其傳回值可以是下列任一項:

  • COMPLEXREGION 新的裁剪區域有重疊的框線。

  • ERROR 裝置內容或區域無效。

  • NULLREGION 新的裁剪區域是空的。

  • SIMPLEREGION 新的裁剪區域沒有重疊的框線。

備註

類別 CDC 針對特定類型的 GDI 物件提供五種特製化版本,包括畫筆、筆刷、字型、點陣圖和區域。 新選取的物件會取代相同類型的上一個物件。 例如,如果 pObject 的一般版本 SelectObject 指向 CPen 物件,函式會將目前的手寫筆取代為 所 pObject指定的手寫筆。

應用程式只能選取位圖到記憶體裝置內容,一次只能選取一個記憶體裝置內容。 位圖的格式必須是單色或與裝置內容相容;如果不是, SelectObject 則傳回錯誤。

針對 Windows 3.1 和更新版本, SelectObject 函式會傳回相同的值,不論是否用於元檔。 在舊版的 Windows 下, SelectObject 傳回非零值以成功,並在元檔中使用失敗時傳回 0。

CDC::SelectPalette

選取 所 pPalette 指定的邏輯調色盤做為裝置內容的選取調色盤物件。

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

參數

pPalette
識別要選取的邏輯選擇區。 這個調色盤必須已經使用 CPalette 成員函式 CreatePalette來建立。

bForceBackground
指定邏輯調色盤是否強制為背景調色盤。 如果 bForceBackground 為非零,則不論視窗是否具有輸入焦點,選取的調色盤一律為背景調色盤。 如果 bForceBackground 為 0,且裝置內容會附加至視窗,當視窗具有輸入焦點時,邏輯調色盤是前景調色盤。

傳回值

物件的指標 CPalette ,識別由 所 pPalette指定之調色盤所取代的邏輯調色盤。 NULL如果發生錯誤,則為 。

備註

新的調色盤會成為 GDI 用來控制裝置內容中所顯示色彩的調色盤物件,並取代上一個調色盤。

應用程式可以將邏輯選擇區選取至多個裝置內容。 不過,邏輯調色盤的變更會影響其選取的所有裝置內容。 如果應用程式將調色盤選取為多個裝置內容,裝置內容必須全部屬於相同的實體裝置。

CDC::SelectStockObject

選取對應至其中一個 CGdiObject 預先定義的手寫筆、筆刷或字型的物件。

virtual CGdiObject* SelectStockObject(int nIndex);

參數

nIndex
指定所需的股票物件種類。 它可能是下列其中一個值:

  • BLACK_BRUSH 黑色筆刷。

  • DKGRAY_BRUSH 深灰色筆刷。

  • GRAY_BRUSH 灰色筆刷。

  • HOLLOW_BRUSH 空心筆刷。

  • LTGRAY_BRUSH 淺灰色筆刷。

  • NULL_BRUSH Null 筆刷。

  • WHITE_BRUSH 白色筆刷。

  • BLACK_PEN 黑筆。

  • NULL_PEN Null 手寫筆。

  • WHITE_PEN 白色畫筆。

  • ANSI_FIXED_FONT ANSI 固定系統字型。

  • ANSI_VAR_FONT ANSI 變數系統字型。

  • DEVICE_DEFAULT_FONT 裝置相依字型。

  • OEM_FIXED_FONT OEM 相依固定字型。

  • SYSTEM_FONT 系統字型。 根據預設,Windows 會使用系統字型來繪製功能表、對話框控件和其他文字。 不過,最好不要依賴 SYSTEM_FONT 來取得對話框和視窗所使用的字型。 請改用 SystemParametersInfo 函式搭配 參數來 SPI_GETNONCLIENTMETRICS 擷取目前的字型。 SystemParametersInfo 將目前的主題納入考慮,並提供標題、功能表和訊息對話框的字型資訊。

  • SYSTEM_FIXED_FONT 3.0 版之前的 Windows 中使用的固定寬度系統字型。 此物件可與舊版 Windows 相容。

  • DEFAULT_PALETTE 默認調色盤。 此調色盤包含系統調色盤中的 20 種靜態色彩。

傳回值

如果函式成功,則會取代物件的指標 CGdiObject 。 指向的實際物件是 CPenCBrushCFont 物件。 如果呼叫失敗,則傳回值為 NULL。

CDC::SetAbortProc

安裝列印作業的中止程式。

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

參數

lpfn
要安裝為中止程式的中止函式指標。 如需回呼函式的詳細資訊,請參閱 的回呼函式 CDC::SetAbortProc

傳回值

指定函式 SetAbortProc 的結果。 下列其中一些值比其他值更可能,但所有值都可能。

  • SP_ERROR 一般錯誤。

  • SP_OUTOFDISK 目前沒有足夠的磁碟空間可供多任務緩衝處理使用,且不會再使用任何空間。

  • SP_OUTOFMEMORY 沒有足夠的記憶體可用於多任務緩衝處理。

  • SP_USERABORT 使用者透過列印管理員結束作業。

備註

如果應用程式允許在多任務緩衝處理期間取消列印作業,則必須在列印作業以成員函式啟動 StartDoc 之前設定中止函式。 列印管理員會在多任務緩衝處理期間呼叫中止函式,以允許應用程式取消列印作業或處理磁碟空間不足的情況。 如果未設定中止函式,如果沒有足夠的磁碟空間進行多任務緩衝處理,列印作業將會失敗。

Microsoft Visual C++的功能可簡化傳遞至 SetAbortProc的回呼函式的建立。 傳遞至成員函式的 EnumObjects 位址是使用 和呼叫慣例導出 __declspec(dllexport) 之函式的 __stdcall 指標。

您也不需要在應用程式模組定義檔案的 語句中 EXPORTS 匯出函式名稱。 您可以改用 函 EXPORT 式修飾詞,如同 in

BOOL CALLBACK EXPORT AFunction( HDC, int );

會導致編譯程式發出適當的導出記錄,以依名稱匯出而不產生別名。 這適用於大部分的需求。 對於某些特殊案例,例如藉由序數或將導出的別名匯出函式,您仍然需要在模組定義檔案中使用 EXPORTS 語句。

回呼註冊介面現在的類型安全(您必須傳入指向特定回呼正確函式類型的函式指標)。

所有回呼函式都必須在返回 Windows 之前Microsoft基礎例外狀況,因為無法跨回呼界限擲回例外狀況。 如需例外狀況的詳細資訊,請參閱例外狀況一文

CDC::SetArcDirection

設定要用於弧線和矩形函式的繪圖方向。

int SetArcDirection(int nArcDirection);

參數

nArcDirection
指定新的弧線方向。 此參數可以是下列其中一個值:

  • AD_COUNTERCLOCKWISE 以逆時針方式繪製的圖。

  • AD_CLOCKWISE 以順時針方式繪製的數位。

傳回值

如果成功,則指定舊的弧形方向;否則為 0。

備註

默認方向為逆時針方向。 函 SetArcDirection 式會指定下列函式繪製的方向:

Arc 圓形圖
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

呼叫此函式以設定屬性裝置內容 m_hAttribDC

virtual void SetAttribDC(HDC hDC);

參數

hDC
Windows 裝置內容。

備註

此成員函式不會將裝置內容附加至 CDC 物件。 只有輸出裝置內容會附加至 CDC 物件。

CDC::SetBkColor

將目前的背景色彩設定為指定的色彩。

virtual COLORREF SetBkColor(COLORREF crColor);

參數

crColor
指定新的背景色彩。

傳回值

上一個背景色彩做為 RGB 色彩值。 如果發生錯誤,傳回值會0x80000000。

備註

如果背景模式為 OPAQUE,則系統會使用背景色彩來填滿樣式線條的間距、筆刷中影線之間的間距,以及字元單元格中的背景。 在色彩與單色裝置內容之間轉換點陣圖時,系統也會使用背景色彩。

如果裝置無法顯示指定的色彩,系統會將背景色彩設定為最接近的實體色彩。

CDC::SetBkMode

設定背景模式。

int SetBkMode(int nBkMode);

參數

nBkMode
指定要設定的模式。 此參數可以是下列其中一個值:

  • OPAQUE 背景會在繪製文字、影線筆刷或畫筆之前填入目前的背景色彩。 這是預設的背景模式。

  • TRANSPARENT 繪製之前不會變更背景。

傳回值

上一個背景模式。

備註

背景模式會定義系統在繪製文字、影線筆刷或任何不是實線的畫筆樣式之前,移除繪圖介面上現有的背景色彩。

範例

請參閱 CWnd::OnCtlColor 的範例。

CDC::SetBoundsRect

控制指定裝置內容的周框信息的累積。

UINT SetBoundsRect(
    LPCRECT lpRectBounds,
    UINT flags);

參數

lpRectBounds
RECT指向用來設定周框的結構或CRect物件。 矩形維度會以邏輯座標來指定。 這個參數可以是 NULL

flags
指定新矩形如何與累積矩形結合。 此參數可以是下列值的組合:

  • DCB_ACCUMULATE 將 指定的 lpRectBounds 矩形新增至周框(使用矩形聯集運算)。

  • DCB_DISABLE 關閉界限累積。

  • DCB_ENABLE 開啟界限累積。 (已停用界限累積的預設設定。

傳回值

如果函式成功,則為周框的目前狀態。 如同 flags,傳回值可以是值的組合 DCB_

  • DCB_ACCUMULATE 周框不是空的。 此值一律會設定。

  • DCB_DISABLE 界限累積已關閉。

  • DCB_ENABLE 界限累積為開啟。

備註

Windows 可以維護所有繪圖作業的周框。 應用程式可以查詢和重設此矩形。 繪圖界限對於使位圖快取失效很有用。

CDC::SetBrushOrg

指定 GDI 將指派給應用程式選取到裝置內容中的下一個筆刷的來源。

CPoint SetBrushOrg(
    int x,
    int y);

CPoint SetBrushOrg(POINT point);

參數

x
指定新原點的 X 座標(以裝置單位為單位)。 此值必須介於 0-7 的範圍內。

y
指定新原點的 Y 座標(以裝置單位為單位)。 此值必須介於 0-7 的範圍內。

point
指定新原點的 X 和 Y 座標。 每個值都必須在 0-7 的範圍內。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

裝置單位中筆刷的上一個原點。

備註

筆刷原點的預設座標為 (0, 0)。 若要改變筆刷的來源,請呼叫 UnrealizeObject CBrush 物件的函式、呼叫 SetBrushOrg,然後呼叫 SelectObject 成員函式以選取筆刷到裝置內容中。

請勿與庫存CBrush物件搭配使用SetBrushOrg

CDC::SetColorAdjustment

使用指定的值設定裝置內容的色彩調整值。

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

參數

lpColorAdjust
COLORADJUSTMENT指向包含色彩調整值的數據結構。

傳回值

如果成功則為非零;否則為 0。

備註

設定模式時HALFTONE,會使用色彩調整值來調整來源位圖的輸入色彩,以呼叫CDC::StretchBlt成員函式。

CDC::SetDCBrushColor

將目前的裝置內容 (DC) 筆刷色彩設定為指定的色彩值。

COLORREF SetDCBrushColor(COLORREF crColor);

參數

crColor
指定新的筆刷色彩。

傳回值

如果函式成功,傳回值會將先前的 DC 筆刷色彩指定為 COLORREF 值。

如果函式失敗,傳回值為 CLR_INVALID

備註

此方法會模擬 函式的功能 SetDCBrushColor,如 Windows SDK 中所述。

CDC::SetDCPenColor

將目前的裝置內容 (DC) 畫筆色彩設定為指定的色彩值。

COLORREF SetDCPenColor(COLORREF crColor);

參數

crColor
指定新的畫筆色彩。

傳回值

如果函式成功則為非零,否則為 0。

備註

此成員函式會利用 Win32 函 SetDCPenColor式 ,如 Windows SDK 中所述。

CDC::SetGraphicsMode

設定指定裝置內容的圖形模式。

int SetGraphicsMode(int iMode);

參數

iMode
指定圖形模式。 如您參數可接受的值清單,請參閱 SetGraphicsMode

傳回值

傳回成功時的舊圖形模式。

在失敗時傳回 0。 若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

這個方法會包裝 Windows GDI 函式 SetGraphicsMode

CDC::SetLayout

呼叫此成員函式,將裝置內容的文字和圖形配置變更為由右至左,這是阿拉伯文和希伯來文等文化特性的標準版面配置。

DWORD SetLayout(DWORD dwLayout);

參數

dwLayout
裝置內容配置和點陣圖控件旗標。 它可以是下列值的組合。

意義
LAYOUT_BITMAPORIENTATIONPRESERVED 停用 對和CDC::StretchBlt呼叫CDC::BitBlt的任何反映。
LAYOUT_RTL 將預設水準版面配置設定為從右至左。
LAYOUT_LTR 將預設版面配置設定為由左至右。

傳回值

如果成功,裝置內容的上一個配置。

如果失敗,則 GDI_ERROR為 。 若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

一般而言,您不會呼叫 SetLayout 視窗。 相反地,您可以藉由設定 延伸視窗樣式 ,以 WS_EX_RTLREADING控制視窗的由右至左版面配置。 裝置內容,例如印表機或元檔,不會繼承此版面配置。 設定由右至左版面設定之裝置內容的唯一方式是呼叫 SetLayout

如果您呼叫 SetLayout(LAYOUT_RTL)SetLayout 則會自動將對應模式變更為 MM_ISOTROPIC。 因此,對的後續呼叫 GetMapMode 會傳回 MM_ISOTROPICMM_TEXT而不是 。

在某些情況下,例如有許多位圖,您可能會想要保留由左至右的配置。 在這些情況下,呼叫 BitBltStretchBlt來轉譯影像,然後將 的點陣圖控件旗標 dwLayout 設定為 LAYOUT_BITMAPORIENTATIONPRESERVED

使用旗標變更版面配置 LAYOUT_RTL 之後,通常會反轉指定向右或左的旗標。 若要避免混淆,您可能想要定義標準旗標的替代名稱。 如需建議的替代旗標名稱清單,請參閱 SetLayout Windows SDK。

CDC::SetMapMode

設定對應模式。

virtual int SetMapMode(int nMapMode);

參數

nMapMode
指定新的對應模式。 它可以是下列任何一個值:

  • MM_ANISOTROPIC 邏輯單元會轉換成任意縮放座標軸的任意單位。 將對應模式設定為 MM_ANISOTROPIC 不會變更目前的視窗或檢視區設定。 若要變更單位、方向和縮放比例,請呼叫 SetWindowExtSetViewportExt 成員函式。

  • MM_HIENGLISH 每個邏輯單元都會轉換成0.001英吋。 正 x 向右;正 y 向上。

  • MM_HIMETRIC 每個邏輯單元都會轉換成0.01公厘。 正 x 向右;正 y 向上。

  • MM_ISOTROPIC 邏輯單元會轉換成具有同樣縮放座標軸的任意單位;也就是說,沿著 x 軸的 1 個單位等於 1 個單位沿著 y 軸。 SetWindowExt使用和 SetViewportExt 成員函式來指定所需的單位和座標軸的方向。 GDI 會視需要進行調整,以確保 x 和 y 單位維持相同的大小。

  • MM_LOENGLISH 每個邏輯單元都會轉換成0.01英吋。 正 x 向右;正 y 向上。

  • MM_LOMETRIC 每個邏輯單元都會轉換成0.1公厘。 正 x 向右;正 y 向上。

  • MM_TEXT 每個邏輯單元都會轉換成1個裝置圖元。 正 x 向右;正 y 已關閉。

  • MM_TWIPS 每個邏輯單元都會轉換成點的 1/20。 (因為點是 1/72 英吋,Twip 是 1/1440 英吋。正 x 向右;正 y 向上。

傳回值

上一個對應模式。

備註

對應模式會定義用來將邏輯單元轉換成裝置單位的測量單位;它也會定義裝置 x 軸和 y 軸的方向。 GDI 會使用對應模式,將邏輯座標轉換成適當的裝置座標。 模式 MM_TEXT 可讓應用程式在裝置圖元中運作,其中1個單位等於1圖元。 像素的實際大小會因裝置而異。

MM_HIENGLISHMM_HIMETRICMM_LOENGLISHMM_LOMETRICMM_TWIPS 模式對於必須以實際有意義的單位繪製的應用程式很有用(例如英吋或公厘)。 模式 MM_ISOTROPIC 可確保 1:1 外觀比例,這在保留影像的確切形狀相當重要時很有用。 模式 MM_ANISOTROPIC 可讓 x 和 y 座標獨立調整。

注意

如果您呼叫 SetLayout 將 DC (裝置內容) 變更為右至左設定, SetLayout 則會自動將對應模式變更為 MM_ISOTROPIC

範例

請參閱 CView::OnPrepareDC 的範例。

CDC::SetMapperFlags

變更字型對應程式將邏輯字型轉換成實體字型時所使用的方法。

DWORD SetMapperFlags(DWORD dwFlag);

參數

dwFlag
指定字型對應程式是否嘗試比對裝置的字型外觀高度和寬度。 當此值為 ASPECT_FILTERING時,對應程式只會選取 x-aspect 和 y-aspect 完全符合指定裝置的字型。

傳回值

字型對應程式旗標的先前值。

備註

應用程式可用來 SetMapperFlags 讓字型對應程式嘗試只選擇完全符合指定裝置外觀比例的實體字型。

只使用點陣字型的應用程式可以使用 函 SetMapperFlags 式,確保字型對應程式所選取的字型在指定的裝置上具有吸引力且可讀性。 使用可調整 (TrueType) 字型的應用程式通常不會使用 SetMapperFlags

如果沒有實體字型具有符合邏輯字型規格的外觀比例,GDI 會選擇新的外觀比例,並選取符合這個新外觀比例的字型。

CDC::SetMiterLimit

設定裝置內容之Miter聯結長度的限制。

BOOL SetMiterLimit(float fMiterLimit);

參數

fMiterLimit
指定裝置內容的新Miter限制。

傳回值

如果函式成功則為非零,否則為 0。

備註

誤點長度定義為與聯結外部線牆交集的線牆交集與聯結外部線牆交集的距離。 Miter 限制是Miter長度與線條寬度的最大允許比率。 預設的Miter限制為10.0。

CDC::SetOutputDC

通叫此成員函式以設定輸出裝置內容 m_hDC

virtual void SetOutputDC(HDC hDC);

參數

hDC
Windows 裝置內容。

備註

只有當裝置內容尚未附加至 CDC 物件時,才能呼叫此成員函式。 這個成員函式會設定 m_hDC ,但不會將裝置內容附加至 CDC 物件。

CDC::SetPixel

將指定之點的像素設定為 所 crColor指定之色彩最接近的近似值。

COLORREF SetPixel(
    int x,
    int y,
    COLORREF crColor);

COLORREF SetPixel(
    POINT point,
    COLORREF crColor);

參數

x
指定要設定之點的邏輯 x 座標。

y
指定要設定之點的邏輯 Y 座標。

crColor
COLORREF RGB 值,指定用來繪製點的色彩。 如需此值的描述,請參閱 COLORREF Windows SDK。

point
指定要設定之點的邏輯 x 和 Y 座標。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

繪製點之色彩的 RGB 值。 如果使用該色彩的近似值,這個值可能會與指定的 crColor 值不同。 如果函式失敗(如果點位於裁剪區域之外),則傳回值為 -1。

備註

點必須位於裁剪區域中。 如果點不在裁剪區域中,函式就不會執行任何動作。

並非所有的裝置皆支援 SetPixel 函式。 若要判斷裝置是否支援 SetPixel,請使用RASTERCAPS索引呼叫GetDeviceCaps成員函式,並檢查旗標的RC_BITBLT傳回值。

CDC::SetPixelV

將指定座標的像素設定為最接近指定色彩的近似值。

BOOL SetPixelV(
    int x,
    int y,
    COLORREF crColor);

BOOL SetPixelV(
    POINT point,
    COLORREF crColor);

參數

x
指定要設定之點的邏輯單位 X 座標。

y
指定要設定之點的邏輯單位的 Y 座標。

crColor
指定要用來繪製點的色彩。

point
指定要設定之點的邏輯 x 和 Y 座標。 您可以傳遞 POINT 此參數的數據結構或 CPoint 物件。

傳回值

如果函式成功則為非零,否則為 0。

備註

點必須同時位於裁剪區域和裝置介面的可見部分。 並非所有裝置都支持成員函式。 如需詳細資訊,請參閱 RC_BITBLT 成員函式中的 CDC::GetDeviceCaps 功能。 SetPixelV 速度比 快, SetPixel 因為它不需要傳回繪製點的色彩值。

CDC::SetPolyFillMode

設定多邊形填滿模式。

int SetPolyFillMode(int nPolyFillMode);

參數

nPolyFillMode
指定新的填滿模式。 這個值可以是 ALTERNATEWINDING。 Windows 中設定的預設模式為 ALTERNATE

傳回值

如果成功,則為先前的填滿模式;否則為 0。

備註

當多邊形填滿模式為 ALTERNATE時,系統會在每個掃描線的奇數和偶數多邊形兩側之間填滿區域。 也就是說,系統會填滿第一和第二端、第三面和第四端之間的區域,依此填滿。 此為「預設」模式。

當多邊形填滿模式為 WINDING時,系統會使用繪製圖形的方向來判斷是否要填滿區域。 多邊形中的每個線條區段都會以順時針方向或逆時針方向繪製。 每當從封閉區域繪製到圖形外部的虛線通過順時針線段時,計數就會遞增。 當線條通過逆時針線段時,計數會遞減。 當線條到達圖表外部時,如果計數為非零,則會填滿區域。

CDC::SetROP2

設定目前的繪圖模式。

int SetROP2(int nDrawMode);

參數

nDrawMode
指定新的繪圖模式。 它可以是下列任何一個值:

  • R2_BLACK 圖元一律為黑色。

  • R2_WHITE 圖元一律為白色。

  • R2_NOP 圖元保持不變。

  • R2_NOT 像素是螢幕色彩的反函數。

  • R2_COPYPEN 像素是畫筆色彩。

  • R2_NOTCOPYPEN 像素是畫筆色彩的反值。

  • R2_MERGEPENNOT 像素是畫筆色彩和螢幕色彩反轉的組合(最終圖元 = (~ 螢幕圖元) | 手寫筆。

  • R2_MASKPENNOT像素是畫筆和螢幕反轉的色彩組合(最終圖元 = (~螢幕圖元) 畫筆。 &

  • R2_MERGENOTPEN 像素是螢幕色彩和畫筆色彩反轉的組合(最終圖元 = (~ 畫筆) | 螢幕圖元。

  • R2_MASKNOTPEN 像素是螢幕和畫筆反轉的色彩組合(最終圖元 = (~ 畫筆) & 螢幕圖元。

  • R2_MERGEPEN 像素是畫筆色彩和螢幕色彩的組合(最終圖元 = 畫筆 | 螢幕圖元)。

  • R2_NOTMERGEPEN 像素是色彩的 R2_MERGEPEN 反轉值(最終圖元 = ~ (畫筆 | 螢幕圖元) 。

  • R2_MASKPEN 像素是畫筆和螢幕通用的色彩組合(最終圖元 = 畫筆 & 螢幕圖元)。

  • R2_NOTMASKPEN 像素是色彩的 R2_MASKPEN 反轉值(最終圖元 = ~ (畫筆 & 螢幕圖元) 。

  • R2_XORPEN 圖元是畫筆或螢幕中色彩的組合,但不在兩者中(最終圖元 = 畫筆 ^ 螢幕圖元)。

  • R2_NOTXORPEN 像素是色彩的 R2_XORPEN 反轉值(最終圖元 = ~ (畫筆 ^ 螢幕圖元) 。

傳回值

上一個繪圖模式。

它可以是 Windows SDK 中提供的任何值。

備註

繪圖模式會指定畫筆和填滿物件內部的色彩如何與顯示介面上的色彩結合。

繪圖模式僅適用於點陣裝置;它不適用於向量裝置。 繪圖模式是二進位點陣運算程式代碼,代表兩個變數的所有可能布爾值組合,使用二元運算符 、 和 (獨佔 |), 和 一元運算 。^ |&~

CDC::SetStretchBltMode

設定成員函式的 StretchBlt 點陣圖延展模式。

int SetStretchBltMode(int nStretchMode);

參數

nStretchMode
指定延展模式。 它可以是下列任何一個值:

Description
BLACKONWHITE 使用消除和現有圖元的色彩值來執行布爾 & 運算。 如果點圖是單色位圖,此模式會以白色圖元為代價保留黑色圖元。
COLORONCOLOR 刪除圖元。 此模式會刪除所有消除的圖元行,而不嘗試保留其資訊。
HALFTONE 將來源矩形中的像素對應到目的地矩形中的像素區塊。 在像素的目的地區塊上的平均色彩近似於來源圖元的色彩。
設定 HALFTONE 延展模式之後,應用程式必須呼叫 Win32 函式 SetBrushOrgEx 來設定筆刷原點。 如果無法這麼做,就會發生筆刷不對齊。
STRETCH_ANDSCANS Windows 95/98:與相同 BLACKONWHITE
STRETCH_DELETESCANS Windows 95/98:與相同 COLORONCOLOR
STRETCH_HALFTONE Windows 95/98:與 HALFTONE相同。
STRETCH_ORSCANS Windows 95/98:與相同 WHITEONBLACK
WHITEONBLACK 使用消除和現有圖元的色彩值來執行布爾 | 運算。 如果點圖是單色位圖,此模式會以犧牲黑色圖元為代價保留白色圖元。

傳回值

先前的延展模式。 可以是 STRETCH_ANDSCANSSTRETCH_DELETESCANSSTRETCH_ORSCANS

備註

位圖延展模式會定義如何使用 函式,從壓縮的點陣圖中移除資訊。

BLACKONWHITESTRETCH_ANDSCANS) 和 WHITEONBLACKSTRETCH_ORSCANS) 模式通常用來在單色位圖中保留前景圖元。 COLORONCOLORSTRETCH_DELETESCANS) 模式通常用於保留色彩點陣圖中的色彩。

模式 HALFTONE 需要比其他三種模式更多的來源影像處理;其速度比其他模式慢,但會產生高品質的影像。 此外, SetBrushOrgEx 在設定 HALFTONE 模式之後必須呼叫 ,以避免筆刷不對齊。

視設備驅動器的功能而定,可能也可以使用更多延展模式。

CDC::SetTextAlign

設定文字對齊旗標。

UINT SetTextAlign(UINT nFlags);

參數

nFlags
指定文字對齊旗標。 旗標會指定點與系結文字的矩形之間的關聯性。 此點可以是文字輸出函式所指定的目前位置或座標。 系結文字的矩形是由文字字串中的相鄰字元儲存格所定義。 參數 nFlags 可以是下列三個類別的一或多個旗標。 從每個類別中只選擇一個旗標。 第一個類別會影響 x 方向的文字對齊方式:

  • TA_CENTER 對齊點與周框的水準中心。

  • TA_LEFT 對齊點與周框的左邊。 這是預設設定。

  • TA_RIGHT 對齊點與周框右側。

第二個類別會影響Y方向的文字對齊方式:

  • TA_BASELINE 對齊點與所選字型的底線。

  • TA_BOTTOM 對齊點與周框底部。

  • TA_TOP 對齊點與周框頂端。 這是預設設定。

第三個類別會決定是否在寫入文字時更新目前的位置:

  • TA_NOUPDATECP 不會在每次呼叫文字輸出函式之後更新目前的位置。 這是預設設定。

  • TA_UPDATECP 在每次呼叫文字輸出函式之後,更新目前的 x 位置。 新位置位於文字周框右側。 設定此旗標時,會忽略呼叫 TextOut 成員函式中指定的座標。

傳回值

如果成功,則為先前的文字對齊設定。 低序位元組包含水平設定,而高階位元組則包含垂直設定:否則為 0。

備註

TextOutExtTextOut 成員函式會在顯示或裝置上放置文字字串時使用這些旗標。 旗標會指定特定點與限定文字的矩形之間的關聯性。 這個點的座標會當做參數傳遞至 TextOut 成員函式。 系結文字的矩形是由文字字串中的相鄰字元儲存格所組成。

CDC::SetTextCharacterExtra

設定字元間距的數量。

int SetTextCharacterExtra(int nCharExtra);

參數

nCharExtra
指定要新增至每個字元的額外空間量(以邏輯單位為單位)。 如果目前的對應模式不是 MM_TEXTnCharExtra 則會轉換並四捨五入為最接近的圖元。

傳回值

上一個字元間距的數量。

備註

GDI 會在將文字行寫入裝置內容時,將這個間距新增至每個字元,包括斷字元。 字元間距的預設值為 0。

CDC::SetTextColor

將文字色彩設定為指定的色彩。

virtual COLORREF SetTextColor(COLORREF crColor);

參數

crColor
將文字的色彩指定為 RGB 色彩值。

傳回值

先前文字色彩的 RGB 值。

備註

當將文字寫入此裝置內容,以及在色彩與單色裝置內容之間轉換位圖時,系統會使用此文字色彩。

如果裝置無法代表指定的色彩,系統會將文字色彩設定為最接近的實體色彩。 字元的背景色彩是由 SetBkColorSetBkMode 成員函式所指定。

範例

請參閱 CWnd::OnCtlColor 的範例。

CDC::SetTextJustification

將空格新增至字串中的分隔字元。

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

參數

nBreakExtra
指定要新增至文字行的總額外空間(以邏輯單位為單位)。 如果目前的對應模式不是 MM_TEXT,則此參數所提供的值會轉換成目前的對應模式,並四捨五入到最接近的裝置單位。

nBreakCount
指定行中的斷字元數。

傳回值

如果函式成功,則為其中一個;否則為 0。

備註

應用程式可以使用 GetTextMetrics 成員函式來擷取字型的斷字元。

SetTextJustification呼叫成員函式之後,對文字輸出函式的呼叫會TextOut平均分散指定的額外空間,以平均方式分散指定的斷字元數目。 斷字元通常是空格元(ASCII 32),但可能由字型定義為其他字元。

成員函 GetTextExtent 式通常搭配 SetTextJustification使用。 GetTextExtent 會計算對齊前指定線條的寬度。 應用程式可以藉由在對齊之後從字串寬度減去 所傳回GetTextExtent的值,判斷參數中nBreakExtra要指定多少空間。

SetTextJustification 式可用來對齊包含不同字型中多個回合的線條。 在此情況下,必須藉由個別對齊和寫入每個回合來建立分行。

因為在對齊期間可能會發生四捨五入錯誤,因此系統會保留定義目前錯誤的執行錯誤字詞。 對齊包含多個執行的行時, GetTextExtent 會在計算下一次執行的範圍時,自動使用這個錯誤字詞。 這可讓文字輸出函式將錯誤混合到新的執行中。

對齊每一行之後,必須清除這個錯誤字詞,以防止它併入下一行。 呼叫 設為 0 即可清除SetTextJustificationnBreakExtra字詞。

CDC::SetViewportExt

設定裝置內容的檢視區 X 和 Y 範圍。

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

參數

cx
指定檢視區的 x 範圍(以裝置單位為單位)。

cy
指定檢視區的 Y 範圍(以裝置單位為單位)。

size
指定檢視區的 x 和 Y 範圍(以裝置單位為單位)。

傳回值

檢視區先前的範圍做為 CSize 物件。 發生錯誤時,傳 CSize 回物件的 x 和 y 座標都會設定為 0。

備註

檢視區以及裝置內容視窗,定義 GDI 如何將邏輯座標系統中的點對應至實際裝置座標系統中的點。 換句話說,他們會定義 GDI 如何將邏輯座標轉換成裝置座標。

設定下列對應模式時,會忽略 對和 SetViewportExtSetWindowExt呼叫:

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

設定模式時 MM_ISOTROPIC ,應用程式必須先呼叫成員函式, SetWindowExt 才能呼叫 SetViewportExt

範例

請參閱 CView::OnPrepareDC 的範例。

CDC::SetViewportOrg

設定裝置內容的檢視區原點。

virtual CPoint SetViewportOrg(
    int x,
    int y);

CPoint SetViewportOrg(POINT point);

參數

x
指定檢視區原點的 X 座標(以裝置單位為單位)。 此值必須位於裝置座標系統的範圍內。

y
指定檢視區原點的 Y 座標(以裝置單位為單位)。 此值必須位於裝置座標系統的範圍內。

point
指定檢視區的原點。 這些值必須位於裝置座標系統的範圍內。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

檢視區上一個原點(在裝置座標中),做為 CPoint 物件。

備註

檢視區以及裝置內容視窗,定義 GDI 如何將邏輯座標系統中的點對應至實際裝置座標系統中的點。 換句話說,他們會定義 GDI 如何將邏輯座標轉換成裝置座標。

檢視區原點會標記 GDI 對應視窗原點的裝置座標系統中的點,這是成員函式所指定的邏輯座標系統中的 SetWindowOrg 點。 GDI 會遵循將視窗原點對應至檢視區原點所需的相同程式,以對應所有其他點。 例如,視窗原點周圍圓圈中的所有點都會在檢視區原點周圍的圓形中。 同樣地,通過視窗原點之線條中的所有點都會位於通過檢視區原點的行中。

範例

請參閱 CView::OnPrepareDC 的範例。

CDC::SetWindowExt

設定與裝置內容相關聯的視窗 X 和 Y 範圍。

virtual CSize SetWindowExt(
    int cx,
    int cy);

CSize SetWindowExt(SIZE size);

參數

cx
指定視窗的 x 範圍(以邏輯單位為單位)。

cy
指定視窗的 Y 範圍(以邏輯單位為單位)。

size
指定視窗的 x 和 Y 範圍(以邏輯單位為單位)。

傳回值

視窗先前的範圍(以邏輯單位為單位)做為 CSize 物件。 如果發生錯誤,傳回 CSize 物件的 x 和 y 座標都會設定為 0。

備註

視窗以及裝置內容檢視區,定義 GDI 如何將邏輯座標系統中的點對應到裝置座標系統中的點。

設定下列對應模式時,會忽略對 和函SetViewportExt式的SetWindowExt呼叫:

  • MM_HIENGLISH

  • MM_HIMETRIC

  • MM_LOENGLISH

  • MM_LOMETRIC

  • MM_TEXT

  • MM_TWIPS

設定模式時 MM_ISOTROPIC ,應用程式必須先呼叫成員函式, SetWindowExt 才能呼叫 SetViewportExt

範例

請參閱 CView::OnPrepareDC 的範例。

CDC::SetWindowOrg

設定裝置內容的視窗原點。

CPoint SetWindowOrg(
    int x,
    int y);

CPoint SetWindowOrg(POINT point);

參數

x
指定視窗新原點的邏輯 X 座標。

y
指定視窗新原點的邏輯 Y 座標。

point
指定視窗新原點的邏輯座標。 您可以傳遞這個參數的結構 POINTCPoint 物件。

傳回值

視窗的上一個原始來源做為 CPoint 物件。

備註

視窗以及裝置內容檢視區,定義 GDI 如何將邏輯座標系統中的點對應到裝置座標系統中的點。

視窗原點會標記 GDI 對應檢視區原點的邏輯座標系統中的點,這是函式所指定的裝置座標系統中的 SetWindowOrg 點。 GDI 會遵循將視窗原點對應至檢視區原點所需的相同程式,以對應所有其他點。 例如,視窗原點周圍圓圈中的所有點都會在檢視區原點周圍的圓形中。 同樣地,通過視窗原點之線條中的所有點都會位於通過檢視區原點的行中。

CDC::SetWorldTransform

設定指定裝置內容之世界空間與頁面空間之間的二維線性轉換。 此轉換可用來縮放、旋轉、剪下或轉譯圖形輸出。

BOOL SetWorldTransform(const XFORM& rXform);

參數

rXform
XFORM包含轉換數據的 結構參考。

傳回值

傳回成功時的非零值。

在失敗時傳回 0。

若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

這個方法會包裝 Windows GDI 函式 SetWorldTransform

CDC::StartDoc

通知設備驅動器,新的列印作業正在啟動,而且所有後續 StartPageEndPage 呼叫都應該在相同的作業下多任務緩衝處理,直到 EndDoc 呼叫發生為止。

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

參數

lpDocInfo
指向 DOCINFO 包含檔檔名稱和輸出檔名稱的結構。

lpszDocName
包含文件名稱的字串指標。

傳回值

如果函式成功,傳回值會大於零。 此值是檔的列印作業標識碼。

如果函式失敗,傳回值會小於或等於零。

備註

這可確保文件超過一頁不會與其他作業交織在一起。

針對 Windows 3.1 版和更新版本,此函式會 STARTDOC 取代印表機逸出。 使用此函式可確保包含多個頁面的檔不會與其他列印作業交織在一起。

StartDoc 不應該在元檔內使用。

範例

此代碼段會取得預設印表機、開啟列印作業,並在其中多任務緩衝處理一頁,其中包含 “Hello, World!” 。 由於此程式代碼所列印的文字不會調整為印表機的邏輯單元,所以輸出文字可能以如此小的字母表示無法讀取結果。 CDC 調整函式,例如 SetMapModeSetViewportOrgSetWindowExt,可用來修正調整。

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

呼叫此成員函式來準備印表機驅動程式以接收數據。

int StartPage();

傳回值

如果函式成功,則大於或等於 0,如果發生錯誤,則為負值。

備註

StartPageNEWFRAME取代和 BANDINFO 逸出。

如需列印呼叫順序的概觀,請參閱 StartDoc 成員函式。

系統會在 ResetDC 呼叫 StartPageEndPage之間停用成員函式。

範例

請參閱 CDC::StartDoc 的範例。

CDC::StretchBlt

將來源矩形的點陣圖複製到目的地矩形,必要時可延伸或壓縮點陣圖,使其符合目的地矩形的維度。

BOOL StretchBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwRop);

參數

x
指定目的地矩形左上角的 X 座標 (以邏輯單位表示)。

y
指定目的地矩形左上角的 Y 座標 (以邏輯單位表示)。

nWidth
指定目的地矩形的寬度 (以邏輯單位表示)。

nHeight
指定目的地矩形的高度 (以邏輯單位表示)。

pSrcDC
指定來源裝置內容。

xSrc
指定來源矩形左上角的 X 座標 (以邏輯單位表示)。

ySrc
指定來源矩形左上角的 Y 座標 (以邏輯單位表示)。

nSrcWidth
指定來源矩形的寬度 (以邏輯單位表示)。

nSrcHeight
指定來源矩形的高度 (以邏輯單位表示)。

dwRop
指定待執行的點陣作業。 點陣作業程式碼定義 GDI 在輸出作業中結合色彩的方式;該輸出作業與目前的筆刷、可能的來源點陣圖和目的地點陣圖相關。 這個參數可以是下列其中一個值:

  • BLACKNESS 將所有輸出變成黑色。

  • DSTINVERT 反轉目的地點陣圖。

  • MERGECOPY 使用布爾 AND 運算子結合模式和來源位圖。

  • MERGEPAINT 使用布爾值 OR 運算符,將反向來源位圖與目的地點圖結合。

  • NOTSRCCOPY 將反向來源位圖複製到目的地。

  • NOTSRCERASE反轉使用布爾 OR 運算符結合目的地和來源位圖的結果。

  • PATCOPY 將模式複製到目的地點陣圖。

  • PATINVERT 使用布爾 XOR 運算子結合目的地點陣圖與模式。

  • PATPAINT 使用布爾 值 OR 運算符,將反向來源位圖與模式結合。 使用布爾 OR 運算符,結合此作業的結果與目的地點陣圖。

  • SRCAND 使用布爾 AND 運算子結合目的地和來源位圖的圖元。

  • SRCCOPY 將來源位圖複製到目的地點陣圖。

  • SRCERASE 反轉目的地位圖,並使用布爾 AND 運算子將結果與來源位圖結合。

  • SRCINVERT 使用布爾 XOR 運算子結合目的地和來源位圖的圖元。

  • SRCPAINT 使用布爾 OR 運算子結合目的地和來源位圖的圖元。

  • WHITENESS 將所有輸出變成白色。

傳回值

如果繪製了點陣圖即為非零,否則為 0。

備註

此函式使用目的地裝置內容 (以 SetStretchBltMode 設定) 的縮放模式判斷如何縮放或壓縮點陣圖。

StretchBlt 式會將 所 pSrcDC 指定來源裝置的點陣圖移至呼叫其成員函式之 device-context 物件所代表的目的地裝置。 xSrcySrcnSrcWidthnSrcHeight 參數會定義來源矩形的左上角和維度。 xynWidthnHeight 參數會提供目的矩形的左上角和維度。 所 dwRop 指定的點陣作業會定義來源位圖和目的地裝置上已經位的結合方式。

如果與或與參數的標誌不同,函StretchBlt式會建立點陣圖的nSrcWidth鏡像影像。nHeight nSrcHeight nWidth 如果 nSrcWidthnWidth 有不同的符號,函式會沿著 X 軸建立位圖的鏡像影像。 如果 nSrcHeightnHeight 有不同的符號,函式會沿著Y軸建立位圖的鏡像影像。

StretchBlt 函式會延伸或壓縮記憶體中的來源點陣圖,然後將結果複製到目的地。 如果模式要與結果合併,則在將延展的來源位圖複製到目的地之前,不會合併該模式。 如果使用筆刷,則會是目的地裝置內容中選取的筆刷。 目的地座標會根據目的地裝置內容而轉換;來源座標會根據來源裝置內容而轉換。

如果目的地、來源和圖樣位圖沒有相同的色彩格式, StretchBlt 則會轉換來源和圖樣位圖以符合目的地點陣圖。 轉換中會使用目的地裝置内容的前景和背景色彩。

如果 StretchBlt 必須將單色點陣圖轉換為彩色,會將白色位元 (1) 設為背景色彩,並將黑色位元 (0) 設為前景色彩。 若要將彩色轉換為單色,則會將符合背景色彩的像素轉換成白色 (1),並將其他所有像素設為黑色 (0)。 會使用彩色裝置內容的前景和背景色彩。

並非所有的裝置皆支援 StretchBlt 函式。 若要判斷裝置是否支援 StretchBlt,請使用RASTERCAPS索引呼叫GetDeviceCaps成員函式,並檢查旗標的RC_STRETCHBLT傳回值。

CDC::StrokeAndFillPath

關閉路徑中任何開啟的數位、使用目前的畫筆繪製路徑的外框,並使用目前的筆刷填滿其內部。

BOOL StrokeAndFillPath();

傳回值

如果函式成功則為非零,否則為 0。

備註

裝置內容必須包含關閉的路徑。 成員 StrokeAndFillPath 函式的效果與關閉路徑中所有開啟的數位相同,並且個別地劃動和填滿路徑,但即使畫筆寬,填滿區域也不會重疊筆劃區域。

CDC::StrokePath

使用目前的畫筆來轉譯指定的路徑。

BOOL StrokePath();

傳回值

如果函式成功則為非零,否則為 0。

備註

裝置內容必須包含關閉的路徑。

CDC::TabbedTextOut

呼叫這個成員函式,以在指定的位置寫入字元字串,將索引標籤展開至定位點位置陣列中指定的值。

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);

參數

x
指定字串起點的邏輯 X 座標。

y
指定字串起點的邏輯 Y 座標。

lpszString
指向要繪製的字元字串。 您可以傳遞指標給這個參數的字元陣列或 CString 物件。

nCount
指定lpszString指向之字串的長度。

nTabPositions
指定製表位位置陣列中的值數目。

lpnTabStopPositions
指向包含製表位位置的陣列(以邏輯單位為單位)。 製表位必須依遞增順序排序;最小的 x 值應該是陣列中的第一個專案。

nTabOrigin
指定索引標籤展開位置的 X 座標(以邏輯單位為單位)。

str
CString物件,包含指定的字元。

傳回值

字串的維度(以邏輯單位為單位)做為 CSize 物件。

備註

文字會以目前選取的字型撰寫。 如果 nTabPositions 為 0 且 lpnTabStopPositionsNULL,索引標籤會展開為平均字元寬度的八倍。

如果 nTabPositions 為 1,製表位會以數位中 lpnTabStopPositions 第一個值所指定的距離分隔。 lpnTabStopPositions如果數位包含一個以上的值,則會針對數位中的每個值設定製表位,最多為 所nTabPositions指定的數位。 參數 nTabOrigin 可讓應用程式針對單行呼叫 TabbedTextOut 函式數次。 如果應用程式每次多次呼叫函式,並將 nTabOrigin 設定為相同的值,則函式會展開相對於 所 nTabOrigin指定位置的所有索引標籤。

根據預設,函式不會使用或更新目前的位置。 如果應用程式在呼叫函式時需要更新目前的位置,應用程式可以呼叫 SetTextAlign 成員函式,並將 nFlags 設定為 TA_UPDATECP。 設定此旗標時,Windows 會改用目前的位置,在後續呼叫 TabbedTextOut時忽略 xy 參數。

CDC::TextOut

使用目前選取的字型,在指定的位置寫入字元字串。

virtual BOOL TextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount);

BOOL TextOut(
    int x,
    int y,
    const CString& str);

參數

x
指定文字起點的邏輯 X 座標。

y
指定文字起點的邏輯 Y 座標。

lpszString
指向要繪製的字元字串。

nCount
指定字串中的字元數。

str
CString 物件,其中包含要繪製的字元。

傳回值

如果函式成功則為非零,否則為 0。

備註

字元原點在字元儲存格的左上角。 根據預設,函式不會使用或更新目前的位置。

如果應用程式在呼叫 TextOut時需要更新目前的位置,則應用程式可以呼叫成員函式, SetTextAlign 並將 nFlags 設定為 TA_UPDATECP。 設定此旗標時,Windows 會改用目前的位置,在後續呼叫 TextOut時忽略 xy 參數。

範例

請參閱 CDC::BeginPath 的範例。

CDC::TransparentBlt

呼叫這個成員函式,將色彩數據的位區塊,對應至指定來源裝置內容中圖元矩形的圖元到目的地裝置內容。

BOOL TransparentBlt(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT clrTransparent);

參數

xDest
指定目的地矩形左上角的 X 座標,以邏輯單位表示。

yDest
指定目的地矩形左上角的 Y 座標,以邏輯單位表示。

nDestWidth
指定目的地矩形的邏輯單位寬度。

nDestHeight
指定目的地矩形的邏輯單位的高度。

pSrcDC
來源裝置內容的指標。

xSrc
指定來源矩形邏輯單位的 X 座標。

ySrc
指定來源矩形邏輯單位的 Y 座標。

nSrcWidth
指定來源矩形的邏輯單位寬度。

nSrcHeight
指定來源矩形邏輯單位的高度。

clrTransparent
要視為透明之來源位圖中的 RGB 色彩。

傳回值

如果成功,則為 TRUE,否則為 FALSE

備註

TransparentBlt 允許透明度;也就是說,所 clrTransparent 指示的 RGB 色彩會呈現為傳輸的透明。

如需詳細資訊,請參閱 TransparentBlt Windows SDK 中的 。

CDC::UpdateColors

藉由將工作區中的目前色彩與系統調色盤中的目前色彩逐圖元比對,以更新裝置內容的工作區。

void UpdateColors();

備註

具有已實現邏輯調色盤的非使用中視窗可能會呼叫 UpdateColors 做為在系統調色盤變更時重新繪製其工作區的替代方案。

如需使用調色盤的詳細資訊,請參閱 UpdateColors Windows SDK 中的 。

成員 UpdateColors 函式通常會比重新繪製區域更快更新工作區。 不過,由於函式會根據系統調色盤變更前每個圖元的色彩執行色彩轉譯,因此每次呼叫此函式會導致遺失某些色彩精確度。

CDC::WidenPath

使用目前選取的手寫筆繪製到裝置內容中的畫筆,將目前路徑重新定義為要繪製的區域。

BOOL WidenPath();

傳回值

如果函式成功則為非零,否則為 0。

備註

只有當目前的畫筆是第二版成員函式所建立的 CreatePen 幾何畫筆,或是使用 第一個版本的 CreatePen 建立畫筆且寬度大於 1 時,此函式才會成功。 裝置內容必須包含關閉的路徑。 路徑中的任何 Bzier 曲線會轉換成直線序列,以近似加寬曲線。 因此,在呼叫 之後 WidenPath ,沒有 Bzier 曲線保留在路徑中。

另請參閱

CObject 類別
階層架構圖表
CPaintDC
CWindowDC
CClientDC
CMetaFileDC