正如 Hans Passant 提议的那样,您可以使用画布中当前的内容作为纹理画笔的图像进行绘画(您可能需要双缓冲才能正常工作),并使用 aColorMatrix来修改画布上绘制的颜色。
有一个颜色矩阵可以类似于 XOR 反转颜色,问题是它不适用于中间灰色。反转 RGB 并保持 alpha 不变的颜色矩阵将是:
-1, 0, 0, 0, 0
0,-1, 0, 0, 0
0, 0,-1, 0, 0
0, 0, 0, 1, 0
1, 1, 1, 0, 1
Run Code Online (Sandbox Code Playgroud)
类似的方法(尽管速度较慢)是将画布复制到图像,并按照规则逐像素处理该图像像素,例如如果颜色比 0.5 亮,则使其稍微暗一些,否则使其稍微亮一些。然后,您使用经过处理的图像作为纹理画笔进行绘画。这会产生更好的结果,但会比使用ColorMatrix.
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |