使用双缓冲绘图,缩小后,使用滑动条,隐藏部分显示白色,不是图片部分

robbi666 2013-07-04 09:13:55
从CScrollView派生出一个子类CScrollView

void CScrollView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();

CSize sizeTotal;
// TODO: 计算此视图的合计大小
sizeTotal.cx = sizeTotal.cy = 800;
SetScrollSizes(MM_TEXT, sizeTotal);

HBITMAP hBmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BK_BMP));
m_pBitmap.Attach(hBmp);
}

void CtestSCrollViewView::OnDraw(CDC* pDC)
{
CtestSCrollViewDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CRect rect;
GetClientRect(&rect);
CPoint pt = GetScrollPosition();
rect.OffsetRect(pt);
CDC dcMem;
CBitmap bmp;
dcMem.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
dcMem.SelectObject(&bmp);

CBrush brush;
brush.CreatePatternBrush(&m_pBitmap); //创建模式画刷
dcMem.FillRect(&rect,&brush);

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);

dcMem.DeleteDC();
bmp.DeleteObject();
}

只要使用滑动条,之前隐藏的部分显示白色,而不是图片内容
有哪位仁兄能够解决一下,谢谢
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-08-05
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
robbi666 2013-07-04
  • 打赏
  • 举报
回复
问题解决了。
robbi666 2013-07-04
  • 打赏
  • 举报
回复
BitBlt这个函数是前面是目标,后面是源,这个我试过,不行
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,rect.left,rect.top,SRCCOPY);
CPoint pt = GetScrollPosition();
rect.OffsetRect(pt);
这个联系滑动条啊
lgstudyvc 2013-07-04
  • 打赏
  • 举报
回复
BitBlt坐标参数,看仔细了 那个是源的,那个是目标的
Eleven 2013-07-04
  • 打赏
  • 举报
回复
codeproject上搜索CScrollHelper
schlafenhamster 2013-07-04
  • 打赏
  • 举报
回复
OnDraw 中 要 与 滚动条 位置 联系 起来。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧