请大家看一看这个问题牙!!!只有这么多分牙!!

时间:2022-09-06 14:14:57
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap bmpFrom, bmpTo;
bmpFrom.CreateCompatibleBitmap(&dc, rc1.Width(), rc1.Height() + frc.Height() * 2);
bmpTo.CreateCompatibleBitmap(&dc, rc1.Width(), rc1.Height() + frc.Height() * 2);
CDC * pDC = &memDC;
//创建位图设备上下文
CWnd * pWnd1 = GetFolderChild(iFrom);
CWnd * pWnd2 = GetFolderChild(iTo);
//取得当前连接子窗口

CBitmap * obmp = pDC->SelectObject(&bmpFrom);
//取得位图设备描述表
if (iTo > iFrom)
{
rc1.bottom += frc.Height() * 2;

//////////////////////////////////////////////////////////////////////
pDC->FillSolidRect(rc1, crBackGroundColor);
///////////////////////////////////////////////////////////////////////
//用背景色刷新位图
if (pWnd1) 
{//刷新树形窗口
BOOL bPrev = pWnd1->ShowWindow(SW_SHOW);
pWnd1->SendMessage(WM_ERASEBKGND, (WPARAM) pDC->GetSafeHdc(), (LPARAM) 0);
pWnd1->SendMessage(WM_PAINT, (WPARAM) pDC->GetSafeHdc(), (LPARAM) 0);
if (!bPrev) pWnd1->ShowWindow(SW_HIDE);
}//刷新图象列表
else PaintItems(pDC, iFrom, rc1);
///////////////////////////////////////////////////////////////////////
我的问题:


pDC->FillSolidRect(rc1, crBackGroundColor);这条语句的作用是什么???
(1)在内存装载 REC1 面积大小的位图
 (2)在内存位图装载 REC1 位置的位图???
希望大家能够帮我结实清楚牙!!!

/

6 个解决方案

#1


我急牙!!

#2


你说的很对呀,就是用背景色填充你的位图区域吧。

#3


Call this member function to fill the given rectangle with the specified solid color.

FillSolidRect is very similar to CDC::FillRect; however, FillSolidRect uses only solid colors (indicated by the COLORREF parameter), while FillRect takes a brush and therefore can be used to fill a rectangle with a solid color, a dithered color, hatched brushes, or a pattern. FillSolidRect usually is faster than FillRect.

就是用crBackGroundColor填充矩形rc1

#4


这个问题是当填充以后,内存设备要装载预定义的位图,位图是怎么装载呀???
究竟是装载呀!!!(1)是把刷新的屏幕装入RC1大小的地方!!!!
(2)还是将窗口对应RC1位置的刷新的内容装入位图!!!
我弄不明白呀!!!!

#5


就是刷新的 内容怎么装入位图呀????

#6


对了!!!
接下来是下面几条语句:
这几条语句:
CRgn itemRegion
itemRegion.CreateRectRgnIndirect(&RC1)
pDC->SelectClipRgn(&itemRegion)
itemRegion.DeleteObject()
.....调用GDI资源画图.......
..................
现在的问题比较清晰了!!!!
前面的语句是在内存设备中预定义一个RC1大小的位图

然后是创建一个剪裁区

最后是画图

问题:
    (1)位图是怎样在内存设备中装载: 究竟是刷新区域的位图装载一个RC1大小的位图还是把窗口中对应RC1坐标位置的位图装入内存设备。
    (2)关于创建剪裁区的那四条语句的用法详细解释一下!!! 

#1


我急牙!!

#2


你说的很对呀,就是用背景色填充你的位图区域吧。

#3


Call this member function to fill the given rectangle with the specified solid color.

FillSolidRect is very similar to CDC::FillRect; however, FillSolidRect uses only solid colors (indicated by the COLORREF parameter), while FillRect takes a brush and therefore can be used to fill a rectangle with a solid color, a dithered color, hatched brushes, or a pattern. FillSolidRect usually is faster than FillRect.

就是用crBackGroundColor填充矩形rc1

#4


这个问题是当填充以后,内存设备要装载预定义的位图,位图是怎么装载呀???
究竟是装载呀!!!(1)是把刷新的屏幕装入RC1大小的地方!!!!
(2)还是将窗口对应RC1位置的刷新的内容装入位图!!!
我弄不明白呀!!!!

#5


就是刷新的 内容怎么装入位图呀????

#6


对了!!!
接下来是下面几条语句:
这几条语句:
CRgn itemRegion
itemRegion.CreateRectRgnIndirect(&RC1)
pDC->SelectClipRgn(&itemRegion)
itemRegion.DeleteObject()
.....调用GDI资源画图.......
..................
现在的问题比较清晰了!!!!
前面的语句是在内存设备中预定义一个RC1大小的位图

然后是创建一个剪裁区

最后是画图

问题:
    (1)位图是怎样在内存设备中装载: 究竟是刷新区域的位图装载一个RC1大小的位图还是把窗口中对应RC1坐标位置的位图装入内存设备。
    (2)关于创建剪裁区的那四条语句的用法详细解释一下!!!