1. 几种不同设备环境
MFC的CDC类封装了设备环境对象,CDC的成员变量m_hDC指向它的设备环境,可以创建的设备环境类型有:屏幕,打印机,只有打印机的信息部分,位图。
屏幕:
创建一个屏幕设备环境 
CDC *Pdc = GetDC();//返回窗口客户区的设备环境
CDC *Pdc = GetWindowDC();//包括客户区和非客户区的设备环境
如果要对整个屏幕进行绘制;
CDC *Pdc = CDC::FromHandle(::GetDC(NULL));
使用完之后要用ReleaseDC(Pdc)释放
每次释放DC之后,为设备环境设置的值都会丢失,可以使用下面两个函数来保存和恢复设置的环境值.
SaveDC();保存设备的当前状态
RestoreDC();将DC恢复到SaveDC()保存的状态.
打印机设备:
要为打印机创建一个设备环境,必须先创建一个C D C类对象,然后使用它的CreateDC( )
成员函数:
CDC dc;
dc.CreateDC(LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData)
lpszDriverName: 指向空终止字符串的指针,字符串为设备驱动程序的文件名(不带扩展名,例如:“EPSON”)。也可以为该参数传递Cstring对象。
LpszDeviceName: 指向空终止字符串的指针,字符串为支持特定设备的文件名(例如:“EPSON FX?0”)。如果模块支持不只一个设备,使用lpszDeviceName参数,也可以为该参数传递 Cstring对象。
LpszOutput: 指向空终止字符串的指针,字符串为指定了物理输出媒介的文件和设备名(文件或输出端口)。也可以为该参数传递 Cstring对象
LpInitData: 指向DEVMODE 结构的指针,该结构包含有指定设备驱动程序的初始数据,Windows 的DocumentProperties函数从该结构中获得指定设备的信息。如果设备驱动程序使用用户在控制面板设定的缺省值,lpInitData参数 一定要设置为NULL。如果使用DEVMODE 结构,就需要PRINT.H 头文件。
直接绘制位图的设备环境:
CDC dc;
dc.CreateCompatibleDC(HDC hdc);//创建兼容的DC

要绘制位图,还必须创建一个空的位图对象:
CDC dc;
dc.CreateCompatibleDC(pDC);
Cbitmap bimmap;
Bitmap.CreateCompatileBitmap(pCD,16,16);
dc.SelectObject(&bitmap);
………..
dc.DeleteDC();
     打印机信息设备:
CDC dc;
dc.CreteIC( );
信息设备环境只包含一台打印机或其他非屏幕设备的特性,如颜色支持等。创建信息设
备环境的速度比创建一个常规的打印机设备环境速度快,因为它只包含设备的特性。信息使用后应当删除,与前面描述的一样。
2.画点;
     SetPixel( ) 试图用指定的颜色画一个像素,返回绘制时使用的实际颜色
SetPixelV( ) 与上面的基本相同,但不用返回绘制时使用的实际颜色,因而速度更快
GetPixel()取得点处的RGB颜色
COLORREF GetPixel(int x,int y) const;
COLORREF GetPixel(POINT point) const;// 如果不能在剪切区指定点的坐标,则返回-1。

COLORREF SetPixel(int x ,int y,COLORREF crColor);
COLORREF SetPixel(POINT point,COLORREF crColor);// 点必须在剪切区内,否则函数什么也不做。

BOOL SetPixelV (int x ,int y ,COLORREF crColor );
BOOL SetPixelV (POINT point,COLORREF crColor );// 。该点必须在剪切区内设备表面的可视区域之中

在OnDraw(CDC *pDC)中
COLORREF clcolor ;
clcolor   =   Pdc->GetPixel(20,20);
pDC->SetPixel(40,40,clcolor);

3.画线:
     MoveTo( ) 开始画线、弧和多边形时,把光标移动到一个初始位置
LineTo( ) 画一条从初始位置到另一个点的直线
Arc( ) 画一段弧
ArcTo( ) 画一段弧,并更新初始位置
AngleArc( ) 画一条线,然后画一段弧,并更新初始位置
PolyDraw( ) 画一系列线段和Bezier样条
PolyLine( ) 画一系列线段
PolyPolyLine( ) 画多个系列线条
     画线属性是通过画笔的属性来控制, HPEN句柄指向一个Pen对象。在M F C中创建一个P e n对象,必须先创建一个CPen类对象

绘制实例;

CPen *oldpen,pen1,pen2,pen3;

pen1.CreatePen(PS_SOLID,2,RGB(255,0,0));//画笔1

LOGPEN logpen;
     logpen.lopnStyle = PS_DASH;
     logpen.lopnWidth.x   = 1;
     logpen.lopnWidth.y   = 1;
     logpen.lopnColor = RGB(199,199,199);
     pen2.CreatePenIndirect(&logpen);//画笔2

pen3.CreatePen(PS_USERSTYLE| PS_ENDCAP_FLAT,3,RGB(100,120,120));//画笔3

oldpen = (CPen *)pDC->SelectObject(&pen1);
     pDC->MoveTo(100,100);   //画线
     pDC->LineTo(200,200);

pDC->SelectObject(&pen2);
     pDC->Arc(&CRect(200,200,400,400),CPoint(200,200), CPoint(200,400)); //画圆弧

pDC ->SelectObject(&pen3);
     POINT pt[4] = {{10,10},{15,15},{20,40},{50,70}};
     BYTE style[4] = {{ PT_MOVETO},{PT_LINETO},{PT_LINETO},{PT_LINETO}}; 
     pDC-> PolyDraw(pt,style,4); //画线

pDC->SelectObject(oldpen);

int SetROP2(int nDrawMode); 绘图模式的前一次取值
nDrawMode指定新的绘制模式,可以为下列值之一;
R2_BLACK   像素始终为黑色。
R2_WHITE   像素始终为白色。
   R2_NOP   像素保持不变。
   R2_NOT   像素为屏幕颜色的反色。
   R2_COPYPEN   像素为笔的颜色。
R2_NOTCOPYPEN   像素为笔颜色的反色。
   R2_MERGEPENNOT   像素为笔颜色或者屏幕颜色反色的组合色。
   R2_MASKPENNOT   像素为笔颜色与屏幕颜色反色的组合色。
   R2_MERGENOTPEN   像素为笔颜色反色或者屏幕颜色的组合色。
R2_MERGEPEN   像素为笔颜色或者屏幕颜色的组合色。
R2_MASKNOTPEN   像素为笔颜色反色与屏幕颜色的组合色。
   R2_NOTMERGEPEN   R2_MERGEPEN的反色。
   R2_MASKPEN   像素为笔颜色与屏幕颜色的组合色。
   R2_NOTMASKPEN   R2_MASKPEN的反色。
R2_XORPEN   像素为笔颜色与或者屏幕颜色异或的颜色。
   R2_NOTXORPEN   R2_XORPEN的反色。
4.绘制形状:
    
FillRect( ) 填充一个矩形
FillSolidRect( ) 用用一单色填充一个矩形
InvertRect( ) 反转一个矩形的颜色
ExtFloodFill( ) 用用当前画刷填充一个区域,提供比FloodFill( )成员函数更多的灵活性
FrameRect( ) 画一个矩形的边框
填充属性是使用的是画笔, B r u s h对象控制怎样填充形状。设备环境用一个H B R U S H句柄指向一个画刷对象。若用M F C创建一个B r u s h对象,首先要创建一个C B r u s h类对象.
GetBrushOrg获取当前画刷的起点
SetBrushOrg指定选入设备上下文的下一个画刷的起点
实例:
     CBrush *oldbrush,brush1,brush2,brush3;
     brush1.CreateSolidBrush(RGB(100,100,100));
     brush2.CreateHatchBrush(HS_CROSS,RGB(200,200,200));
     LOGBRUSH logbrush;
     logbrush.lbStyle = BS_HOLLOW;
     //logbrush.lbColor = ;
     //logbrush.lbHash = ;
     brush3.CreateBrushIndirect(&logbrush);

//Oldbrush = (CBrush*)pDC->SelectObeject(&brush1);
     pDC->FillRect(&CRect(0,0,100,100),&brush1);
     pDC -> FillSolidRect(&CRect(100,100,200,200),RGB(20,20,20));
     pDC ->InvertRect(&CRect (100,100,200,200));

oldbrush = (CBrush*)pDC->SelectObject(&brush1);
     pDC ->Rectangle(&CRect(200, 200,250,250));
     pDC ->SelectObject(&brush2);
     pDC ->Rectangle(&CRect(250, 250,300,300));
     pDC ->DrawEdge(&CRect(300, 300,350,350), EDGE_ETCHED|BDR_SUNKENOUTER|BDR_RAISEDINNER, BF_RECT);
     pDC ->Draw3dRect(&CRect(350, 350,400, 400),RGB(20,20,20),RGB(200,200,200));
     pDC ->SelectObject(&brush3);
     pDC ->DrawFocusRect(&CRect (400,400,450,450));

pDC ->DrawFrameControl(&CRect(400,0,500,100), DFC_BUTTON, DFCS_ADJUSTRECT|DFCS_BUTTON3STATE|DFCS_MONO);
pDC->SelectObject(oldbrush);

FillRgn( ) 填充一个区域
InvertRgn( ) 反转一个区域的颜色
FrameRgn( ) 画一个特定区域的边框

5.滚动:
通过滚动,可移动屏幕周围像素颜色。
ScrollDC( ) 左、右、上、下移动屏幕图像。
6.绘制文本;
TextOut( ) 在在一个指定的位置,输出一个字符串
ExtTextOut( ) 在在一个矩形区域里输出一个字符串
TabbedTextOut( ) 在基于用该函数传输的一个表,在指定位置输出一个字符串,并将字符串中的任何制表符转换为空格
DrawText( ) 在在指定的矩形域里绘制文本,但比TextOut( )有更多的选项,如把文本居中和显示多行文本

文本属性控制怎样绘制文本。有三种类型的文本属性:颜色、对齐方式和字体
文本颜色的颜色可以使用函数
SetTextColor( ) 设定前景色(即文本色)
SetBkColor( ) 设置输出文本处的背景色。
文 本的对其方式; 对齐方式属性决定文本怎样排列(如:左对齐、右对齐、中央对齐)。确切地说, TextOut( )函数中的x、y变量可以表示文本的左边、右边或者底部。使用默认的对齐方式, x、y代表文本的左上角,但还有其他一些方式。要改变设备环境的文本对齐属性,可以用SetTextAlign( )函数和下面的标志值之一:
TA _ LEFT 儿TextOut( )中的x变量表示文本的左边。TA _ L E F T是默认设置值
TA _ TOP 儿TextOut( )中的y变量表示文本的顶部。TA _ TO P是默认设置值
TA _ RIGHT 儿TextOut( )中的y变量表示文本的右边。计算文本的边界矩形,用以决定从哪儿开始绘制文本
TA _ CENTER 儿TextOut( )中的y变量表示文本的中部
TA _ BASELINE 儿TextOut( ) 中的y变量表示文本的基线
TA _ BOTTOM 儿TextOut( )中的y变量指示文本的底部

virtual int DrawText(LPCTSTR lpszString,ini nCount ,LPRECTlpRect,UINT nForm-at);
int DrawText(const Cstring&str,LPRECT lpRect,UNIT nFormat);// 如果成功,则返回文本高度。
lpszString 指向要绘制的文本的指针。如果nCount是-1,该字符串必须是空终止的。NCount字符串中字符数目。如果为-1,lpszString被认为是一 个指向空终止的字符串的长指针。DrawText自动计算字符数目。LpRect指向RECT结构或Crect对象的指针,结构(或对象)中包含有矩形 (逻辑单位表示),其中的文本带有格式。
NFormat指定格式化文本的方法。它可以是下列值的组合(可用运算符或位操作符进行组合):
DT_BOTTOM   底部对齐的文本。该值必须同DT_SINGLELINE组合使用。
DT_CALCRECT   决定矩形的宽度和高度,如果是多行文字,DrawText将会使用lpRect指向的矩形,并扩展矩形以容纳文本。如果是单行文本,DrawText将会 调整矩形的右边以便容纳该行文字。两种情况下,DrawText都返回格式化文本的高度,但并不绘制它们。
DT_CENTER   将文本水平居中。
DT_END_ELLIPSIS或DT_PATH _ELLIPSIS   如果必要,将用椭圆替代部分指定的文本,以便适合给定的矩形。除非指定DT_MODIFYSTRING 标志,否则给定的字符串不会被修改。可以指定DT_END_ELLIPSIS在字符串末端替代字符,或者指定DT_PATH_ELLIPSIS在字符串中 间替代字符。如果字符串中含有反斜杠(\),DT_PATH_ELLIPSIS将尽可能保存在最后一个反斜杠后的文本。
DT_EXPANDTABS   扩展制表符,每一制表符所含字符的缺省数目是8。
DT_EXTERNALLEADING包括在行高中的字体外部间隔。通常外部间隔不包括在一行文本的高度之中。
DT_LEFT   文本左对齐。
lDT_MODIFYSTRING   修正给定字符串以便与显示文本匹配。只有在指定DT_END_ELLIPSIS 或DT_ PATH_ELLIPSIS 标志时,该标志才起作用。
DT_NOCLIP   绘制但不剪切, DrawText 在使用DT_NOCLIP后总能运行得快一些。
DT_NOPREFIX   关闭前缀字符,通常DrawText 将助记前缀&理解为其后字符加上下划线,&&前缀符表示显示一个&字符,指定 DT_NOPREFIX后,也关闭了这种处理。l DT_PATH_ELLIPSISl DT_RIGHT   文本右对齐。
DT_SINGLELING   指定单行,回车与换行不会中断该行。
DT_TABSTOP   设置制表位,nFormat的高位字节即为每一制表符所含字符的数目,缺省值为8。
DT_TOP   文本靠上对齐(只用于单行文字)。
DT_VCENTER   垂直居中对齐(只用于单行文字)。
DT_WORDBREAK   设定单词中断。如果超过lpRect指定的矩形边界,行会自动在词间断开,回车与换行也会断行。
注意   DT_CALCRECT,DT_EXTERNALLEADING,DT_INTERNAL,DT_NOCLIP和DT_NOPREFIX不能与DT_TABSTOP一同使用。

CString str = "11111111111111111111111";
CRect rect;
rect.top = 200;
rect.left = 200;
rect.bottom = 250;
rect.right = 250;
pDC->DrawText(str,&rect,DT_LEFT|DT_END_ELLIPSIS)//多出的字符用…显示

文本的字体包括字体类型、大小和文本外观的其他方面
字体属性包括在Font对象中,设备环境用HFON T句柄指向该对象。若用M F C创建一个Font对象,首先创建一个CFont类对象
GetTextColor获取当前文本颜色
SetTextColor设置文本颜色
     CRect Rect;
     GetWindowRect(&Rect);
     CFont MyFont;
     MyFont.CreateFont(24,0,0,0,FW_BOLD,true,FALSE,0,0,0,0,0,0,"Arial");
     CString StrInfo="创建立体效果的字符串";
     pDC->SetBkMode(TRANSPARENT);
     CFont *pOldFont=pDC->SelectObject(&MyFont);
     COLORREF OldColor=pDC->SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
     Rect.right=Rect.Width();
     Rect.bottom=Rect.Height();
     Rect.left=Rect.top=0;
     pDC->FillSolidRect(Rect,::GetSysColor(COLOR_3DFACE));
     pDC->DrawText(StrInfo,Rect+CPoint(0,1),DT_SINGLELINE|DT_LEFT);
     pDC->SetTextColor(::GetSysColor(COLOR_3DSHADOW));
     pDC->DrawText(StrInfo,Rect,DT_SINGLELINE|DT_LEFT);
     pDC->SetTextColor(OldColor);
     pDC->SelectObject(pOldFont);

7.绘制位图和图标:
DrawIcon     在在指定的位置画一个图标
BitBlt 在       从指定的设备环境中拷贝一个位图,通常是从磁盘中装入或在内存中创建,如前面所述
StretchBlt 在   与BitBlt( )基本相同,但它试图伸展或压缩一个位图以适应目标
PlgBlt       从源设备上下文的指定矩形到给定设备上下文中指定平行多边形,执行颜色数据位的位块传递
FloodFill           用当前画刷填充区域
ExtFloodFill         用当前画刷填充区域。比FloodFill成员函数提供更多灵活性MaskBlt使用给定屏蔽和光栅操作对源和目标位图合并颜色数据
PatBlt           创建位特征
MaskBlt         使用给定屏蔽和光栅操作对源和目标位图合并颜色数据
实例1:
HICON hicon = AfxGetApp()->LoadStandardIcon(MAKEINTRESOURCE(IDI_QUESTION));
pDC->DrawIcon(0,0,hicon);
BOOL BitBlt(int x,int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, intySrc, DWORD dwRop);
x 指定目标矩形左上角的逻辑X坐标。Y指定目标矩形左上角的逻辑Y坐标。NWidth指定目标矩形和源位图的宽度(逻辑单位)。NHeight指定目标矩形 和源位图的高度(逻辑单位)。PSrcDC指向CDC对象的指针,标识待拷贝位图的设备上下文。如果dwRop指定不包括源的光栅操作,则它必须为 NULL。XSrc指定源位图左上角的逻辑X坐标。YSrc指定源位图左上角的逻辑Y坐标。
DwRop指定要执行的光栅操作。光栅操作代码定义GDC如何合并输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。下面对dwRop列出光栅操作代码及其描述:
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   所有输出变白。
CDC *memDC = new CDC;
memDC->CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC,20,20);
memDC->SelectObject(&bitmap);
pDC->BitBlt(0,0,20,20,memDC,0,0,SRCCOPY);
delete memDC;

BOOL PlgBlt(POINT lpPoint ,CDC* pSrcDC,int xSrc ,int ySrc , intnWidth ,int nHeight, CBitmap& maskBitmap,int xMask ,int yMask);
lpPoint逻辑空间中包含三个点的数组的指针。它指定了一个目标平行四边形的三个顶点。源矩形的左上角与数组中的第一个点映射,右上角与第二个点映射,第三个点指向左下角。源矩形的右下角与平行四边形未能明确表示的第四点映射。
pSrcDC源设备上下文的标识。xSrc用逻辑单位表示的源矩形左上角的X坐标。
ySrc 用逻辑单位表示的源矩形左上角的Y坐标。nWidth用逻辑单位表示的源矩形的宽度。nHeight用逻辑单位表示的源矩形的高度。maskBitmap 标识用以屏蔽源矩形颜色的可选的黑白位图。xMask黑白位图左上角的X坐标。yMask黑白位图左上角的Y坐标。

对源设备上下文指定 的矩形到给定设备上下文中平行四边形的颜色数据实行位块(bit-block)转换。如果位掩码的句柄代表一个有效的位图,函数利用该函数对源矩形的颜色 数据位进行屏蔽。平行四边形的第四个顶点(D)是将前三个点(A,B,C)定义为矢量后,经D=B+C-A计算得到。如果存在位掩码1,表示源像素色将会 拷贝给目标位图,为0表示目标位图的像素不会被改变。如果掩码矩形小于源矩形和目标矩形,函数将复制掩码模式。
在源设备上下文中允许度量形式转换和解释。但不允许选择和剪切转换,掩码位图不是黑白位图,出错。目标设备上下文的扩展模式决定了像素如何被扩展或压缩。如果源设备上下文标识了增强元文件设备上下文,记录增强元文件时,则出错。

BOOL StretchBlt(int x ,int y ,int nWidth,int nHeight,CDC*pSrcDC,intxSrc,int ySrc, int nSrcWidth,int nSrcHeight.DWORD dwRop)
将源矩形中的位图拷贝到目标矩形中,如果有必要,可以扩展或压缩该位图使其与目标矩形尺寸吻合。
如 果nSrcWidth和nWidth或nSrcHeight和nHeight的符号不同,StretchBlt将为位图创建一个镜像。如果 nSrcWidth和nWidth符号不同,函数沿X轴创建镜像。如果nSrcHeight和nHeight符号不同,函数沿Y轴创建镜像。

BOOL MaskBlt(int x ,int y,int nWidth ,int nHeight,CDC* pSrcDC,int xSrc,intySrc,CBitmap& maskBitmap,int xMask ,int yMask,DWORD dwRop);
maskBitmap在源设备上下文中黑白掩码位图与彩色位图的标识。xMaskmaskBitmap设定的掩码位图的水平像素偏移量。yMaskmaskBitmap设定的掩码位图的水平像素偏移量。
使 用给定的掩码和光栅操作组合源位图和目标位图中的彩色数据。maskBitmap设置的掩码值为1,表明dwRop指定的前景光栅操作代码应在该位置上得 以应用。maskBitmap设置的掩码值为0,表明dwRop指定的背景光栅操作代码应在该位置上得以应用。如果光栅操作需要源对象,掩码矩形必须覆盖 源矩形,否则会导致失败。如果光栅操作不需要源对象,掩码矩形必须覆盖目标矩形,否则会导致失败。
8.映射模式:
Wi n d o w s有一些映像模式允许用户以像素、英寸或毫米为单位进行绘制。然而,对于大
多数应用程序,永远也不必考虑映像模式。默认模式以像素为单位,这时的x和y为像素值。
但是,若确实需要x和y为英寸值,则必须要注意逻辑单位和设备单位之间的不同
逻辑单位是传递给绘图函数的x和y值,它们可以表示英寸或毫米;而设备单位是x和y值
在屏幕上的像素数,或者是在打印机上的点阵数。鼠标单击以设备单位返回。如果想知道用
户单击在位图上的什么位置,需要将设备单位转换为逻辑单位。当以逻辑单位方式工作时,
是工作在逻辑坐标系统中;而以设备单位方式工作时,则是设备坐标系统(也称为物理坐标系统或客户坐标系统)。
映像模式用SetMapMode ( )
MM_TEXT 这这是默认的映像模式,x和y值等于一个屏幕像素或打印机点阵。在屏幕或打印页中,正的y值向下递减
MM_HIENGLISH 这X和y值相当于屏幕上或打印页上的1 / 1 0 0 0 i n,Wi n d o w s决定当前屏幕设备的多少
个像素等同于1 / 1 0 0 0 i n。在屏幕或打印页中,正的y值向上递增
MM_LOENGLISH 这X和y值相当于设备上的1 / 1 0 0 0 i n,并且y值向上递增
MM_HIMETRIC 这X和y值相当于设备上的1 / 1 0 0 m m,并且y值向上递增
MM_LOMETRIC 这X和y值相当于设备上的1 / 1 0 m m,并且y值向上递增
MM_TWIPS 这X和y值相当于设备上的1 / 1 4 4 0 i n,并且y值向上递增这通常在文本绘制中使用,一个缇( t w i p )单位相当于1 / 2 0点

CDC类还提供了两个从一个环境向另一个环境转换的函数
DPtoLP( ) 将设备单位转换为逻辑单位
LPtoDP( ) 将逻辑单位转换为设备单位

9.要设置窗口和视口矩形,使用下面这些C D C的成员函数:
SetWindowOrg( ) 设置表示逻辑环境的矩形的左上角值
SetWindowExt( ) 设置表示逻辑环境的矩形的大小
SetViewportOrg( ) 设置表示设备环境的矩形的左上角值
SetViewportExt( ) 设置表示设备环境的矩形的大小
可以区分下面的程序的不同:
1.
     pDC->SetWindowOrg(-20,-20);
     CDC *memDC = new CDC;
     memDC->CreateCompatibleDC(pDC);
     CBitmap bitmap;
     bitmap.CreateCompatibleBitmap(pDC,20,20);
     memDC->SelectObject(&bitmap);
     pDC->BitBlt(0,0,20,20,memDC,0,0,SRCCOPY);
     delete memDC;

MFC画图的基本知识 转载链接http://lc7cl.iteye.com/blog/1336221相关推荐

  1. Java锁--synchronized(转载zi http://zhh9106.iteye.com/blog/2151791)

    在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...

  2. Java 创建简单的WebService (转载自http://wl-ldy.iteye.com/blog/1055428)

    使用Axis开发WebService  1.下载并安装Axis   1)登陆 http://axis.apache.org/axis/ 站点下载Axis     下载axis-bin-1_4.zip, ...

  3. 基于位置的知识图谱链接预测

    基于位置的知识图谱链接预测 人工智能技术与咨询 本文来自<中文信息学报>,作者张宁豫等 摘 要: 链接预测是知识图谱的补全和分析的基础.由于位置相关的实体和关系本身拥有丰富的位置特征,该文 ...

  4. Unity学习知识和链接汇总-持续更新

    Unity学习知识和链接汇总-持续更新 Unity Scripting Reference- https://docs.unity3d.com/Manual/index.html gitee http ...

  5. 知识图谱链接预测时的评估指标:mean rank和hit@10 。

    链接预测是用来预测三元组(h,r,t)中缺失实体h,t或r的任务,对于每一个缺失的实体,模型将被要求用所有的知识图谱中的实体作为候选项进行计算,并进行排名,而不是单纯给出一个最优的预测结果. 在测试阶 ...

  6. C++ 字符编码知识转载

    基本常识 1.位和字节 说起编码,我们必须从最基础的说起,位和字节(别觉得这个过于简单不值一说,我还真见过很多个不能区分这两者的程序员).位(bit)是指计算机里存放的二进制值(0/1),而8个位组合 ...

  7. 计算机考研专业基础知识视频教程链接

    操作系统: http://www.da-fan-shu.cn/20091022_440/ 微机原理: http://www.da-fan-shu.cn/20111029_2076/ 数据结构: htt ...

  8. MFC画图(画线、画矩形、画刷画笔的使用)

    绘制任意线条: 1.创建基于单文档工程:Draw CDrawView类中添加成员变量: CPoint m_ptOrigin; BOOL m_bDraw; 2.CDrawView()中初始化: m_pt ...

  9. HTTP相关知识 --转载

    转载之,言简意赅 转载于:https://www.cnblogs.com/likeshu/p/5854234.html

最新文章

  1. 好看的一本历史小说《大秦帝国》啊
  2. hdu 5011(博弈)
  3. Unity学习笔记2 简易2D横版RPG游戏制作(二)
  4. numpy库中的extend()函数使用
  5. php pdo 更新sql语句,增删改查sql语句及PDO数据库连接操作流程实例-2019年7月24日...
  6. 牛人主页(主页有很多论文代码)【真的好强大】
  7. c:forEach varStatus属性
  8. 走几步回头看看企业即时通讯
  9. 计算机仿真课程设计四号题,上海电力学院电子线路计算机仿真课程设计报告
  10. c3p0配置及其说明
  11. python3.5安装教程linux_Linux下安装python3.6和第三方库的教程详解
  12. java中输入两个数组并显示_java-将输入存储在两个相关的数组中
  13. 风控建模系列(六):催收评分卡卡跟贷前申请卡关于目标变量的定义
  14. MVC 打印解决方案--SNF快速开发平台3.1
  15. 今天用pro安装nginx+php+mysql出现故障的解决方法
  16. UVA10120 ZOJ1229 Gift?!【DFS+BFS】
  17. python基础和软件测试
  18. 数学规划模型(五):多目标规划模型
  19. Python如果or运算的两个参数都等同于False,返回后一个值
  20. OA多级审批流程表设计方案(干货满满)

热门文章

  1. 读书笔记-《人人都是产品经理V1.1》
  2. 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
  3. SpringBoot打成jar包部署,Excel模板下载文件损坏,提示恢复问题处理
  4. 安卓兼容7.0图库选择图片生成二维码
  5. 相机计算坐标公式_相机位姿估计3:根据两幅图像的位姿估计结果求某点的世界坐标...
  6. 小小突击队服务器维护多久,小小突击队1.28更新公告
  7. Love for music
  8. 网站导航应该怎么设计?
  9. np.percentile用法
  10. MySQL报错:Data too long for column