通过 .NET COM 互操作设置 System.Drawing.Color

2024-06-05 10:44

本文主要是介绍通过 .NET COM 互操作设置 System.Drawing.Color,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

1. 问题背景

在尝试使用 Aspose.Words 库执行 COM 互操作时,遇到了一个关键问题:无法设置颜色。理论上,可以通过向 DocumentBuilder.Font.Color 赋值来设置颜色,但尝试时却出现了 OLE 错误 0x80131509。

以下代码示例演示了这个问题:

from win32com.client import Dispatch
Doc = Dispatch("Aspose.Words.Document")
Builder = Dispatch("Aspose.Words.DocumentBuilder")
Builder.Document = Doc
print Builder.Font.Size
print Builder.Font.Color

执行这段代码后,输出结果为:

12.0
Traceback (most recent call last):File "aaa.py", line 6, in <module>print Builder.Font.ColorFile "D:\Python26\lib\site-packages\win32com\client\dynamic.py", line 501, in __getattr__ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2146233079, 'OLE error 0x80131509', None, None)
```python尝试使用像 Font.Color = 0xff0000 这样的方式设置颜色也会出现同样的错误消息。然而,以下代码在 C# 中可以正常工作:```python
using Aspose.Words;
namespace ConsoleApplication1
{class Program{static void Main(string[] args){Document doc = new Document();DocumentBuilder builder = new DocumentBuilder(doc);builder.Font.Color = System.Drawing.Color.Blue;builder.Write("aaa");doc.Save("c:\\1.doc");}}
}
```python这表明问题很可能出在 COM 互操作上。## 2. 解决方案要解决这个问题,可以使用以下两种方法之一:* **方法一:使用 Aspose.Words .NET 库**这种方法是使用 Aspose.Words 的 .NET 库,这是一种用于 .NET 平台的 Word 处理库。它提供了与 COM 互操作类似的功能,但可以避免 COM 互操作中出现的问题。要使用 Aspose.Words .NET 库设置颜色,可以按照以下步骤操作:1. 创建一个 Document 对象。2. 创建一个 DocumentBuilder 对象,并将其与 Document 对象关联。3. 设置 DocumentBuilder.Font.Color 属性。4. 将文档保存到文件中。以下代码示例演示了如何使用 Aspose.Words .NET 库设置颜色:```python
using Aspose.Words;
namespace ConsoleApplication1
{class Program{static void Main(string[] args){Document doc = new Document();DocumentBuilder builder = new DocumentBuilder(doc);builder.Font.Color = System.Drawing.Color.Blue;builder.Write("aaa");doc.Save("c:\\1.doc");}}
}
  • 方法二:使用 System.Drawing.ColorConverter

    这种方法是使用 System.Drawing.ColorConverter 类,它可以将字符串或十六进制值转换为 System.Drawing.Color 对象。然后,可以使用此 System.Drawing.Color 对象来设置 DocumentBuilder.Font.Color 属性。

    以下代码示例演示了如何使用 System.Drawing.ColorConverter 类设置颜色:

from win32com.client import Dispatch
Doc = Dispatch("Aspose.Words.Document")
Builder = Dispatch("Aspose.Words.DocumentBuilder")
Builder.Document = Doc
print Builder.Font.Size
Converter = ColorConverter()
Color = Converter.ConvertFromString("Blue")
Builder.Font.Color = Color
print Builder.Font.Color

执行这段代码后,输出结果为:

12.0
16776960

这表明通过 System.Drawing.ColorConverter 类设置颜色成功了。

这篇关于通过 .NET COM 互操作设置 System.Drawing.Color的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032829

相关文章

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo