【求助】关于颜色线条变色问题 程序已经实现线条的变色,线条可以变成绿色,蓝色。在实际的使用过程中,反复的变换蓝绿色,就出错了,变换颜色第一次就正常,第二次就报错了,是不是在变换颜色后要做什么工作,以免在变回去的时候报错呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要在OnTimer里画图不要在工作者线程里画图不要在OnPaint里死皮赖脸的用循环 void ChatDlg::OnPaint(){ CPaintDC dc(this); CRect rect; GetClientRect(rect);//窗口大小 CDC dcBuffer;//后台缓存 dcBuffer.CreateCompatibleDC(&dc); //dcBuffer.CreateCompatibleDC(dc); CBitmap dfbmp;//设置后台缓存大小 dfbmp.CreateCompatibleBitmap(&dc,rect.right,rect.bottom); dcBuffer.SelectObject(&dfbmp); dcBuffer.FillRect(&rect, &CBrush(RGB(255,255,255))); dcBuffer.SetBkMode(TRANSPARENT); //m_imageBG.Draw(dcBuffer.m_hDC,rect); if (CHAT_SIZE_STATE_NORMAL == m_nChatSizeState) { CPen cpen(PS_SOLID,1,RGB(128,179,210)); dcBuffer.SelectObject(&cpen); dcBuffer.MoveTo(0,69); dcBuffer.LineTo(0,430); } else if (CHAT_SIZE_STATE_MAX == m_nChatSizeState) { CPen cpen(PS_SOLID,1,RGB(128,179,210)); dcBuffer.SelectObject(&cpen); dcBuffer.MoveTo(0,69); dcBuffer.LineTo(0,m_rtChatRect.bottom); } CFont font;//字体设置 font.CreateFont(15,0,0,0,FW_MEDIUM,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"Arial"); dcBuffer.SelectObject(&font); dcBuffer.SetTextColor(RGB(0,100,150));//字体颜色 dcBuffer.TextOut(m_rtChatRect.right - 175,188,m_charlist.strJoin); dcBuffer.SetTextColor(RGB(0,0,0));//字体颜色 dcBuffer.TextOut(m_rtChatRect.right - 175,75,m_charlist.strQueueName); dc.BitBlt(0,0,rect.right,rect.bottom,&dcBuffer,0,0,SRCCOPY);//将后台缓冲COPY到前台SRCPAINT } 感觉是变量的问题,你可以将你的成员变量设置为全局的试试;或者给成static模式 http://download.csdn.net/source/3495311 问下 UDP传文件的问题 VC,ADO连接远程SQLServer,如何连接?给个串,谢谢 这是什么错误?? 如何CView中切分两个窗口CUpView和CDownView? 一个程序流程的问题 有关matlab的大型矩阵的问题??? 如何在VC中开发可编辑的网格(Grid)急!!!!!! 100分求c++画扇形的算法或源代码 记事本(notepade.exe)打开jpg图像的问题 请问有没有中文的pdf文件格式手册,英文得太难懂了。 幼稚点问题 求助,希望老手指引学习方向
不要在工作者线程里画图不要在OnPaint里死皮赖脸的用循环
void ChatDlg::OnPaint()
{
CPaintDC dc(this); CRect rect;
GetClientRect(rect);//窗口大小
CDC dcBuffer;//后台缓存
dcBuffer.CreateCompatibleDC(&dc);
//dcBuffer.CreateCompatibleDC(dc);
CBitmap dfbmp;//设置后台缓存大小
dfbmp.CreateCompatibleBitmap(&dc,rect.right,rect.bottom);
dcBuffer.SelectObject(&dfbmp);
dcBuffer.FillRect(&rect, &CBrush(RGB(255,255,255)));
dcBuffer.SetBkMode(TRANSPARENT);
//m_imageBG.Draw(dcBuffer.m_hDC,rect);
if (CHAT_SIZE_STATE_NORMAL == m_nChatSizeState)
{
CPen cpen(PS_SOLID,1,RGB(128,179,210));
dcBuffer.SelectObject(&cpen);
dcBuffer.MoveTo(0,69);
dcBuffer.LineTo(0,430);
}
else if (CHAT_SIZE_STATE_MAX == m_nChatSizeState)
{
CPen cpen(PS_SOLID,1,RGB(128,179,210));
dcBuffer.SelectObject(&cpen);
dcBuffer.MoveTo(0,69);
dcBuffer.LineTo(0,m_rtChatRect.bottom);
}
CFont font;//字体设置
font.CreateFont(15,0,0,0,FW_MEDIUM,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"Arial");
dcBuffer.SelectObject(&font); dcBuffer.SetTextColor(RGB(0,100,150));//字体颜色
dcBuffer.TextOut(m_rtChatRect.right - 175,188,m_charlist.strJoin); dcBuffer.SetTextColor(RGB(0,0,0));//字体颜色
dcBuffer.TextOut(m_rtChatRect.right - 175,75,m_charlist.strQueueName); dc.BitBlt(0,0,rect.right,rect.bottom,&dcBuffer,0,0,SRCCOPY);//将后台缓冲COPY到前台SRCPAINT
}