MFC CDC 类 公共方法:CDC::GetCharacterPlacement
在 MFC(Microsoft Foundation Classes)中,CDC::GetCharacterPlacement 是一个公共方法,用于获取字符的显示位置信息,通常用于高级文本布局和渲染。以下是 CDC::GetCharacterPlacement 方法的声明:DWORD GetCharacterPlacement(LPCTSTR lpString, int nCount, int nMaxExtent, LPGCP_RESULTS lpResults, DWORD dwFlags) const; lpString:要处理的字符串。 nCount:要处理的字符数。 nMaxExtent:指定字符串的最大宽度,如果设置为 -1,表示无限制。 lpResults:一个指向 GCP_RESULTS 结构的指针,用于接收字符位置信息。 dwFlags:标志,指定 GCP(GetCharacterPlacement)的选项。GCP_RESULTS 结构包含了字符位置信息:typedef struct tagGCP_RESULTS { DWORD lStructSize; ...
MFC CDC 类 公共方法:CDC::GetCharABCWidthsI
在 MFC(Microsoft Foundation Classes)中,CDC::GetCharABCWidthsI 是一个公共方法,用于获取指定字体的字符的 A、B、C 宽度。这个方法与 GetCharABCWidths 类似,但是它使用了索引而不是字符代码。以下是 CDC::GetCharABCWidthsI 方法的声明:BOOL GetCharABCWidthsI(UINT nFirstChar, UINT nLastChar, LPWORD lpwWidths) const; nFirstChar:要获取宽度信息的第一个字符的索引。 nLastChar:要获取宽度信息的最后一个字符的索引。 lpwWidths:指向 WORD 数组的指针,用于接收字符宽度的信息。WORD 数组中的每个元素包含一个字符的 A、B、C 宽度信息,依次存储。示例代码如下:WORD widthArray[256]; // 假设获取字符范围是 0 到 255BOOL success = myCDC.GetCharABCWidthsI(0, 255, widthArray);if (success) {...
MFC CDC 类 公共方法:CDC::GetCharABCWidths
在 MFC(Microsoft Foundation Classes)中,CDC::GetCharABCWidths 是一个公共方法,用于获取指定字体的字符的 A、B、C 宽度。这个方法返回字符宽度的详细信息,包括字符的左边界(A 宽度)、字符的右边界(C 宽度),以及字符的宽度(B 宽度)。以下是 CDC::GetCharABCWidths 方法的声明:BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabcArray) const; nFirstChar:要获取宽度信息的第一个字符的 ASCII 值。 nLastChar:要获取宽度信息的最后一个字符的 ASCII 值。 lpabcArray:指向 ABC 结构数组的指针,用于接收字符宽度的信息。ABC 结构包含了字符宽度的详细信息:typedef struct tagABC { int abcA; UINT abcB; int abcC;} ABC; abcA:字符左边界的宽度。 abcB:字符的宽度。 abcC:字符右边界的宽度。示例代...
MFC CDC 类 公共方法:CDC::GetBrushOrg
在 MFC(Microsoft Foundation Classes)中,CDC::GetBrushOrg 是一个公共方法,用于获取当前设备上下文(Device Context,CDC)中当前选择的画刷(brush)的原点。以下是 CDC::GetBrushOrg 方法的声明:CPoint GetBrushOrg() const;这个方法返回一个 CPoint 对象,表示当前选择的画刷的原点坐标。CPoint 类型包含 x 和 y 两个成员,分别表示横坐标和纵坐标。示例代码如下:CPoint brushOrg = myCDC.GetBrushOrg();int x = brushOrg.x;int y = brushOrg.y;这个方法通常在使用画刷进行绘图之前调用,以获取画刷的原点。画刷的原点是画刷模式的一个重要属性,它可以影响图形的填充效果。在某些情况下,你可能需要了解画刷的原点,以便进行适当的调整。请注意,在某些情况下,原点的坐标可能被忽略,具体取决于所使用的画刷和绘图操作。
MFC CDC 类 公共方法:CDC::GetBoundsRect
在 MFC(Microsoft Foundation Classes)中,CDC::GetBoundsRect 是一个公共方法,用于获取设备上下文(Device Context,CDC)的边界矩形(bounds rectangle)。边界矩形是设备上下文中绘图操作的边界,通常用于确定绘图的范围。以下是 CDC::GetBoundsRect 方法的声明:BOOL GetBoundsRect(LPRECT lpRect, UINT flags) const; lpRect:一个指向 RECT 结构的指针,用于接收边界矩形的坐标信息。 flags:标志,指定如何更新边界矩形。可以是下列值的组合: - DCB_RESET:将边界矩形重置为整个设备上下文区域。 - DCB_ACCUMULATE:将边界矩形添加到当前的边界矩形。该方法返回一个布尔值,指示操作是否成功。示例代码如下:CRect boundsRect;BOOL success = myCDC.GetBoundsRect(&boundsRect, DCB_RESET);if (success) { // 边界矩形的坐标...
MFC CDC 类 公共方法:CDC::GetBkMode
CDC::GetBkMode 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于获取当前设备上下文(Device Context,CDC)的背景模式。以下是 CDC::GetBkMode 方法的声明:int GetBkMode() const;这个方法返回一个整数值,表示当前设备上下文的背景模式。可能的返回值包括: OPAQUE:表示使用不透明的背景模式,即在绘制文本或图形前,原有的背景将被覆盖。 TRANSPARENT:表示使用透明的背景模式,即在绘制文本或图形前,保留原有的背景。示例代码如下:int backgroundMode = myCDC.GetBkMode();在绘图时,了解当前设备上下文的背景模式可以帮助你进行适当的绘图操作。例如,你可能需要在透明背景模式下绘制文本,以保留原有的背景,或者在不透明背景模式下绘制,以完全覆盖原有的背景。
MFC CDC 类 公共方法:CDC::GetBkColor
CDC::GetBkColor 是 MFC(Microsoft Foundation Classes)中的一个公共方法,用于获取当前设备上下文(Device Context,CDC)的背景颜色。以下是 CDC::GetBkColor 方法的声明:COLORREF GetBkColor() const;这个方法返回一个 COLORREF 类型的值,表示设备上下文的背景颜色。COLORREF 是一个32位的值,其中包含了红、绿和蓝三个颜色分量的信息。你可以使用这个方法来获取当前设备上下文中设置的背景颜色,例如:COLORREF backgroundColor = myCDC.GetBkColor();返回的 COLORREF 值可以通过一些宏来提取红、绿、蓝三个颜色分量的具体数值,例如 GetRValue、GetGValue、GetBValue。示例代码如下:BYTE redComponent = GetRValue(backgroundColor);BYTE greenComponent = GetGValue(backgroundColor);BYTE blueComponent = ...
MFC CDC 类 公共方法:CDC::GetAspectRatioFilter
在MFC(Microsoft Foundation Classes)中,CDC::GetAspectRatioFilter 是用于获取当前设备上下文(Device Context,CDC)的宽高比过滤器的公共方法。这个方法返回一个 CSize 对象,该对象包含了设备上下文中当前设置的宽高比过滤器。以下是 CDC::GetAspectRatioFilter 方法的声明:CSize GetAspectRatioFilter() const;CSize 类型通常用于表示二维的大小,其中包含宽度和高度。这个方法返回的 CSize 对象包含两个成员:cx 表示宽度,cy 表示高度。在调用 GetAspectRatioFilter 后,你可以通过访问返回的 CSize 对象的成员来获取宽高比过滤器的值。例如:CSize aspectRatio = myCDC.GetAspectRatioFilter();int width = aspectRatio.cx;int height = aspectRatio.cy;这个方法的主要作用是帮助你了解设备上下文中当前设置的宽高比过滤器,以便在绘制图形时进行...
MFC CDC 类 公共方法:CDC::GetArcDirection
CDC::GetArcDirection 方法是 MFC(Microsoft Foundation Classes)中的一个成员函数,它用于获取当前设备上下文(Device Context,CDC)中椭圆弧的绘制方向。在 MFC 中,CDC 类用于处理图形设备的上下文,提供了一系列用于绘制图形的方法。具体来说,GetArcDirection 方法用于获取当前设备上下文中椭圆弧的绘制方向。椭圆弧可以以顺时针或逆时针方向绘制,这个方法可以告诉你当前的设备上下文是使用哪个方向。以下是 CDC::GetArcDirection 方法的基本用法:int GetArcDirection() const;这个方法返回一个整数值,代表椭圆弧的绘制方向。可能的返回值包括: AD_COUNTERCLOCKWISE(逆时针方向):表示椭圆弧是逆时针方向绘制的。 AD_CLOCKWISE(顺时针方向):表示椭圆弧是顺时针方向绘制的。你可以使用这个方法来获取当前设备上下文中椭圆弧的绘制方向,然后根据需要进行相应的处理。请注意,使用 MFC 相关的方法时,确保你的代码在正确的上下文中调用这些方法,通常是在绘图操作...
MFC CDC 类 公共方法:CDC::FromHandle
CDC::FromHandle 是 MFC(Microsoft Foundation Classes)中的一个方法,它用于创建一个设备上下文对象(CDC)并与给定的设备上下文句柄关联起来。下面是该方法的简要说明:CDC* CDC::FromHandle(HDC hDC);参数: hDC:要与创建的CDC对象相关联的设备上下文句柄。返回值: 返回一个指向新创建的 CDC 对象的指针。这个方法允许你通过设备上下文句柄来创建一个 CDC 对象,从而可以在 MFC 中使用 GDI(图形设备接口)函数进行图形绘制等操作。例如,你可以使用以下方式来使用 FromHandle 方法:HDC hDC = ::GetDC(hWnd); // 获取窗口设备上下文句柄CDC* pDC = CDC::FromHandle(hDC); // 使用FromHandle方法创建CDC对象// 在pDC上进行图形绘制等操作::ReleaseDC(hWnd, hDC); // 释放设备上下文句柄这只是一个简单的示例,你可能需要根据具体的需求进行更详细的操作。这个方法通常在需要直接操作设备上下文时使用,比如进行绘图或者获...
MFC CDC 类 公共方法:CDC::FrameRect
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FrameRect方法用于在设备上下文中绘制矩形边框。以下是CDC::FrameRect方法的声明:BOOL FrameRect( LPCRECT lpRect, CBrush* pBrush);参数说明: lpRect:指定要绘制边框的矩形区域的坐标。 pBrush:指定用于绘制边框的画刷(CBrush对象)。该方法返回一个布尔值,表示是否成功执行了绘制边框的操作。以下是一个简单的示例,演示如何使用FrameRect方法:// 假设pDC是一个有效的CDC指针// 创建一个红色画刷CBrush redBrush(RGB(255, 0, 0));// 指定要绘制边框的矩形区域坐标CRect rect(50, 50, 150, 150);// 调用FrameRect方法绘制矩形边框BOOL bFramed = pDC->FrameRect(&rect, &redBrush);if (bFramed) { // 绘制边框成功} else { ...
MFC CDC 类 公共方法:CDC::FloodFill
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FloodFill方法用于进行泛洪填充,即以指定的颜色填充指定点的区域,直到达到指定的边界颜色为止。以下是CDC::FloodFill方法的声明:BOOL FloodFill( int x, int y, COLORREF crColor);参数说明: x,y:指定填充的起始点的坐标。 crColor:指定用于填充的颜色。该方法返回一个布尔值,表示是否成功执行了填充操作。以下是一个简单的示例,演示如何使用FloodFill方法:// 假设pDC是一个有效的CDC指针// 指定填充起始点和颜色int x = 50, y = 50;COLORREF fillColor = RGB(255, 0, 0); // 红色// 调用FloodFill方法进行泛洪填充BOOL bFilled = pDC->FloodFill(x, y, fillColor);if (bFilled) { // 填充成功} else { // 填充失败}在这个示例中,Floo...
MFC CDC 类 公共方法:CDC::FlattenPath
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FlattenPath方法用于将当前路径(Path)中的曲线部分转换为线段,以简化路径。这对于需要将曲线绘制为直线的情况很有用。以下是CDC::FlattenPath方法的声明:BOOL FlattenPath();该方法返回一个布尔值,表示是否成功执行了路径的平铺(Flatten)操作。在使用FlattenPath方法之前,通常需要使用其他CDC成员函数构建一个包含曲线的路径。例如,可以使用MoveTo、LineTo、ArcTo等方法定义路径,然后使用FlattenPath来转换其中的曲线。以下是一个简单的示例:// 假设pDC是一个有效的CDC指针// 开始一条新路径pDC->BeginPath();// 添加一些路径数据,包含曲线pDC->MoveTo(100, 100);pDC->LineTo(200, 100);pDC->ArcTo(200, 100, 300, 200, 200, 150, 300, 100);// 平铺路径中的曲线BOO...
MFC CDC 类 公共方法:CDC::FillSolidRect
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FillSolidRect方法用于在设备上下文中用指定的颜色填充一个矩形区域。以下是CDC::FillSolidRect方法的声明:BOOL FillSolidRect( int x, int y, int cx, int cy, COLORREF clr);参数说明: x,y:指定矩形的左上角坐标。 cx,cy:指定矩形的宽度和高度。 clr:指定用于填充的颜色(COLORREF类型)。该方法返回一个布尔值,表示是否成功执行了填充操作。以下是一个简单的示例,演示如何使用FillSolidRect方法:// 假设pDC是一个有效的CDC指针// 指定矩形的左上角坐标、宽度、高度和填充颜色int x = 50, y = 50, cx = 100, cy = 100;COLORREF fillColor = RGB(255, 0, 0); // 红色// 调用FillSolidRect方法填充矩形区域BOOL bFilled = pDC->FillSo...
MFC CDC 类 公共方法:CDC::FillRgn
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FillRgn方法用于在设备上下文中填充一个指定的区域(Region)。以下是CDC::FillRgn方法的声明:BOOL FillRgn( CRgn* pRgn, CBrush* pBrush);参数说明: pRgn:指定要填充的区域(CRgn对象)。 pBrush:指定用于填充的画刷(CBrush对象)。该方法返回一个布尔值,表示是否成功执行了填充操作。以下是一个简单的示例,演示如何使用FillRgn方法:// 假设pDC是一个有效的CDC指针// 创建一个矩形区域CRgn rectRgn;rectRgn.CreateRectRgn(50, 50, 150, 150);// 创建一个红色画刷CBrush redBrush(RGB(255, 0, 0));// 调用FillRgn方法填充区域BOOL bFilled = pDC->FillRgn(&rectRgn, &redBrush);if (bFilled) { // 填充成功} e...
MFC CDC 类 公共方法:CDC::FillRect
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FillRect方法用于在设备上下文中填充一个矩形区域。以下是CDC::FillRect方法的声明:int FillRect( LPCRECT lpRect, CBrush* pBrush);参数说明: lpRect:指定要填充的矩形区域的坐标。 pBrush:指定用于填充的画刷(CBrush对象)。该方法返回一个非零值表示成功,返回值为零表示失败。以下是一个简单的示例,演示如何使用FillRect方法:// 假设pDC是一个有效的CDC指针// 创建一个红色画刷CBrush redBrush(RGB(255, 0, 0));// 指定要填充的矩形区域坐标CRect rect(50, 50, 150, 150);// 调用FillRect方法填充矩形区域int result = pDC->FillRect(&rect, &redBrush);if (result != 0) { // 填充成功} else { // 填充失败}在这个...
MFC CDC 类 公共方法:CDC::FillPath
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的FillPath方法用于在设备上下文中填充当前路径(Path)。以下是CDC::FillPath方法的声明:BOOL FillPath();该方法返回一个布尔值,表示是否成功执行了路径的填充操作。在使用FillPath方法之前,通常需要使用其他CDC成员函数构建一个路径。例如,可以使用MoveTo、LineTo、ArcTo等方法定义路径,然后使用FillPath来填充该路径。以下是一个简单的示例:// 假设pDC是一个有效的CDC指针// 开始一条新路径pDC->BeginPath();// 添加一些路径数据pDC->MoveTo(100, 100);pDC->LineTo(200, 100);pDC->LineTo(200, 200);pDC->LineTo(100, 200);pDC->CloseFigure(); // 封闭路径// 填充当前路径BOOL bFilled = pDC->FillPath();if (bFill...
MFC CDC 类 公共方法:CDC::ExtTextOut
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的ExtTextOut方法用于在设备上下文中绘制文本,并且支持一些扩展的文本输出选项。以下是CDC::ExtTextOut方法的声明:BOOL ExtTextOut( int x, int y, UINT nOptions, const RECT* lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);参数说明: x,y:指定文本输出的起始点的坐标。 nOptions:指定文本输出的选项,可以是以下值的组合: - ETO_CLIPPED:裁剪文本输出,使其适应指定的矩形。 - ETO_GLYPH_INDEX:lpszString参数包含的是字形索引而不是字符。 - ETO_IGNORELANGUAGE:忽略字符的语言环境。 - ETO_OPAQUE:在输出文本之前用背景色填充输出矩形。 lpRect:指定一个矩形,如果指定了ETO_CLIPPED选项,文本将被裁剪到这个矩形内。...
MFC CDC 类 公共方法:CDC::ExtFloodFill
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的ExtFloodFill方法用于进行扩展洪泛填充,即以指定的颜色填充指定点的区域,直到达到指定的边界颜色为止。以下是CDC::ExtFloodFill方法的声明:BOOL ExtFloodFill( int x, int y, COLORREF crColor, UINT nFillType);参数说明: x,y:指定填充的起始点的坐标。 crColor:指定用于填充的颜色。 nFillType:指定填充的类型,可以是以下值之一: - FLOODFILLBORDER:填充边界颜色为止。 - FLOODFILLSURFACE:填充边界颜色和起始点颜色之间的区域。该方法返回一个布尔值,表示是否成功执行了填充操作。以下是一个简单的示例,演示如何使用ExtFloodFill方法:// 假设pDC是一个有效的CDC指针// 指定填充起始点和颜色,使用FLOODFILLBORDER填充到边界颜色为止BOOL bFilled = pDC->ExtFloodFil...
MFC CDC 类 公共方法:CDC::ExcludeUpdateRgn
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的ExcludeUpdateRgn方法用于将设备上下文的更新区域中的一个矩形排除在裁剪区域之外。这可以用于控制在窗口更新时需要重新绘制的区域。以下是CDC::ExcludeUpdateRgn方法的声明:BOOL ExcludeUpdateRgn(BOOL bValidate = TRUE);参数说明: bValidate:如果为TRUE,则将更新区域标记为已验证,否则不进行验证。该方法返回一个布尔值,表示是否成功排除了更新区域中的矩形。以下是一个简单的示例,演示如何使用ExcludeUpdateRgn方法:// 假设pDC是一个有效的CDC指针// 调用ExcludeUpdateRgn,将更新区域中的矩形排除在裁剪区域之外BOOL bExcluded = pDC->ExcludeUpdateRgn();if (bExcluded) { // 在裁剪区域外进行绘图操作 pDC->Rectangle(0, 0, 200, 200); // 恢复裁剪区...