网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月17日漏签0天
vc吧 关注:28,907贴子:110,697
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回vc吧
>0< 加载中...

CScrollView类在MM_LOENGLISH模式下用双缓冲画图问题,急!!

  • 只看楼主
  • 收藏

  • 回复
  • xiaoqiang749
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想在MFC中应用双缓存技术来消除闪烁,代码如下(为了测试,先只画了一条直线):
void CDblBufTestView::OnDraw(CDC* pDC)
{
CDC dcMem;
dcMem.CreateCompatibleDC(pDC); //创建与视图的设备相兼容的内存设备
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rect.right,rect.bottom); //创建一个与视图兼容的位图
CBitmap* pOldBmp=dcMem.SelectObject(&bmp);
dcMem.FillSolidRect(0,0,3000,2000,WHITE);
dcMem.MoveTo(20,20);
dcMem.LineTo(40,100);
dcMem.LineTo(50,200);
dcMem.LineTo(200,500);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBmp);
dcMem.DeleteDC();
}
其中,为了窗口有滚动条,CDblBufTestView的基类设为了CScrollView
为设置滚动条,重写了OnInitialUpdate,如下
void CDblBufTestView::OnInitialUpdate()
{
CSize siz(2000,10000);
SetScrollSizes(MM_LOENGLISH,siz);
SetTimer(TIME1,10,NULL);
}
运行后不显示在OnDraw中画的直线,查看之后发现是坐标系的问题,将OnInitialUpdate函数中的MM_LOENGLISH修改为MM_TEXT即可显示出直线。
但是我想应用MM_LOENGLISH,请问应该怎么修改,才能正常显示?(我尝试过修改画直线的坐标为
dcMem.MoveTo(20,-20);
dcMem.LineTo(40,-100);
dcMem.LineTo(50,-200);
dcMem.LineTo(200,-500);
但是还是不能显示。)


  • xiaoqiang749
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有没有高手会这个问题啊,有的话给指教下!万分感谢


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回vc吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示