WCF 绘图问题,如何实现在背景图上绘制坐标

新月星雪 新月星雪 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如图所示,我需要将黑色背景部分换成位图。现在遇到问题,当加入位图后,无法显示图上的定位坐标。

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

2601_97221268

前端开发基于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

2601_97196180

MATLAB实现了约束感知混合水波和灰狼优化,用于作物规划。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

国央企如何通过数据驱动实现数字化转型目标?.docx

国央企如何通过数据驱动实现数字化转型目标?

BIZKEEN
评论 3
收藏 已收藏
分享
返回顶部
新月星雪
界面 15,976 成员 115,866 内容