WCF 绘图问题,如何实现在背景图上绘制坐标
void CMappingView::OnDraw(CDC* pDC)
{
/// 获取当前窗体矩形
CRect rect;
GetClientRect(rect);
/// 首先定义一个显示设备对象
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
/// 定义一个位图对象
CBitmap MemBitmap;
/// 创建位图大小
MemBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);
/// 画XY轴坐标
DrawCoordinate(&MemDC);
/// 将内存中的图像拷贝到显存中
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &MemDC, rect.left, rect.top, SRCCOPY);
/// 画XY轴背景图
DrawCameraImage(pDC, &MemDC);
/// 画定位点位
DrawVisualization(&MemDC);
//pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &MemDC, rect.left, rect.top, SRCCOPY);
/// 清空内存
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
}
void CMappingView::DrawCameraImage(CDC *pDC, CDC *memDC)
{
CMainFrame *p = (CMainFrame*)AfxGetMainWnd();
CMappingDoc *pDoc = (CMappingDoc*)GetDocument();
HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
"C:\\Windows\\Image_0619140611.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION );
if(hbm == NULL)
{
return;
}
CBitmap* pBitmap = CBitmap::FromHandle(hbm);
BITMAP bmpInfo;
pBitmap->GetBitmap(&bmpInfo);
CBitmap *pOldBitmap = pDC->SelectObject(pBitmap);
memDC->SelectObject(pBitmap);
CRect rect;
GetClientRect(rect);
raxis.left = rect.left + 60;
raxis.right = rect.right - 20;
raxis.top = rect.top + 20;
raxis.bottom = rect.bottom - 60;
int width = raxis.right - raxis.left + 1;
width = width % 4 ? (width + (4 - width % 4)) : width;
raxis.right = raxis.left + width - 1;
pDC->StretchBlt(
r.left,
r.top,
r.Width(),
r.Height(),
memDC,
0,0,
bmpInfo.bmWidth,
bmpInfo.bmHeight,
SRCCOPY);
pBitmap->DeleteObject();
}
目前是将定位放在最后,就会出现两个背景图,如果将定位放在输出背景图前,就会因为背景图拉伸问题,造成定位点偏移。
如果用背景图作为画刷的话,又无法拉伸背景。
试了很多方法都无法解决,请哪位高人指点一下

相关推荐
Vue基于springboot的乡村生态旅游平台_k2864o48毕业设计源码数据库.zip
Vue基于springboot的乡村生态旅游平台_k2864o48毕业设计源码数据库
Python3 datetime时区避坑指南
原生datetime.now()获取本地时间,不带时区属性,属于 naive时间,跨服务器比对会报错。带时区时间使用datetime.astimezone,强制绑定东八区时区。禁止手动加减8小时修改时差,夏令时更新会导致时间错误。时间计算:timedelta直接实现天数、小时增减,无需手动换算秒数。字符串解析使用strptime,格式化使用strftime,格式符号严格区分大小写,%Y四位年份、%y两位年份极易写错。线上时间异常大多源于时区不统一。 yc.ahsalar.com qsvsnks.yihucx.com tongjiang.xilaohan.com lq.aasmile.com xj.banutech.net
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-jcbbroJ3l1792421687
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;jcbbroJ3l1792421687 www.kfshiye.com www.wap.kfstjx.com www.kuaicai-mro.com lianyingjs.com www.kdd888.com
MATLAB实现了约束感知混合水波和灰狼优化,用于作物规划。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
国央企如何通过数据驱动实现数字化转型目标?.docx
国央企如何通过数据驱动实现数字化转型目标?


界面
