界面控件DevExpress.Drawing图形库早期增强功能分享

众所周知,DevExpress在v22.2发布周期中引入了全新的DevExpress.Drawing图形库(并且已经在随后的小更新中引入了一系列增强功能)。

在这篇博文中,我们将总结在DevExpress v23.1中解决的一些问题,以及在EAP构建中为以下DevExpress产品提供的功能:

  • Office File API
  • Reporting
  • BI Dashboard

DevExpress v23.1正式版下载(Q技术交流:523159565)

如果您拥有一个Universal Subscription,请随时下载此早期访问预览(EAP)构建。

Reporting 和 BI Dashboard

当使用DevExpress Reports和BI Dashboard时,以下与绘图库相关的功能/特性现在在非windows环境中可用

  • 在标签中呈现对齐的文本
  • 尊重XRPictureBox内的源图像分辨率(DPI)
  • 使用XRPdfContent报表控件将PDF嵌入到报表文档中
  • 使用XRGauge报表控件在报告文档中显示和打印仪表
  • 使用 ImageExportOptions.Resolution 属性来指定生成的图像分辨率
  • 将所有报表页面导出为单个TIFF图像(SingleFile导出模式)
  • 为导出为PDF文件的报表文档自动替换缺失的字体
  • 使用BI Dashboards时,可以导出仪表和树图

为了改善整体开发人员的体验,我们还将公共API中的所有System.Drawing枚举替换为跨平台的对应项。完整的API列表请参考以下重大变更:Office-Inspired Products, Barcode Generation API, Reporting, and Printing - Members changed their types and signatures

Office File API

在Word Processing和Spreadsheet Document API中的形状

v23.1解决了与使用Shape API(电子表格和文字处理文档API)相关的限制,Word和Excel文档(带形状)现在可以导出为PDF和其他非windows环境中的可用格式。用户可以像以前一样使用Shape API来根据需要管理形状,虽然在这个版本中解决了许多问题,但仍有一些工作要做。目前还不支持/导出半透明图像和包含元文件的形状。

PDF Graphics API

PDF Graphics API是一个PDF文档API的一个子集,它允许用户在PDF文件中创建图形内容,这个功能与System.Drawing.Graphics命名空间紧密相连,实现了与GDI+ API类似的功能。Graphics API是一个全面的子集,因此我们投入了大量精力使其与新图形库一起工作,目前这个功能可以在非windows环境中使用,所有方法都包含重载,这些重载使用DevExpress.Drawing类和枚举。例如,您现在可以在PDF页面上绘制图像,如下所示(无论目标操作系统如何,此代码都将正常运行):

using (var processor = new PdfDocumentProcessor()) {
processor.LoadDocument("Documents//Document.pdf");using (PdfGraphics graphics = processor.CreateGraphics()) {// Obtain the first document page
PdfPage page = processor.Document.Pages[0];
PdfRectangle rect = page.CropBox;// Specify the image to draw
using (var stream =
new FileStream("Documents//DevExpress.png", FileMode.Open, FileAccess.Read)) {
using (DXImage image = DXImage.FromStream(stream)) {// Calculate image position
RectangleF pageCenter =
new RectangleF((float)rect.Width / 2 - image.Width / 2,
(float)rect.Height / 2 - image.Height / 2, image.Width, image.Height);// Draw an image into the calculated area
graphics.DrawImage(image, pageCenter);// Add graphics content to the page foreground
graphics.AddToPageForeground(page, 72, 72);
}
}
}
processor.SaveDocument("result.pdf");
}
导出到位图和图像提取

v23.1包括一个新的PdfDocumentProcessor.CreateDXBitmap方法,它返回一个 DXBitmap 对象,您还可以使用PdfDocumentSigner.CreateDXBitmap方法来生成签名图像。

PDF Document API还包括一个GetImages方法(允许您从PDF文件中检索所有图像),此方法返回位图对象列表,因此此功能在非Windows环境中不可用。就像CreateBitmap-CreateDXBitmap对一样,我们添加了一个GetDXImages方法来返回DXBitmap对象的列表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中点云聚类算法的实现与应用探索

第一部分:C中点云聚类算法的实现与应用 在当今的计算机视觉领域,点云数据是一种重要的三维数据类型,它能有效表达三维物体的形状信息。然而,由于点云数据的无序性和稀疏性,对其进行分析与处理的难度较大。本文将介绍如…

Android 13 Hotseat定制化修改——006 hotseat图标禁止移动到Launcher中

目录 一.背景 二.方案 三.具体实践 一.背景 客户定制需要修改让hotseat中的icon不要移动到Launcher中,所以需要进行定制 二.方案 原生的Hotseat与Launcher是可以相互移动的,然后现在的需求是Hotseat中的图标只能在Hotseat中移动,所以需要做下限制 思路:在事件拦截的地…

代码随想录算法训练营day59

文章目录 Day59 下一个更大元素II题目思路代码 接雨水题目思路代码 Day59 下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 题目 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每…

ChatGPT“侵入”校园,教学评价体制受冲击,需作出调整

北密歇根大学的教授奥曼在学生作业中发现了一篇关于世界宗教的“完美论文”。“这篇文章写得比大多数学生都要好......好到不符合我对学生的预期!”他去问ChatGPT:“这是你写的吗?”ChatGPT回答:“99.9%的概率是的。” ChatGPT“侵…

【Axure 教程】动态面板

【动态面板】是 Axure 中另外一个神级的元件,它的江湖地位可以说跟【中继器】不相上下,【动态面板】提供了简单的配置,却可以实现非常丰富的效果,在实际设计中应用非常广泛。 对于刚入门的产品经理来说,学习【动态面板…

AndroidStudio学习笔记

AndroidStudio学习笔记/踩坑 webview组件和其他组件起冲突问题解决方法原因 webview组件和其他组件起冲突 问题 webview和NestedScrollView组件一起使用时,会出现webview无法滑动的问题 解决方法 NestedScrollView nestedScrollView getView().findViewById(R.id.mine_scro…

Bootload U-Boot分析

Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。 对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此…

C++11之右值引用

C11之右值引用 传统的C语法中就有引用的语法,而C11中新增了的 右值引用(rvalue reference)语法特性,所以从现在开始我们之前学习的引用就叫做左值引用(lvalue reference)。无论左值引用还是右值引用&#…

题目:2293.极大极小游戏

​​题目来源: leetcode题目,网址:2293. 极大极小游戏 - 力扣(LeetCode) 解题思路: 按要求模拟即可。 解题代码: class Solution {public int minMaxGame(int[] nums) {int nnums.length;whi…

BIO 阻塞式IO

BIO 阻塞式IO Java BIO 就是传统的 Java I/O 编程,其相关的类和接口在 java.io。 BIO(BlockingI/O):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连…

面试热题(滑动窗口最大值)

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出:[3,3,5,…

【数据分析】pandas 一

目录 一,pandas简介: 二,pandas数据结构Series简介: 2.1 data为ndarray 2.2 data为字典 三,Serise切片操作: 四,Series性质: 4.1 Series类似于numpy,字典 4.2 矢量化操作和标…

Flask进阶:构建RESTful API和数据库交互

在初级教程中,我们已经介绍了如何使用Flask构建基础的Web应用。在本篇中级教程中,我们将学习如何用Flask构建RESTful API,以及如何使用Flask-SQLAlchemy进行数据库操作。 一、构建RESTful API REST(Representational State Tran…

【LeetCode】88. 合并两个有序数组 - 双指针

这里写自定义目录标题 2023-8-7 22:35:41 88. 合并两个有序数组 双指针 2023-8-7 22:35:41 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int last m n ;while(n > 0){if(m > 0 && nums2[n-1] > nums1[m-1]){nums1[las…

objectMapper.getTypeFactory().constructParametricType 方法的作用和使用

在使用 Jackson 库进行 JSON 数据的序列化和反序列化时,经常会使用到 ObjectMapper 类。其中,objectMapper.getTypeFactory().constructParametricType 方法用于构造泛型类型。 具体作用和使用如下: 作用: 构造泛型类型&#x…

Linux软件包管理

Linux软件包管理 一.软件运行环境基础 1.gcc编译程序的大致过程 gcc 编译程序主要经过四个过程: 处理(Pre-Processing) 译 (Compiling) 编 (Assembling) 接 (Linking) …

CentOS下ZLMediaKit的可视化管理网站MediaServerUI使用

一、简介 按照 ZLMediaKit快速开始 编译运行ZLMediaKit成功后,我们可以运行其合作开源项目MediaServerUI,来对ZLMediaKit进行可视化管理。通过MediaServerUI,我们可以实现在浏览器查看ZLMediaKit的延迟率、负载率、正在进行的推拉流、服务器…

并发——线程与进程的关系,区别及优缺点?

文章目录 1. 图解进程和线程的关系2.程序计数器为什么是私有的?3. 虚拟机栈和本地方法栈为什么是私有的?4. 一句话简单了解堆和方法区5. 说说并发与并行的区别? 从 JVM 角度说进程和线程之间的关系 1. 图解进程和线程的关系 下图是 Java 内存区域,通过下图我们…

Redis,过期监听

应用场景,优惠卷过期,监听 配置类 import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annota…

vue-cli

vue-cli脚手架 案例一: 案例二: 案例三: ​ 一、脚手架简介 Vue脚手架是Vue官方提供的标准化开发工具(开发平台),它提供命令行和UI界面,方便创建vue工程、配置第三方依赖、编译vue工程 1. …