急!怎样把内存中的数据块显示出来??
int CMyFile::Draw(PVOID pdata1)
{
DATA* pd = (DATA*)pdata1;
CDC* dc = pd->pdc;
int data_h = pd->h;
int dc_h = pd->rby - pd->lty+1;
int dc_w = pd->rbx - pd->ltx+1;
int colorwidth = 4*((dc_w*8+31)/32);
short* p = pd->pdata;
LPBITMAPINFO bi;
bi = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];//申请空间
bi->bmiHeader.biBitCount = 8;
bi->bmiHeader.biClrImportant = 0;
bi->bmiHeader.biCompression = BI_RGB;
bi->bmiHeader.biHeight = dc_h;
bi->bmiHeader.biPlanes = 1;
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi->bmiHeader.biSizeImage = 0;
bi->bmiHeader.biWidth = dc_w;
bi->bmiHeader.biXPelsPerMeter = 0;
bi->bmiHeader.biYPelsPerMeter = 0;
for (int ii = 0; ii < 256;ii++)
{
bi->bmiColors[ii].rgbBlue = ii;
bi->bmiColors[ii].rgbGreen= ii;
bi->bmiColors[ii].rgbRed = ii;
bi->bmiColors[ii].rgbReserved = 0;
}
BYTE* lpBits;
CDC* memdc=new CDC();
memdc->CreateCompatibleDC(dc);
HBITMAP hBitmap=::CreateDIBSection(memdc->m_hDC,bi,DIB_RGB_COLORS,(void**)&lpBits,NULL,0);
if (!hBitmap)
{
AfxMessageBox(TEXT("111"));
}
ASSERT(hBitmap!=NULL);
int j =0;
float ratio = (float)pd->h/(float)dc_h;
for(int i = 0; i < colorwidth;++i)
{
for (j = 0;j < dc_h;++j)
{
//lpBits[i*dc_h+j] = ((p[(int)( pd->h * i +j*ratio)]+32768)>>8);
}
}
HBITMAP oldbitmap = (HBITMAP)memdc->SelectObject(hBitmap);
dc->BitBlt(pd->ltx,pd->lty,dc_w,dc_h,memdc,0,0,SRCCOPY);
memdc->SelectObject(oldbitmap);
delete bi;
DeleteObject(hBitmap);
memdc->DeleteDC();
delete memdc;
return 1;
}
我用的CreateDIBSection函数 总是得不到正确的图像
相关推荐
掌握PLC多重背景数据块的实战技巧
数据块(DB)是PLC(可编程逻辑控制器)编程中用于存储数据的内存区域。数据块可以被组织成不同类型的结构,以满足各种数据存储需求。在结构上,数据块主要分为以下几类:基础数据块:用于存储基本数据类型,如整数、浮点数、布尔值等。数组数据块:存储一维或多维数组,适用于对数据进行批量处理。结构化数据块:允许用户创建复合数据类型,包含多种不同数据类型的字段。实例数据块:通常与块调用相关联,存储函数块或方法的实例数据。多重背景数据块。
技术转移机构如何基于数据提升项目撮合精准度?.docx
技术转移机构如何基于数据提升项目撮合精准度?
超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)
内容概要:本文系统研究了超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无感控制中的应用,重点涵盖其理论基础、离散化实现方法及Simulink仿真验证。文章深入阐述了两种高阶滑模控制策略的设计原理,利用磁链无感观测技术实现转子位置与速度的精确估计,从而省去物理传感器,有效提升了系统的可靠性与鲁棒性。同时,提供了完整的Simulink仿真模型构建方案,包括控制器设计、关键参数整定及动态响应性能分析,充分验证了所提出的方法在零速与低速工况下的卓越控制性能和有效性。; 适合人群:具备电机控制、现代控制理论基础知识及熟练掌握MATLAB/Simulink仿真技能的研究生、科研人员与工程技术人员。; 使用场景及目标:①深入理解高阶滑模控制在电机驱动系统中的设计思想与具体实现;②掌握基于滑模观测器的无感控制核心技术;③开展永磁同步电机高性能控制算法的理论研究、仿真验证与工程化探索。; 阅读建议:建议将文中详尽的理论推导与Simulink仿真模型相结合进行学习,重点关注滑模面的构建、抖振抑制策略的实施以及离散化处理的细节,有条件的研究者可进一步将算法移植到DSP等硬件平台进行实验验证,以深化对理论的理解并检验其实际应用效果。
多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)
内容概要:本文系统阐述了基于Matlab的多源动态最优潮流分布鲁棒优化方法,聚焦于IEEE118节点电力系统,旨在应对高比例可再生能源接入背景下源荷双重不确定性所带来的调度挑战。该方法深度融合分布鲁棒优化理论,通过构建能够抵御最坏情况概率分布的决策模型,有效提升了电力系统在复杂不确定性环境下的运行安全性、经济性与可靠性。研究不仅提供了完整的Matlab代码实现,便于结果复现与算法验证,还特别关注了含风电等新能源的现代电网低碳调度问题,为解决实际工程中的优化调度难题提供了强有力的理论支撑和技术工具。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、科研人员及从事智能电网优化运行、能源系统规划等相关领域的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源接入的电力系统动态最优潮流问题;②掌握分布鲁棒优化在电力系统经济调度、低碳调度中的建模思想与求解方法;③利用IEEE118标准测试系统进行算法有效性验证与性能对比分析;④基于所提供的Matlab代码进行二次开发,探索新型不确定性优化理论在电力系统中的创新应用。; 阅读建议:建议读者结合电力系统最优潮流、不确定性优化理论(特别是分布鲁棒优化)的背景知识进行学习,重点关注模型的构建逻辑、目标函数与约束条件的设计原理,以及Matlab代码的具体实现细节。在学习过程中,应动手调试代码,尝试修改系统参数(如新能源出力波动范围、负荷水平等),以观察不同场景下优化结果的变化,从而深刻理解该方法的适应性、优势及其潜在的局限性。
车间调度基于GA、PSO、SA、ACO、TS优化算法的车间调度比较研究(Matlab代码实现)
内容概要:本文系统性地比较了遗传算法(GA)、粒子群优化(PSO)、模拟退火(SA)、蚁群优化(ACO)和禁忌搜索(TS)五种智能优化算法在车间调度问题中的性能表现,并提供了基于Matlab的完整代码实现。研究聚焦于调度优化的核心目标——最小化完工时间(makespan),通过标准测试案例对各算法的收敛速度、求解精度和稳定性进行了深入对比分析,旨在为实际生产调度中算法的选择与改进提供科学依据。文中不仅详述了每种算法的设计思路与关键参数设置,还展示了其实现逻辑,便于读者理解、复现与拓展。; 适合人群:从事智能制造、工业工程、运筹优化等相关领域的研究人员,以及具备Matlab编程基础、希望将智能优化算法应用于实际调度问题的研究生和工程师。; 使用场景及目标:① 掌握主流智能优化算法在解决NP-hard车间调度问题上的具体应用与差异;② 学习如何利用Matlab实现并对比不同优化算法的性能;③ 为解决生产制造、物流配送等领域中的资源调度难题提供算法选型和技术参考。; 阅读建议:建议读者在阅读时重点关注各算法的Matlab实现代码和实验结果对比部分,动手运行代码以直观感受不同算法的寻优过程和效果差异。同时,可结合具体调度约束条件,尝试调整算法参数或融合多种算法思想,以深化对优化机理的理解。


图形处理/算法
