图形图像显示研究(一)
作者:朱金灿
来源:www.cnblogs.com/clever101
一.前言
最近因为工作需要,也因为自己的兴趣,决心好好研究一下图形图像的显示。图形图像显示,既可以说是一个古老的研究课题,也可以说是一个年轻的课题。说它老,或许它可以和计算机的历史一样长。说它年轻,和很多老课题一样,随着多线程、GPU等新技术的诞生又焕发了新的面貌。
闲话少说,言归正传。在这次研究中,我初步计划是:首先研究大图像的快速显示,包括在GDI、GDI+、OpenGL环境下漫游、放大、缩小和拖动等等以及效率测试、双缓冲绘图等等;其次是大图像的金字塔算法;三是矢量图形的快速显示;四是新技术在图形图像显示方面的应用,具体方法是下载资料和源码,看资料和源码。
二.简单的位图显示
事实上进行简单的位图显示是一件很简单的事情。只需要在视图类的OnDraw函数加入下面的代码:
void CShowBmpView::OnDraw(CDC* pDC)
{
CShowBmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_AllowShowBmp) //假如允许显示bmp图片
{
CBitmap bitmap; //定义一个位图类变量
/*从文件中装入位图*/
HBITMAP chbitmap = (HBITMAP)LoadImage(
NULL, //如果从资源加载,则指明包含位图资源的程序实例句柄
m_FilePath,//位图文件路径(含文件名)
IMAGE_BITMAP,//加载的图像类型为位图
0,0, //宽度和高度,0表示使用默认值
LR_LOADFROMFILE); //加载标志,表明从文件加载
bitmap.Attach(chbitmap);
/*创建一个兼容DC*/
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
/*将位图选入兼容DC中*/
dcComp.SelectObject(&bitmap);
BITMAP bminfo; //定义位图信息结构体变量
bitmap.GetObject(sizeof(bminfo),&bminfo);//取得位图信息
pDC->BitBlt(
0,0, //显示位置
bminfo.bmWidth,bminfo.bmHeight,//显示位图的宽度和高度
&dcComp, //位图所在的兼容DC
0,0, //兼容DC中的位置
SRCCOPY); //显示方式,表示直接复制
}
}
{
CShowBmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_AllowShowBmp) //假如允许显示bmp图片
{
CBitmap bitmap; //定义一个位图类变量
/*从文件中装入位图*/
HBITMAP chbitmap = (HBITMAP)LoadImage(
NULL, //如果从资源加载,则指明包含位图资源的程序实例句柄
m_FilePath,//位图文件路径(含文件名)
IMAGE_BITMAP,//加载的图像类型为位图
0,0, //宽度和高度,0表示使用默认值
LR_LOADFROMFILE); //加载标志,表明从文件加载
bitmap.Attach(chbitmap);
/*创建一个兼容DC*/
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
/*将位图选入兼容DC中*/
dcComp.SelectObject(&bitmap);
BITMAP bminfo; //定义位图信息结构体变量
bitmap.GetObject(sizeof(bminfo),&bminfo);//取得位图信息
pDC->BitBlt(
0,0, //显示位置
bminfo.bmWidth,bminfo.bmHeight,//显示位图的宽度和高度
&dcComp, //位图所在的兼容DC
0,0, //兼容DC中的位置
SRCCOPY); //显示方式,表示直接复制
}
}
未完待续!
标签:
图形图像显示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述