Paint.NET 是一款流行的 Windows 图像编辑器,现在可以通过一套非常早期的实验性方案在 Linux 上运行。

Paint.NET 自 2004 年以来一直是 Windows 应用程序。多年来,通过 Wine 在 Linux 上运行它一直很困难,因为 Paint.NET 高度依赖 Windows 图形技术,尤其是 Direct2D。

Wine 虽然具备部分 Direct2D 支持,但还不足以让 Paint.NET 正常工作。

为了解决这个问题,Paint.NET 作者 Rick Brewster 采用了一种不寻常的做法。他没有花费数年时间手工实现缺失的技术,而是借助 Claude AI 编码助手,为 Paint.NET 专门开发了一套新的 Direct2D 实现。

据 Brewster 介绍,Claude 在约三周内帮助生成了大约 180000 行代码。

这套方案并不是 Paint.NET 的原生 Linux 版本。它仍然是 Windows 应用程序借助 Wine 运行,只是带有新的图形实现,用于绕过 Wine 的限制。

用 Claude AI 开发软件

Paint.NET 是一款流行的 Windows 图像编辑器,现在可以通过一套非常早期的实验性方案在 Linux 上运行。

Paint.NET 自 2004 年以来一直是 Windows 应用程序。多年来,通过 Wine 在 Linux 上运行它一直很困难,因为 Paint.NET 高度依赖 Windows 图形技术,尤其是 Direct2D。

Wine 虽然具备部分 Direct2D 支持,但还不足以让 Paint.NET 正常工作。

为了解决这个问题,Paint.NET 作者 Rick Brewster 采用了一种不寻常的做法。他没有花费数年时间手工实现缺失的技术,而是借助 Claude AI 编码助手,为 Paint.NET 专门开发了一套新的 Direct2D 实现。

据 Brewster 介绍,Claude 在约三周内帮助生成了大约 180000 行代码。

这套方案并不是 Paint.NET 的原生 Linux 版本。它仍然是 Windows 应用程序借助 Wine 运行,只是带有新的图形实现,用于绕过 Wine 的限制。

用 Claude AI 开发软件

Brewster 将这一开发过程的很大一部分描述为“vibe coding”。

简单来说,他没有逐行人工审查大量 AI 生成的代码,而是主要依靠编译软件、运行测试、检查结果、定位问题,再让 AI 修复或改进代码。

但这并不意味着开发者只是把写程序的任务交给 AI 后就不管了。

Brewster 测试了实现,调查了问题,比较了结果,并纠正了重要错误。AI 生成的代码也经历过很多轮测试和改进。

与众不同的是规模:一个非常大的图形组件,借助 AI 编码代理在很短时间内完成。

社区反响

这个实验之所以受到关注,主要有三个原因。

1. Paint.NET 在 Linux 上填补了一个有用的中间地带

Linux 已经有 GIMP、Krita 这类强大的图像编辑器。不过,有些用户觉得这些软件比他们实际需要的更复杂。

另一头则是一些非常简单的绘图程序。

Paint.NET 位于二者之间:提供图层、透明度、选区、效果和基础绘图等熟悉功能,又不会试图成为完整专业图像套件。

对部分 Linux 用户来说,Paint.NET 因此成为一个有吸引力的替代品。

2. AI 可能改变单个开发者所能构建的规模

这个实验展示了 AI 编码助手如何帮助单个开发者应对技术难度很高的问题。

实现大型图形 API 通常是大规模工程。这次试验中,AI 助手被用来生成大量代码,并辅助测试和调试。

这并不能证明 AI 可以取代工程团队;但确实说明,有了 AI 辅助开发,小团队甚至单人开发者有可能尝试以前需要多得多工程时间的项目。

3. 它引出了一个不寻常的法律和技术问题

该项目也引发了关于洁净室开发与 AI 生成代码的讨论。

Wine 项目传统上对 Windows 兼容代码的开发方式有严格规定。源自微软专有实现或逆向工程的代码可能给项目带来风险。

AI 带来了一个新问题:如果没有任何人能完全验证模型训练数据中有什么,AI 模型生成的代码能否被视为洁净室代码?

一些 Wine 开发者已经在讨论这个问题。

但也不必夸大。目前没有证据表明 Claude 为这个项目复制了微软源代码。争议在于 AI 生成代码来源不明,以及这类代码是否符合 Wine 的开发要求。

因此,这是一个真实的技术和法律问题,而不是 Paint.NET 项目侵犯微软版权的证据。

在 Linux 上尝试 Paint.NET 前需要知道的四件事

如果你想在 Linux 上试验 Paint.NET,有几个重要限制。

1. 预期它缓慢且不稳定

这是一个极其早期的实验。

它不适合日常使用,也不是获得官方支持的稳定 Linux 版本。

Brewster 用一句幽默的话形容现状:

“它并非不工作。”

也就是说,Paint.NET 可以运行,但仍然可能出各种问题。

Wine 中仍缺少 Paint.NET 所依赖的某些 Windows 功能,或这些功能尚不完整。新的图形实现也没有经过成熟生产级图形引擎通常需要的那种长期测试。

2. 使用便携版

普通 Paint.NET Windows 安装程序无法在这套实验性 Wine 环境下正常工作。

你应该改用 Paint.NET 5.2 Alpha 的便携版。

官方实验说明还要求 Wine 11.14 或更新版本。

3. 需要额外的图形配置

这套实验使用 DXVK,把 Direct3D 图形命令转成 Vulkan 命令。

你还需要原生的 d3dcompiler_47 库,而不是 Wine 自带的版本。

安装步骤中用到的命令是:

winetricks d3dcompiler_47 dxvk

显卡驱动还必须支持所选 DXVK 版本要求的 Vulkan 版本。

具体而言,DXVK 3.x 需要 Vulkan 1.4,而较旧的 DXVK 2.7.x 版本可以配合 Vulkan 1.3。

因此,如果系统只支持 Vulkan 1.3,你可能需要使用旧版 DXVK,例如 2.7.1。

4. 必须用 /wine 参数启动 Paint.NET

不能直接正常启动程序。

实验性构建必须带上 /wine 命令行选项启动:

wine PaintDotNet.exe /wine

它告诉 Paint.NET 当前运行在 Wine 下,并启用特殊兼容行为。

这会让程序避开 Wine 下无法正常工作的 Windows 桌面功能,并改用新的图形实现。

在 Ubuntu 26.04 上安装 Paint.NET 5.2 Alpha

以下实验环境已在 Ubuntu 26.04 LTS 桌面版上完成测试:

  • Ubuntu 26.04 LTS 桌面版 64 位
  • Wine 11.16 Staging
  • 专用 Wine prefix
  • Winetricks
  • DXVK
  • 原生 d3dcompiler_47
  • Paint.NET 5.200.9739.41506 Alpha
  • 便携式 x64 构建

该环境成功启动并显示了 Paint.NET 图形界面。

这说明实验性的 Paint.NET/Wine 实现可以在当前 Ubuntu LTS 版本上运行。

如果你想亲自在 Ubuntu 中测试 Paint.NET,需要先确认:使用 64 位 Ubuntu 26.04 LTS 桌面系统,并拥有可用的 sudo 权限。下述步骤会向系统添加 WineHQ 仓库并安装 Wine Staging,从而替换发行版自带的 Wine 软件包;Paint.NET 本身建议放在独立的 Wine prefix 中,以免和其他 Windows 应用混用。

步骤 1:启用 32 位软件包支持

打开终端并执行:

sudo dpkg --add-architecture i386
sudo apt update

步骤 2:安装 WineHQ 先决条件

sudo apt install wget gnupg2 software-properties-common

步骤 3:添加 WineHQ 仓库

创建 keyring 目录:

sudo mkdir -pm755 /etc/apt/keyrings

下载并安装 WineHQ 签名密钥:

wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null

添加 Ubuntu 26.04(resolute)的 WineHQ 仓库:

sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources

刷新软件包列表:

sudo apt update

步骤 4:安装 Wine Staging

Ubuntu 自带的 Wine 对 Paint.NET 的实验性 Linux 支持来说太旧。 Ubuntu 26.04 标准仓库目前提供的是 Wine 10.0,而 Paint.NET 5.2 Alpha 需要 Wine 11.14 或更新版本。因此这里使用足够新的 WineHQ Staging 构建。

安装 Wine Staging:

sudo apt install --install-recommends winehq-staging

检查已安装版本:

wine --version

测试环境报告的结果是:

wine-11.16 (Staging)

Paint.NET 实验的关键要求是 Wine 11.14 或更新版本。

步骤 5:创建专用的 Wine prefix

建议让 Paint.NET 使用独立的 Wine 环境,而不是和其他 Windows 应用混在一起。

执行:

export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u

然后初始化 Wine 配置:

winecfg

如果 Wine 配置窗口成功打开,就可以继续。关闭配置窗口,按下面的步骤继续。

注意:

以后打开新终端时,需要再次设置 prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

WINEARCH=win64 只在创建 prefix 时使用,之后通常不需要再指定。

步骤 6:安装 Winetricks

检查 Winetricks 是否已安装:

winetricks --version

如果没有安装:

sudo apt install winetricks

测试系统使用的 Winetricks 版本是:

20250102

步骤 7:安装 DXVK 和 d3dcompiler_47

确认选中专用 Paint.NET prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

然后执行:

winetricks d3dcompiler_47 dxvk

等待 Winetricks 完成安装。

步骤 8:验证 DLL 覆盖

执行:

wine reg query "HKCU\Software\Wine\DllOverrides"

相关条目应显示为 native。

测试配置包含:

*d3d10core          REG_SZ    native
*d3d11              REG_SZ    native
*d3d8               REG_SZ    native
*d3d9               REG_SZ    native
*d3dcompiler_47     REG_SZ    native
*dxgi               REG_SZ    native

尤其要确认存在这一项:

*d3dcompiler_47     REG_SZ    native

如果这些覆盖项缺失,先不要急于排查 Paint.NET,而是先修复 Wine/DXVK 配置。

步骤 9:检查 Vulkan

安装 Vulkan 诊断工具:

sudo apt install vulkan-tools

然后执行:

vulkaninfo --summary

DXVK 需要可用的 Vulkan 支持。

具体 Vulkan 设备取决于你的硬件和显卡配置。

例如,系统可能报告 Intel、AMD 或 NVIDIA 显卡等物理 GPU。

软件 Vulkan 实现(如 llvmpipe)也能提供 Vulkan,但由于渲染由 CPU 完成,性能可能明显下降。

步骤 10:下载 Paint.NET 5.2 Alpha

请从 Paint.NET GitHub releases 页面下载 便携版 x64 的 Paint.NET 5.2 Alpha。

不要使用普通 Windows 安装程序。

测试所用的构建是:paint.net.5.200.9739.41506.portable.x64.zip。

为 Paint.NET 创建目录:

mkdir -p ~/PaintDotNet

把 ZIP 文件下载到该目录:

cd ~/PaintDotNet
wget https://github.com/paintdotnet/release/releases/download/v5.2-alpha.5.200.9739.41506/paint.net.5.200.9739.41506.portable.x64.zip

然后解压:

unzip paint.net.5.200.9739.41506.portable.x64.zip

如果尚未安装 unzip:

sudo apt install unzip

解压后,应用目录中应包含:

paintdotnet.exe

以及 Paint.NET 的 DLL 和其他运行文件。

步骤 11:启动 Paint.NET

确认选中专用 Wine prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

确认仍在 Paint.NET 目录中,否则先进入该目录:

cd ~/PaintDotNet

用下面的命令启动 Paint.NET:

wine paintdotnet.exe /wine

/wine 参数很重要,它会启用 Paint.NET 的实验性 Wine/Linux 兼容模式。

如果一切配置正确,Paint.NET 图形界面就会打开。

步骤 12:方便的启动命令

一切正常后,就不需要先切换目录了。可以从任意位置启动 Paint.NET:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

建议把这条命令保存下来备用。

故障排查

如果 Paint.NET 无法启动,按以下顺序检查。

检查 Wine

wine --version

这个实验需要 11.14 或更新版本。

检查 Wine prefix

echo "$WINEPREFIX"

它应当指向:

/home/YOUR_USERNAME/.wine-paintnet

如果变量为空或不正确:

export WINEPREFIX="$HOME/.wine-paintnet"

检查 DXVK 和 DLL 覆盖

wine reg query "HKCU\Software\Wine\DllOverrides"

确认 d3dcompiler_47 已设为 native,同时相关 DXVK 覆盖项齐全。

检查 Vulkan

vulkaninfo --summary

如果没有可用的 Vulkan,DXVK 无法正常工作。

检查 Paint.NET 可执行文件

ls ~/PaintDotNet/paintdotnet.exe

检查启动命令

使用:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

不要漏掉 /wine。

/wine 模式实际做了什么

/wine 选项不只是一个简单的兼容性开关。

据 Paint.NET 开发者说明,该模式会禁用多个在 Wine 下不适用或无法正常工作的 Windows 特性,包括:

  • UIAnimation
  • Composition
  • Windows 11 的 DisplayInformation

它还会启用 Paint.NET 内部的 Direct2D 实现,该实现位于:

PaintDotNet.Windows.Direct2D1.Managed.dll

正是这套图形技术让实验成为可能,无需 Wine 提供 Paint.NET 通常依赖的全部 Direct2D 功能。

性能预期

性能高度取决于 Linux 系统的图形配置。

具备 GPU 加速 Vulkan 的系统,体验会明显好于依赖软件渲染的系统。

如果 vulkaninfo --summary 报告的结果是:

llvmpipe

那就说明 Vulkan 渲染由 CPU 完成。

Paint.NET 仍然可能正常启动和运行,但可以预期以下操作会更慢:

  • 大图像
  • 缩放
  • 画布操作
  • GPU 密集型效果
  • 复杂选区或变换

这不是 Paint.NET 的兼容性故障;即使 Vulkan 加速有限,程序也仍能成功运行。

结语

这个实验的意义超出了 Paint.NET 本身。

很多年来,某些 Windows 应用在 Linux 上很难甚至无法正常运行,因为它们依赖 Wine 尚未完整实现的 Windows 组件。

过去,解决这类问题通常意味着 Wine 开发者要花大量时间重建缺失的 Windows 技术。

Paint.NET 实验采用了另一条路线:开发者没有等待 Wine 实现 Paint.NET 所需的全部功能,而是借助 AI 编码助手,创建了一个专门针对 Paint.NET 的独立实现。

这仍然是实验性方案。性能、可靠性、可维护性以及 AI 生成代码的使用方式,都还有许多未解问题。

但实验至少说明一点:AI 编码工具已经可以帮助开发者,在很短时间内构建出规模相当大、技术复杂度相当高的软件组件。

这套方法能否在更大规模上产出可靠软件,仍然是开放问题。

目前,Linux 上的 Paint.NET 不应该被视为一个完成形态的 Linux 版本,而更适合看作一次关于 AI 辅助软件开发、Windows 兼容性与开源工程未来的实验。

Paint.NET 在 Ubuntu Linux 上的安装:快速参考

如果已经装好 Ubuntu 26.04,只想看完整命令序列:

# Enable 32-bit packages
sudo dpkg --add-architecture i386
sudo apt update
# WineHQ prerequisites
sudo apt install wget gnupg2 software-properties-common
# WineHQ signing key
sudo mkdir -pm755 /etc/apt/keyrings
wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null
# WineHQ repository for Ubuntu 26.04
sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources
sudo apt update
# Install Wine Staging
sudo apt install --install-recommends winehq-staging
# Verify Wine
wine --version
# Create dedicated 64-bit Wine prefix
export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u
# Install Wine configuration
winecfg
# Install Winetricks
sudo apt install winetricks
# Install required graphics components
export WINEPREFIX="$HOME/.wine-paintnet"
winetricks d3dcompiler_47 dxvk
# Verify DLL overrides
wine reg query "HKCU\Software\Wine\DllOverrides"
# Optional Vulkan diagnostic
sudo apt install vulkan-tools
vulkaninfo --summary
# Create Paint.NET directory
mkdir -p ~/PaintDotNet
# Extract the downloaded Paint.NET 5.2 Alpha portable ZIP
cd ~/PaintDotNet
unzip paint.net.5.200.9739.41506.portable.x64.zip
# Launch Paint.NET
WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

参考资源:

Brewster 将这一开发过程的很大一部分描述为“vibe coding”。

简单来说,他没有逐行人工审查大量 AI 生成的代码,而是主要依靠编译软件、运行测试、检查结果、定位问题,再让 AI 修复或改进代码。

但这并不意味着开发者只是把写程序的任务交给 AI 后就不管了。

Brewster 测试了实现,调查了问题,比较了结果,并纠正了重要错误。AI 生成的代码也经历过很多轮测试和改进。

与众不同的是规模:一个非常大的图形组件,借助 AI 编码代理在很短时间内完成。

社区反响

这个实验之所以受到关注,主要有三个原因。

1. Paint.NET 在 Linux 上填补了一个有用的中间地带

Linux 已经有 GIMP、Krita 这类强大的图像编辑器。不过,有些用户觉得这些软件比他们实际需要的更复杂。

另一头则是一些非常简单的绘图程序。

Paint.NET 位于二者之间:提供图层、透明度、选区、效果和基础绘图等熟悉功能,又不会试图成为完整专业图像套件。

对部分 Linux 用户来说,Paint.NET 因此成为一个有吸引力的替代品。

2. AI 可能改变单个开发者所能构建的规模

这个实验展示了 AI 编码助手如何帮助单个开发者应对技术难度很高的问题。

实现大型图形 API 通常是大规模工程。这次试验中,AI 助手被用来生成大量代码,并辅助测试和调试。

这并不能证明 AI 可以取代工程团队;但确实说明,有了 AI 辅助开发,小团队甚至单人开发者有可能尝试以前需要多得多工程时间的项目。

3. 它引出了一个不寻常的法律和技术问题

该项目也引发了关于洁净室开发与 AI 生成代码的讨论。

Wine 项目传统上对 Windows 兼容代码的开发方式有严格规定。源自微软专有实现或逆向工程的代码可能给项目带来风险。

AI 带来了一个新问题:如果没有任何人能完全验证模型训练数据中有什么,AI 模型生成的代码能否被视为洁净室代码?

一些 Wine 开发者已经在讨论这个问题。

但也不必夸大。目前没有证据表明 Claude 为这个项目复制了微软源代码。争议在于 AI 生成代码来源不明,以及这类代码是否符合 Wine 的开发要求。

因此,这是一个真实的技术和法律问题,而不是 Paint.NET 项目侵犯微软版权的证据。

在 Linux 上尝试 Paint.NET 前需要知道的四件事

如果你想在 Linux 上试验 Paint.NET,有几个重要限制。

1. 预期它缓慢且不稳定

这是一个极其早期的实验。

它不适合日常使用,也不是获得官方支持的稳定 Linux 版本。

Brewster 用一句幽默的话形容现状:

“它并非不工作。”

也就是说,Paint.NET 可以运行,但仍然可能出各种问题。

Wine 中仍缺少 Paint.NET 所依赖的某些 Windows 功能,或这些功能尚不完整。新的图形实现也没有经过成熟生产级图形引擎通常需要的那种长期测试。

2. 使用便携版

普通 Paint.NET Windows 安装程序无法在这套实验性 Wine 环境下正常工作。

你应该改用 Paint.NET 5.2 Alpha 的便携版。

官方实验说明还要求 Wine 11.14 或更新版本。

3. 需要额外的图形配置

这套实验使用 DXVK,把 Direct3D 图形命令转成 Vulkan 命令。

你还需要原生的 d3dcompiler_47 库,而不是 Wine 自带的版本。

安装步骤中用到的命令是:

winetricks d3dcompiler_47 dxvk

显卡驱动还必须支持所选 DXVK 版本要求的 Vulkan 版本。

具体而言,DXVK 3.x 需要 Vulkan 1.4,而较旧的 DXVK 2.7.x 版本可以配合 Vulkan 1.3。

因此,如果系统只支持 Vulkan 1.3,你可能需要使用旧版 DXVK,例如 2.7.1。

4. 必须用 /wine 参数启动 Paint.NET

不能直接正常启动程序。

实验性构建必须带上 /wine 命令行选项启动:

wine PaintDotNet.exe /wine

它告诉 Paint.NET 当前运行在 Wine 下,并启用特殊兼容行为。

这会让程序避开 Wine 下无法正常工作的 Windows 桌面功能,并改用新的图形实现。

在 Ubuntu 26.04 上安装 Paint.NET 5.2 Alpha

以下实验环境已在 Ubuntu 26.04 LTS 桌面版上完成测试:

  • Ubuntu 26.04 LTS 桌面版 64 位
  • Wine 11.16 Staging
  • 专用 Wine prefix
  • Winetricks
  • DXVK
  • 原生 d3dcompiler_47
  • Paint.NET 5.200.9739.41506 Alpha
  • 便携式 x64 构建

该环境成功启动并显示了 Paint.NET 图形界面。

这说明实验性的 Paint.NET/Wine 实现可以在当前 Ubuntu LTS 版本上运行。

如果你想亲自在 Ubuntu 中测试 Paint.NET,需要先确认:使用 64 位 Ubuntu 26.04 LTS 桌面系统,并拥有可用的 sudo 权限。下述步骤会向系统添加 WineHQ 仓库并安装 Wine Staging,从而替换发行版自带的 Wine 软件包;Paint.NET 本身建议放在独立的 Wine prefix 中,以免和其他 Windows 应用混用。

步骤 1:启用 32 位软件包支持

打开终端并执行:

sudo dpkg --add-architecture i386
sudo apt update

步骤 2:安装 WineHQ 先决条件

sudo apt install wget gnupg2 software-properties-common

步骤 3:添加 WineHQ 仓库

创建 keyring 目录:

sudo mkdir -pm755 /etc/apt/keyrings

下载并安装 WineHQ 签名密钥:

wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null

添加 Ubuntu 26.04(resolute)的 WineHQ 仓库:

sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources

刷新软件包列表:

sudo apt update

步骤 4:安装 Wine Staging

Ubuntu 自带的 Wine 对 Paint.NET 的实验性 Linux 支持来说太旧。 Ubuntu 26.04 标准仓库目前提供的是 Wine 10.0,而 Paint.NET 5.2 Alpha 需要 Wine 11.14 或更新版本。因此这里使用足够新的 WineHQ Staging 构建。

安装 Wine Staging:

sudo apt install --install-recommends winehq-staging

检查已安装版本:

wine --version

测试环境报告的结果是:

wine-11.16 (Staging)

Paint.NET 实验的关键要求是 Wine 11.14 或更新版本。

步骤 5:创建专用的 Wine prefix

建议让 Paint.NET 使用独立的 Wine 环境,而不是和其他 Windows 应用混在一起。

执行:

export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u

然后初始化 Wine 配置:

winecfg

如果 Wine 配置窗口成功打开,就可以继续。关闭配置窗口,按下面的步骤继续。

注意:

以后打开新终端时,需要再次设置 prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

WINEARCH=win64 只在创建 prefix 时使用,之后通常不需要再指定。

步骤 6:安装 Winetricks

检查 Winetricks 是否已安装:

winetricks --version

如果没有安装:

sudo apt install winetricks

测试系统使用的 Winetricks 版本是:

20250102

步骤 7:安装 DXVK 和 d3dcompiler_47

确认选中专用 Paint.NET prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

然后执行:

winetricks d3dcompiler_47 dxvk

等待 Winetricks 完成安装。

步骤 8:验证 DLL 覆盖

执行:

wine reg query "HKCU\Software\Wine\DllOverrides"

相关条目应显示为 native。

测试配置包含:

*d3d10core          REG_SZ    native
*d3d11              REG_SZ    native
*d3d8               REG_SZ    native
*d3d9               REG_SZ    native
*d3dcompiler_47     REG_SZ    native
*dxgi               REG_SZ    native

尤其要确认存在这一项:

*d3dcompiler_47     REG_SZ    native

如果这些覆盖项缺失,先不要急于排查 Paint.NET,而是先修复 Wine/DXVK 配置。

步骤 9:检查 Vulkan

安装 Vulkan 诊断工具:

sudo apt install vulkan-tools

然后执行:

vulkaninfo --summary

DXVK 需要可用的 Vulkan 支持。

具体 Vulkan 设备取决于你的硬件和显卡配置。

例如,系统可能报告 Intel、AMD 或 NVIDIA 显卡等物理 GPU。

软件 Vulkan 实现(如 llvmpipe)也能提供 Vulkan,但由于渲染由 CPU 完成,性能可能明显下降。

步骤 10:下载 Paint.NET 5.2 Alpha

请从 Paint.NET GitHub releases 页面下载 便携版 x64 的 Paint.NET 5.2 Alpha。

不要使用普通 Windows 安装程序。

测试所用的构建是:paint.net.5.200.9739.41506.portable.x64.zip。

为 Paint.NET 创建目录:

mkdir -p ~/PaintDotNet

把 ZIP 文件下载到该目录:

cd ~/PaintDotNet
wget https://github.com/paintdotnet/release/releases/download/v5.2-alpha.5.200.9739.41506/paint.net.5.200.9739.41506.portable.x64.zip

然后解压:

unzip paint.net.5.200.9739.41506.portable.x64.zip

如果尚未安装 unzip:

sudo apt install unzip

解压后,应用目录中应包含:

paintdotnet.exe

以及 Paint.NET 的 DLL 和其他运行文件。

步骤 11:启动 Paint.NET

确认选中专用 Wine prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

确认仍在 Paint.NET 目录中,否则先进入该目录:

cd ~/PaintDotNet

用下面的命令启动 Paint.NET:

wine paintdotnet.exe /wine

/wine 参数很重要,它会启用 Paint.NET 的实验性 Wine/Linux 兼容模式。

如果一切配置正确,Paint.NET 图形界面就会打开。

步骤 12:方便的启动命令

一切正常后,就不需要先切换目录了。可以从任意位置启动 Paint.NET:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

建议把这条命令保存下来备用。

故障排查

如果 Paint.NET 无法启动,按以下顺序检查。

检查 Wine

wine --version

这个实验需要 11.14 或更新版本。

检查 Wine prefix

echo "$WINEPREFIX"

它应当指向:

/home/YOUR_USERNAME/.wine-paintnet

如果变量为空或不正确:

export WINEPREFIX="$HOME/.wine-paintnet"

检查 DXVK 和 DLL 覆盖

wine reg query "HKCU\Software\Wine\DllOverrides"

确认 d3dcompiler_47 已设为 native,同时相关 DXVK 覆盖项齐全。

检查 Vulkan

vulkaninfo --summary

如果没有可用的 Vulkan,DXVK 无法正常工作。

检查 Paint.NET 可执行文件

ls ~/PaintDotNet/paintdotnet.exe

检查启动命令

使用:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

不要漏掉 /wine。

/wine 模式实际做了什么

/wine 选项不只是一个简单的兼容性开关。

据 Paint.NET 开发者说明,该模式会禁用多个在 Wine 下不适用或无法正常工作的 Windows 特性,包括:

  • UIAnimation
  • Composition
  • Windows 11 的 DisplayInformation

它还会启用 Paint.NET 内部的 Direct2D 实现,该实现位于:

PaintDotNet.Windows.Direct2D1.Managed.dll

正是这套图形技术让实验成为可能,无需 Wine 提供 Paint.NET 通常依赖的全部 Direct2D 功能。

性能预期

性能高度取决于 Linux 系统的图形配置。

具备 GPU 加速 Vulkan 的系统,体验会明显好于依赖软件渲染的系统。

如果 vulkaninfo --summary 报告的结果是:

llvmpipe

那就说明 Vulkan 渲染由 CPU 完成。

Paint.NET 仍然可能正常启动和运行,但可以预期以下操作会更慢:

  • 大图像
  • 缩放
  • 画布操作
  • GPU 密集型效果
  • 复杂选区或变换

这不是 Paint.NET 的兼容性故障;即使 Vulkan 加速有限,程序也仍能成功运行。

结语

这个实验的意义超出了 Paint.NET 本身。

很多年来,某些 Windows 应用在 Linux 上很难甚至无法正常运行,因为它们依赖 Wine 尚未完整实现的 Windows 组件。

过去,解决这类问题通常意味着 Wine 开发者要花大量时间重建缺失的 Windows 技术。

Paint.NET 实验采用了另一条路线:开发者没有等待 Wine 实现 Paint.NET 所需的全部功能,而是借助 AI 编码助手,创建了一个专门针对 Paint.NET 的独立实现。

这仍然是实验性方案。性能、可靠性、可维护性以及 AI 生成代码的使用方式,都还有许多未解问题。

但实验至少说明一点:AI 编码工具已经可以帮助开发者,在很短时间内构建出规模相当大、技术复杂度相当高的软件组件。

这套方法能否在更大规模上产出可靠软件,仍然是开放问题。

目前,Linux 上的 Paint.NET 不应该被视为一个完成形态的 Linux 版本,而更适合看作一次关于 AI 辅助软件开发、Windows 兼容性与开源工程未来的实验。

Paint.NET 在 Ubuntu Linux 上的安装:快速参考

如果已经装好 Ubuntu 26.04,只想看完整命令序列:

# Enable 32-bit packages
sudo dpkg --add-architecture i386
sudo apt update
# WineHQ prerequisites
sudo apt install wget gnupg2 software-properties-common
# WineHQ signing key
sudo mkdir -pm755 /etc/apt/keyrings
wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null
# WineHQ repository for Ubuntu 26.04
sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources
sudo apt update
# Install Wine Staging
sudo apt install --install-recommends winehq-staging
# Verify Wine
wine --version
# Create dedicated 64-bit Wine prefix
export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u
# Install Wine configuration
winecfg
# Install Winetricks
sudo apt install winetricks
# Install required graphics components
export WINEPREFIX="$HOME/.wine-paintnet"
winetricks d3dcompiler_47 dxvk
# Verify DLL overrides
wine reg query "HKCU\Software\Wine\DllOverrides"
# Optional Vulkan diagnostic
sudo apt install vulkan-tools
vulkaninfo --summary
# Create Paint.NET directory
mkdir -p ~/PaintDotNet
# Extract the downloaded Paint.NET 5.2 Alpha portable ZIP
cd ~/PaintDotNet
unzip paint.net.5.200.9739.41506.portable.x64.zip
# Launch Paint.NET
WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

参考资源: