当前位置:   article > 正文

Windows API_windows hdc

windows hdc

MFC CDC =》 windows HDC

Windows使用与设备无关的图形设备环境(DC:Device Context)进行显示

Invalidate():使整个窗口客户区无效,待重绘

标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘

GetClientRect(winuser.h): 获取窗口客户区

CreateCompatibleDC:创建一个与指定设备兼容的内存设备上下文环境(DC)

Windows不允许程序员直接访问硬件,它对屏幕的操作是通过环境设备(DC)来完成的。屏幕上每一个窗口都对应一个DC。

可以把DC想象成一个视频缓冲区,对这这个缓冲区的操作,会表现在这个缓冲区对应的屏幕窗口上。

在窗口的DC之外,可以建立自己的DC(不对应窗口),这个方法就是CreateCompatibleDC。这个DC就是一个内存缓冲区,通过这个DC你可以把和它兼容的窗口DC保存到这个DC中,就是说你可以通过它在不同的DC之间拷贝数据

例如:你先在这个DC中建立好数据,然后在拷贝到窗口的DC就是完成了这个窗口的刷新。

hDeskTop = GetDesktopWindow();
hDeskTopDC = GetDC(hDeskTop);//桌面窗口DC
hMemDC = CreateCompatibleDC(hDeskTopDC);//这建立的就是与桌面窗口兼容的DC
  • 1
  • 2
  • 3

CreateCompatibleDc函数只适用于支持光栅操作的设备,应用程序可以通过调用GetDeviceCaps函数来确定一个设备是否支持这些操作。

当不再需要内存设备上下文环境时,可调用DeleteDc函数删除它。

用双缓冲的话还要再定义一个位图对象吧,然后用CreateCompatibleBitmap建立一个与屏幕显示兼容的位图,再用SelectObject将位图选入到内存显示设备中。

https://blog.csdn.net/shellching/article/details/18405185

CDC绘图

CPaintDC dc(this); // device context for painting

    QRect ClientRect;
    ::GetClientRect(this, &ClientRect);  // 获取窗口客户区
    HDC memDC;  // 定义一个位图对象
    memDC = ::CreateCompatibleDC(&dc);  // 建立与屏幕显示兼容的内存显示设备

    // 建立与屏幕显示兼容的内存显示设备
    HBITMAP btScreen;
    btScreen = ::CreateCompatibleBitmap(&dc, ClientRect.Width(), ClientRect.Height());

    // 将位图选入到内存显示设备中(只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上)
    HBITMAP* pOld_bmp = ::SelectObject(&memDC, &btScreen);

    //CBrush brush(RGB(255,255,255));
    COLORREF cr1 = RGB(159,159,207);
    COLORREF cr2 = RGB(240,242,249);
    FillGradientRect(&memDC, &ClientRect, 0, cr1, cr2);  // 外框颜色渐变
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

画线

// MFC
//表示设置起点为(x1,y1),单纯的设置一个起点,并不画线
pDC->MoveTo(x1,y1);
//由设置的起点到(x2,y2)
pDc->LineTo(x2,y2);

// win
::MoveToEx(pDC, iPos, 6, NULL);  // 设置起点
::LineTo(pDC, iPos,23);  // 终点
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

GetTickCount() 返回自设备启动后的毫秒数(不含系统暂停时间)

::GetDC() 检索一指定窗口的客户区域或整个屏幕的显示 设备上下文环境的句柄

GetDeviceCaps() 检索指定设备的设备指定信息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/294238
推荐阅读
相关标签
  

闽ICP备14008679号