GDI+编程
时间:2022-05-03
本文章向大家介绍GDI+编程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Hi,蜜蜡。
今天写了个GDI+的应用,基本功能就是显示图片的。GDI的话对除了BMP之外的图片格式都不太友善,极度影响用户体验啊。GDI+的话,感觉就比GDI方便多了。
工程地址下载:点击打开链接
运行效果如图:
这里主要用了GDI+来处理图片,GDI+的使用大致流程:
//GDI+
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib,"Gdiplus.lib")
//(全局)变量
ULONG_PTR uToken = 0;
GdiplusStartupInput gdiplusStartupInput;
//初始化
GdiplusStartup(&uToken,&gdiplusStartupInput,NULL);
//使用
类Graphics
类Image、pen...
//释放
GdiplusShutdown(uToken);
考虑到移动图片后搽除背景的问题,把图片先画到一个内存graphics中,再输出到目标中。
CString path;
GetDlgItemText(IDC_EDIT1,path);
//CString转WCHAR
USES_CONVERSION;
WCHAR *filePath=T2W((LPCTSTR)path);
Image img(filePath);
Bitmap bmp(img.GetWidth(),img.GetHeight());
Graphics graphics1(GetDlgItem(IDC_GDIPLUS)->GetDC()->m_hDC); //目标绘图
Graphics* pgraphics2 = Graphics::FromImage(&bmp); //内存绘图
pgraphics2->Clear(Color(255,255,255,255)); //画上底色背景
pgraphics2->DrawImage(&img,X,Y,img.GetWidth(),img.GetHeight()); //画图片
graphics1.DrawImage(&bmp,0,0,img.GetWidth(),img.GetHeight()); //拷贝内存绘图
最后,就这样了。虽然很挫,但功能至少是有了,以后在改进吧。gongluck~
- 【设计模式】—— 桥接模式Bridge
- 【插件开发】—— 1 Eclipse插件开发导盲
- 【插件开发】—— 4 SWT编程须知
- 【插件开发】—— 5 SWT控件以及布局使用
- 【插件开发】—— 6 SWT 复杂控件使用以及布局
- 【插件开发】—— 7 SWT布局详解,不能再详细了!
- 【插件开发】—— 8 IPreferenceStore,插件的键/值存储!
- 【插件开发】—— 9 编辑器代码分块着色-高亮显示!
- 【插件开发】—— 10 JFace开发详解
- 【插件开发】—— 12 GEF入门
- 【插件开发】—— 13 GEF双击模型事件
- 给博客添加节日雪花
- 修改Cisco交换机密码
- MySQL服务无法正常启动的解决方法(1053错误)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu安装PHP和PHP Nginx配置方法
- Django在Ubuntu14.04的部署方法
- ubuntu19系统及以下版本安装android studio的教程
- CentOS7升级内核kernel5.0版本
- 详解ubuntu14.04如何设置静态IP的方法
- linux安装图形化界面的操作方法
- Apache FlinkCEP 实现超时状态监控的步骤详解
- 解决Centos7下crontab+shell脚本定期自动删除文件问题
- 详解在Ubuntu上的Apache配置SSL(https证书)的正确姿势
- 如何在 Linux 中查找一个命令或进程的执行时间
- Ubuntu 18.04 LTS中配置IP地址的完整步骤
- Linux系统下Nginx支持ipv6配置的方法
- 微信研发体系下的分布式配置系统设计概要
- Linux双网卡绑定脚本的方法示例
- Serverless 有一百种玩法,比好玩更好玩