画图问题
时间:2011-12-10
来源:互联网
我在void CInput1::OnPaint()
{
CPaintDC dc(this); // device context for painting
Draw_Bk_Text(&dc);
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
}
函数里调用的Draw_Bk_Text(&dc);这个函数,由于onpaint()里画的太多了我就另外定义一个函数Draw_Bk_Text(&dc);
Draw_Bk_Text(&dc);函数如下
C/C++ code
{
CPaintDC dc(this); // device context for painting
Draw_Bk_Text(&dc);
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
}
函数里调用的Draw_Bk_Text(&dc);这个函数,由于onpaint()里画的太多了我就另外定义一个函数Draw_Bk_Text(&dc);
Draw_Bk_Text(&dc);函数如下
C/C++ code
void CInput1::Draw_Bk_Text(CPaintDC*dc) { CDC CompatibleDc; CRect rect; GetClientRect(&rect); rect.top+=330;//下半部分的高度 CompatibleDc.CreateCompatibleDC(dc); CBitmap CompatiblebitMap; CompatiblebitMap.CreateCompatibleBitmap(dc,rect.Width(),rect.Height());//创建兼容位图将来要画的东西就往这上面画 CBitmap*pcompatible=CompatibleDc.SelectObject(&CompatiblebitMap); CompatibleDc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(94,96,97));//填充这块画布的背景色 //这里写下半要画的 CPen pen(PS_SOLID,3,RGB(255,0,0)); CPen*pOldpen=CompatibleDc.SelectObject(&pen); CompatibleDc.MoveTo(140,338); CompatibleDc.LineTo(140,520); dc->BitBlt(0,335,rect.Width(),rect.Height(),&CompatibleDc,0,0,SRCCOPY); CompatiblebitMap.DeleteObject(); ReleaseDC(&CompatibleDc); CompatibleDc.SelectObject(pOldpen); // CompatibleDc.SelectObject(pOldbrush); }怎么 这条直线就不显示呢?请高手指点 谢谢
作者: ganggangban 发布时间: 2011-12-10
你尝试下这样:
rect.top += 330; 不使用这样兼容位图的大小和窗口大小不一致的方式,否则来回转换坐标可能会让你有点搞糊涂,比如你这样加上top加上330后,还需要确定rect的高度包含你MoveTo和LineTo的坐标在内;简单点,目标和源DC的位图一样大小,一样坐标;
另外,删除兼容DC,使用DeleteDC,而且CompatibleDc.SelectObject(pOldpen)在删除兼容DC之前操作。
rect.top += 330; 不使用这样兼容位图的大小和窗口大小不一致的方式,否则来回转换坐标可能会让你有点搞糊涂,比如你这样加上top加上330后,还需要确定rect的高度包含你MoveTo和LineTo的坐标在内;简单点,目标和源DC的位图一样大小,一样坐标;
另外,删除兼容DC,使用DeleteDC,而且CompatibleDc.SelectObject(pOldpen)在删除兼容DC之前操作。
作者: dream0411 发布时间: 2011-12-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28