您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> VIEW中防闪烁

VIEW中防闪烁

来源:网络整理     时间:2016/7/6 16:51:41     关键词:

关于网友提出的“ VIEW中防闪烁”问题疑问,本网通过在网上对“ VIEW中防闪烁”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: VIEW中防闪烁
描述:

建立了一个LoadBmp的工程
CLoadBmpView::CLoadBmpView()
{
// TODO: add construction code here
m_hBmp = LoadImage(NULL,"111.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
}
CLoadBmpView::~CLoadBmpView()
{
}
BOOL CLoadBmpView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CLoadBmpView drawing
const int X_ORIGINAL = 138;
const int Y_ORIGINAL = 318;
void CLoadBmpView::OnDraw(CDC* pDC)
{
CLoadBmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap bmp;
bmp.Attach(m_hBmp);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmp);
BITMAP BitInfo;
bmp.GetBitmap(&BitInfo);
int x = BitInfo.bmWidth;
int y = BitInfo.bmHeight;
pDC->BitBlt(0,0,x,y,&memDC,0,0,SRCCOPY);
bmp.Detach();
memDC.DeleteDC();
// pDoc->SetModifiedFlag();
    pDoc->UpdateAllViews(NULL);
CPen pen(PS_SOLID,3,RGB(0,255,0));
CPen *pOldPen = pDC->SelectObject(&pen);
float x2=0;
float y2=0;
pDC->MoveTo(X_ORIGINAL,Y_ORIGINAL);
for(int i=0;i<500;i++)
{
x2=pDoc->f2;
y2=pDoc->f3;
pDC->LineTo(x2,y2);
}
//  pDC->LineTo(1234,3434);
 
}
f2,f3是对应的DOC的参数,如何防闪烁呢?


解决方案1:

引用 1 楼 raistlin010 的回复:
你既然用了内存DC,就用到底啊。不会闪烁

确应如此。如果继续闪烁,那么就与你的外部控制有关系了。 解决方案2:

1) memDC可以作为成员变量在外面Create好
2) 画线操作画在memDC上应该好一点些

解决方案3:

你既然用了内存DC,就用到底啊。不会闪烁

解决方案4:

1) memDC可以作为成员变量在外面Create好
2) 画线操作画在memDC上应该好一点些

解决方案5:

防闪烁都是用双缓冲,要用bitblt,而不要用invalidate之类的来刷新。


以上介绍了“ VIEW中防闪烁”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2343928.html

相关图片

相关文章