添加和显示图像叠加- Windows C DLL

本教程展示如何使用LEADTOOLS SDK在Windows C DLL应用程序中使用覆盖在主图像上绘制图像。

概述
总结 本教程介绍如何在Windows C DLL应用程序中使用图像叠加。
完成时间 20分钟
Visual Studio项目 下载教程项目(33kb)
平台 Windows C DLL应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS

所需的知识

步骤,熟悉创建项目和加载/显示图像的基本步骤添加引用和设置License而且加载、显示和保存图像教程,在工作之前添加和显示图像叠加- Windows C DLL教程。

创建项目并添加LEADTOOLS引用

中创建的项目的副本开始加载、显示和保存图像教程。如果您没有该项目,请按照该教程中的步骤创建它。

使用LEADTOOLS加载图像作为覆盖,您不需要任何额外的库加载、显示和保存图像教程,如下所示:

//添加你想要预编译的头文件#定义LTV22_CONFIG# include“C: \ LEADTOOLS22 \ \ L_Bitmap.h包括”//使用安装LEADTOOLS的实际路径#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltkrn_x.lib”#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltfil_x.lib”//文件加载和保存#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltdis_x.lib”//图像显示

请注意

有关应用程序需要哪些DLL文件的完整列表,请参阅你的申请中包含的文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。

添加加载叠加代码

创建了项目、添加了引用、设置了许可证以及加载、显示和保存图像教程添加,编码可以开始。

以下步骤适用于Visual Studio 2019;对于Visual Studio的其他版本,它们可能有所不同。

解决方案资源管理器,双击资源文件(.rc)。

添加一个新的覆盖的下拉菜单文件菜单和帮助菜单。在新增的覆盖菜单,添加加载图像为叠加&1菜单项。新项目的ID应该是ID_OVERLAYS_LOADIMAGEASOVERLAY1

指向函数,和下开关(wmId)语句的下面WM_COMMANDCase,添加一个新的CaseID_OVERLAYS_LOADIMAGEASOVERLAY1.首先,在我们加载覆盖之前,我们必须检查是否加载了主图像,因为没有它我们不能使用覆盖。检查LEADBmp旗帜。分配属性查看是否已加载。

将下面的代码添加到ID_OVERLAYS_LOADIMAGEASOVERLAY1案例加载叠加图像,并将其添加到主图像。

创建一个TCHAR字符串来保存正在加载的文件名。复制GetBitmapLoadingName ()方法。ID_FILE_OPENCase并将字符串和字符串的大小传递给它。这将允许用户选择一个文件作为覆盖。创建一个BITMAPHANDLE命名OverlayBmp并加载图像L_LoadBitmap ()

情况下ID_OVERLAYS_LOADIMAGEASOVERLAY1:如果(LEADBmp.Flags。分配= =){对话框(hWnd,文本("你必须先载入主图像"),文本(“LEADTOOLS演示”), MB_ICONERROR);打破TCHAR szFileName[260] = TEXT("");//文件名称如果= GetBitmapLoadingName(hWnd, szFileName, ARRAYSIZE(szFileName)))打破BITMAPHANDLE OverlayBmp;intnret = L_LoadBitmap(szFileName, &OverlayBmp,运算符(OverlayBmp), 0, ORDER_BGR, NULL, NULL);如果(OverlayBmp。BitsPerPixel != 1) {对话框(hWnd,文本(“覆盖图像必须为1bpp”),文本(“LEADTOOLS演示”), MB_ICONERROR);L_FreeBitmap (&OverlayBmp);打破如果(OverlayBmp。高度!= LEADBmp。高度|| OverlayBmp。宽度!= LEADBmp.Width) {对话框(hWnd,文本(叠加图像必须与主位图大小相同),文本(“LEADTOOLS演示”), MB_ICONERROR);L_FreeBitmap (&OverlayBmp);打破//如果位图的大小与LEADBmp相同,则替换当前的OverlayBmp是安全的nret = l_seoverlaybitmap (&LEADBmp, 0, &OverlayBmp, OVERLAY_MOVE);//获取已存在的Overlay属性OVERLAYATTRIBUTES属性= {0};nret = L_GetOverlayAttributes(&LEADBmp, 0, &attributes,运算符(0 xff OVERLAYATTRIBUTES));//改变覆盖颜色为蓝色属性。crColor = 0x00FF0000;//设置覆盖更新在L_PaintDC和当主图像被操作,如滚动或缩放属性。uFlags = OVERLAY_AUTOPAINT | OVERLAY_AUTOPROCESS;//设置颜色和标志属性nret = L_SetOverlayAttributes(&LEADBmp, 0, &attributes, 0x06);//立即更新显示InvalidateRect(hWnd, NULL, TRUE);//这是必要的,因为OVERLAY_MOVE创建了一个它单独处理的OverlayBmp的副本如果(OverlayBmp.Flags.Allocated)L_FreeBitmap (&OverlayBmp);打破

导航回资源文件(.rc)。在下面添加另一个菜单项覆盖命名加载图像为叠加&2.新项目的ID应该是ID_OVERLAYS_LOADIMAGEASOVERLAY2.这将允许我们加载第二个覆盖,我们可以分配不同的属性。

回到指向函数,在开关(wmId)语句,为之添加大小写ID_OVERLAYS_LOADIMAGEASOVERLAY2.将下面的代码添加到ID_OVERLAYS_LOADIMAGEASOVERLAY2情况下添加第二个覆盖,但这一次将在属性中分配颜色为绿色。

情况下ID_OVERLAYS_LOADIMAGEASOVERLAY2:如果(LEADBmp.Flags。分配= =){对话框(hWnd,文本("你必须先载入主图像"),文本(“LEADTOOLS演示”), MB_ICONERROR);打破TCHAR szFileName[260] = TEXT("");//文件名称如果= GetBitmapLoadingName(hWnd, szFileName, ARRAYSIZE(szFileName)))打破BITMAPHANDLE OverlayBmp;intnret = L_LoadBitmap(szFileName, &OverlayBmp,运算符(OverlayBmp), 0, ORDER_BGR, NULL, NULL);如果(OverlayBmp。BitsPerPixel != 1) {对话框(hWnd,文本(“覆盖图像必须为1bpp”),文本(“LEADTOOLS演示”), MB_ICONERROR);L_FreeBitmap (&OverlayBmp);打破如果(OverlayBmp。高度!= LEADBmp。高度|| OverlayBmp。宽度!= LEADBmp.Width) {对话框(hWnd,文本(叠加图像必须与主位图大小相同),文本(“LEADTOOLS演示”), MB_ICONERROR);L_FreeBitmap (&OverlayBmp);打破//如果位图的大小与LEADBmp相同,那么替换当前的OverlayBmp是安全的nret = l_seoverlaybitmap (&LEADBmp, 1, &OverlayBmp, OVERLAY_MOVE);//获取已存在的Overlay属性OVERLAYATTRIBUTES属性= {0};nret = L_GetOverlayAttributes(&LEADBmp, 1, &attributes,运算符(0 xff OVERLAYATTRIBUTES));//改变覆盖颜色为绿色属性。crColor = 0x0000FF00;//设置覆盖更新在L_PaintDC和当主图像被操作,如滚动或缩放属性。uFlags = OVERLAY_AUTOPAINT | OVERLAY_AUTOPROCESS;//设置颜色和标志属性nret = L_SetOverlayAttributes(&LEADBmp, 1, &attributes, 0x06);//立即更新显示InvalidateRect(hWnd, NULL, TRUE);//这是必要的,因为OVERLAY_MOVE创建了一个它单独处理的OverlayBmp的副本如果(OverlayBmp.Flags.Allocated)L_FreeBitmap (&OverlayBmp);

运行项目

按下运行项目F5,或选择Debug ->开始调试

如果正确地执行了这些步骤,应用程序将运行。请按照以下步骤进行测试:

出于测试目的,您可以使用示例文件在这里

总结

本教程介绍了如何在位图查看器上设置图像叠加而不改变图像数据。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2022领德科技有限公司版权所有。