GDI和GDI+的应用场合思考

2023-10-30

 GDI是微软公司的著名的二维图形引擎,GDI+则是微软公司为了提高显示效果而推出的一种新型图形引擎。下面我就我的一些使用经验阐述二者适用的应用场合
 
GDI基本能满足一般的绘图要求。我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害,挑剔的客户会不满意(注:AutoCAD的绘制二维线应该是使用GDI的,它应该是降低了GDI的锯齿程度,不知它是怎么做到的?但依稀还能看到它的锯齿)。另外在复杂的绘图场合GDI确实不能满足要求,如绘制渐变色的线以及渐变色区域。这时GDI+确实是派上用场了,GDI+的表现效果确实比GDI好得多。但是GDI+的交互性不如GDI。比如GDI+不支持GDI的橡皮筋技术(即GDI的绘图模式)。GDI+不支持绘图模式也很好理解,因为GDI+的设计目标应该是为了取得更好的表现效果,如果支持位运算的绘图模式,势必搞得机制非常复杂。
 
可能有些同学比较藐视橡皮筋:橡皮筋也称得上是技术吗?确实橡皮筋的原理不复杂,但是它在用户交互中作用比较大。网上一些文章鼓吹使用双缓冲代替GDI的橡皮筋,说实话,这个做法小规模绘图或许可以用用,在一般的正规绘图软件中估计不会用,原因是什么?因为一般的正规绘图软件在整个客户区的绘图就是使用双缓冲绘图的,用户交互绘图本来就是一个随机过程,难不成你为每次用户绘图操作都开辟一个客户区大小的缓冲实现双缓冲区绘图?因此,这个实际上这个并不可行。
 
    GDI+也没有自己的双缓存机制,需要GDI的双缓存机制来支撑,具体是构造内存DC来实现。
 
    在图元比较多的时候GDI+的效率也会成问题,特别是开启反锯齿功能的时候。网上有人测试过GDI+在开启反锯齿时比QT开启反锯齿时慢了不少(他的实验是:分别用GDI GDI+ QT绘制宽度为3的线条999条,发现
GDI无抗锯齿:24ms
GDI+无抗锯齿:86ms
GDI+抗锯齿:800ms+
QT抗锯齿:220ms)
 
    因此我觉得比较好的二维绘图组合是:GDI负责交互绘图以及双缓存的实现,GDI+负责复杂显示效果的实现以及没有用户交互的绘图场合(当然在需要考虑绘图效率的绘图场合斟酌使用)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GDI和GDI+的应用场合思考 的相关文章

随机推荐

  • ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

    参考 Linux之ARM IMX6U 裸机之I MX6ULL启动方式详解 作者 一只青木呀 发布时间 2020 08 09 16 32 07 网址 https blog csdn net weixin 45309916 article de
  • qemu-system-x86_64方式创建KVM虚拟机

    一 QEMU介绍 QEMU是一款高效而实用的模拟器及虚拟机监管器 Virtual Machine Monitor VMM 主要提供两种功能给用户使用 一是作为用户态模拟器 利用动态代码翻译机制来执行不同于主机架构的代码 二是作为虚拟机监管器
  • CentOS 7 virt-install 命令行方式(非图形界面)安装KVM虚拟机

    环境及网卡配置请参考 https blog csdn net mshxuyi article details 98305715 创建镜像目录 mkdir p home vms virt install 配置文件 virt install n
  • Jenkins+allure执行unittest用例并生成allure报告(史上最全)

    对于allure报告的生成已经不是很新鲜的事情了 今天根据题目给大家做一个详细的配置过程说明一下 不管你的项目是pytest还是unittest都可以使用这种方式实现allure结果的产出 但是你的case一定要遵循框架的规则才可以 废话少
  • 【多区域电力系统模型】三区域电力系统的LQR和模糊逻辑控制(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 多区域电力系统模型是用来描述由多个区域组成
  • 群晖传文件到服务器,文件上传到群晖服务器

    文件上传到群晖服务器 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件 并以FTP或SFTP的形式上传到指定的服务器中 使用该功能前 管理员需要在FusionInsight Manager页面进行相关配置 监控数
  • 第十八章 多线程处理

    1 多线程基础 1 1 基本概念 进程 进程是操作系统中的一个基本概念 进程包含了一个程序运行所需的资源 一个进程包含多个线程 线程 线程是进程的基本执行单元 进程入口执行的第一个进程称为主线程 任务 任务是一个工作单元 目的是生成结果值
  • 闲鱼下单时显示服务器繁忙,闲鱼翻车记。闲鱼用验机报告需要注意的问题,否则分分钟被水鱼...

    闲鱼翻车记 闲鱼用验机报告需要注意的问题 否则分分钟被水鱼 2019 10 03 21 35 34 62点赞 75收藏 163评论 本文主要想说的 闲鱼验机报告觉得不合适 一定要拒绝本次交易 对自己有信心的话 干脆不要选验机服务 原由请看楼
  • 用ajax实现添加用户的功能,使用Ajax和forms实现注册用户所需功能

    这次给大家带来使用Ajax和forms实现注册用户所需功能 使用Ajax和forms实现注册用户所需功能的注意事项有哪些 下面就是实战案例 一起来看一下 前端HTML load static get static prefix as get
  • 机器学习-Sklearn-03(数据预处理和特征工程)

    机器学习 Sklearn 03 数据预处理和特征工程 学习03 1 概述 1 1 数据预处理与特征工程 数据不给力 再高级的算法都没有用 数据挖掘的五大流程 1 2 sklearn中的数据预处理和特征工程 sklearn中包含众多数据预处理
  • 【注意力机制】CBAM详解(文末附代码)

    论文题目 CBAM Convolutional Block Attention Module 论文地址 https arxiv org pdf 1807 06521 pdf 1 前言 论文 2018年 提出了一种轻量的注意力模块 CBAM
  • 所有文具的英文单词

    blackboard 黑板 a piece of chalk 粉笔slate pencil 石板笔wall map 挂图skeleton map 轮廓图 示意图globe 地球仪text book 课本dictionary 词典encycl
  • 位段

    1 什么是位段 在前面各章中 我们已经讨论过字节概念了 在大多数的计算机系统中 一个字节是由八个更小的 称作为位的单位组成的 位是比字节更小的单位 位只有两个值 1 或 0 因此 存储在计算机存储器中的一个字节可以看成由八个二进制数字形成的
  • 概率论基础(3)一维随机变量(离散型和连续型)

    概率论对于学习 NLP 方向的人 重要性不言而喻 于是我打算从概率论基础篇开始复习 也顺便巩固巩固基础 这是基础篇的第三篇知识点总结 基础 下面前两篇的链接地址 概率论基础 1 古典和几何概型及事件运算 概率论基础 2 条件概率 全概率公式
  • 应急响应--windows主机入侵排查思路

    在之前的工作和护网期间 工程师们在实施主机入侵入侵排查工作的时候 常常会面临时间紧 任务急 需要排查的主机数量众多的情况 为了确保实施人员在有限的时间范围内 可以高效且保证质量的前提下完成主机入侵排查工作 结合大佬们的叙述和自己的体会作如下
  • 2023年计算机视觉与模式识别国际会议(CCVPR 2023)

    会议简介 Brief Introduction 2023年计算机视觉与模式识别国际会议 CCVPR 2023 会议时间 2023年9月15日 17日 召开地点 英国 牛津 大会官网 www ccvpr org 计算机视觉技术与模式识别是现代
  • 上海2021年高考成绩排位查询,上海各区2021年一模成绩&排位情况汇总!

    一模重要性不言而喻 完全对标中考 本质上就是在看考生的区内排名 以下是我们收集到2021各区一模考的最新数据 分享出来供大家对比参考 注 以下各区一模信息来源于家长分享 仅供参考 徐汇区 一模均分 语文118 82 数学108 英语98 4
  • 分享一个加载按钮动画

    先看效果 再看代码
  • Mac查看本机IP

    查看某个网络适配器下的本地IP 1 Mac查看本机IP 终端命令 ifconfig en0 或者 ifconfig 2 查看外网IP地址可打开ip138进行查询 3 手机预览页面 手机可以用ip和端口号访问电脑 可用于在线调试本地项目 步骤
  • GDI和GDI+的应用场合思考

    GDI是微软公司的著名的二维图形引擎 GDI 则是微软公司为了提高显示效果而推出的一种新型图形引擎 下面我就我的一些使用经验阐述二者适用的应用场合 GDI基本能满足一般的绘图要求 我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害