- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经开始创建一个与绘图板交互的绘图程序。根据笔在数位板上的压力,我更改了正在绘制的线条的 alpha 值。该机制有效。
细线看起来不错,看起来像一个真实的素描。但是因为我在两点之间画线(就像在 Qt 涂鸦教程中一样)来绘画,所以线接头之间有一个 alpha 重叠,并且对于粗笔画来说非常明显。
这是线对线连词的效果:
如您所见,线段之间存在难看的 alpha 混合。
为了解决这个问题,我决定使用QPainterPath
来渲染线条。这有两个问题:
以下图像使用了 QPainterPath
。
我想保留的混合效果。
下图显示了第二个问题,它改变了整个路径的 alpha 和厚度
红色文本应为:“如果在不将笔从数位板表面移开的情况下增加更多压力,则线条会变粗”(并且 alpha 变得不透明)
另一件事是,通过这种方法,我只能获得从暗到亮(或从粗到细的路径宽度)而不是从亮到暗的混合轨迹。我不确定为什么会出现这种效果,但我的最佳猜测是它与整个路径更新的线段有关。
我确实让程序根据数位板上笔的压力增加/减少 alpha 和线条粗细。
问题是我想渲染没有 alpha 重叠的线条,并且 QPainterPath
更新了我不想要的整个路径的 alpha 和厚度。
这是创建路径的代码:
switch(event->type()){
case QEvent::TabletPress:
if(!onTablet){
onTablet = true;
//empty for new segment
freePainterPath();
path = new QPainterPath(event->pos());
} break;
case QEvent::TabletRelease:
if(onTablet)
onTablet = false;
break;
case QEvent::TabletMove:
if(path != NULL)
path->lineTo(event->pos());
if(onTablet){
//checks for pressure of pen on tablet to change alpha/line thickness
brushEffect(event);
QPainter painter(&pixmap);
//renders the path
paintPixmap(painter, event);
} break;
default:;
}
update();
我想要的单一路径效果(使用 Krita 绘图程序创建的图像):
最佳答案
模拟 Krita 绘图程序:
现在,您不必保留整个原始目标表面 - 只需保留您使用此工具绘制的部分。 (一个好的基于图 block 的延迟写入成像系统将使这变得容易)。
根据您正在绘制的线段大小,您可能希望在线段之间进行插值,使画笔的强度稍微不那么尖锐。刷子的形状也可能需要改进。但这些与透明度问题无关。
至于Qt的怪癖,我对Qt的了解还不够,无法告诉大家如何处理Qt的刷机代码怪癖。但是上面的“key-mask”策略应该可以解决你的 alpha 重叠问题。
我不知道如何在 Qt 中执行此操作。扫视Qt compositing modes我没有看到一种明显的方式来表示“取最大值”作为生成的 alpha。也许以某种巧妙的方式同时涉及颜色和 alpha channel 。
关于C++ 和 Qt : Paint Program - Rendering Transparent Lines Without Alpha Joint Overlap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17822639/
我正在使用MySQL。在我的数据库中,我有以下表格: A student table 。该表的主键是sid . A high_school table 。主键是 hid . A university
我正在使用MySQL。在我的数据库中,我有以下表格: A student table 。该表的主键是sid . A high_school table 。主键是 hid . A university
我通过 Python 3.7 使用 OpenCV。我有一组看起来像这样的单色图像: 我想在这些图像上找到所有“关节点”,其中“关节点” - 是两个木板的每个交叉点的中心(1 像素)。这些“关节”大致由
如何在关节js中的克隆关节元素上触发pointerdown/dragstart?当工具箱纸上触发 pointerdown 事件时,会触发 toolBoxPointerDown。当 _this.pape
我正在两篇论文之间实现拖放操作。但是由于我的 html 正文中有两篇论文,所以我坚持拖动元素的偏移量与光标位置的同步。我对 css 的经验非常少,这可能会导致问题元素的定位。 用例:- 用户单击纸 2
我是 Joint JS 的新手,无法动态设置以下元素的宽度和高度属性: var rect = new joint.shapes.basic.Rect({ position: { x: 100,
我有这样的数据库结构: TBL_A | TBL_B | TBL_C | TBL_D | TBL_E -------+---------+---------+---------+-----
我才刚刚开始学习组合,所以对我来说还是有点模糊。我想创建一个自定义的 Publisher,它将使用 CLLocationManager 来公开当前用户位置。我希望它以这样的方式工作,即 locatio
我正在开发一款让玩家围绕行星运行的游戏。我正在使用 PrismaticJoint 让玩家靠近和远离行星,我通过旋转玩家 (bodyB) 所连接的中心点主体(关节的 bodyA)来围绕玩家运行。我通过启
我有一个需要 SKPhysicsJointFixed.joint 的小游戏,它一切正常,除了一个事实,即关节处于事件状态时,即 10 秒,会使 Sprite 速度减慢,速度似乎是 Sprite 速度的
这是我的设置: SKScene 有一个名为 world 的节点 在这个世界上,我附加了另一个节点:车辆 我将三个节点附加到这辆车上;一个 body 和两个轮子 轮子通过指定 anchor 的 SKPh
以下代码出现错误 - 物理关节数组似乎具有 PKPhysicsJoint 类。有人知道如何在 Swift 中迭代关节吗? documentation确实说 physicsBody.joints 应该返
我想做的是为端口和路径创建一个带有自定义类的元素,这样我就可以添加一个带有自定义路径的元素和我自己的端口标记。这样当我创建一个元素时,我将传递动态路径它的形状就像路径类的元素一样,而且我也从 Port
我正在研究 JointJS API。但是我想防止元素从它们的原始位置移动。你能建议我一些 JointJS 的特性或 CSS 的任何一般特性,我可以用它来使我的对象不可移动。 我不能在论文或 paper
因此,当我继续构建 Autowiring 脚本时,我遇到了我预计难以解决的三个问题中的第二个。这可能是一个非常简单的答案:但脚本本身非常容易使用,首先点击“生成代理定位器”,然后点击“构建脊柱关节”:
我在两个物体(一个球体和一个盒子)之间有一个铰接点。我想知道当球体用旋转电机围绕盒子旋转时如何避免球体进入盒子内部。 这是沿 x 轴旋转时球体进入盒子内部的快照: 两个物体都有物理特性,并且都在机器人
我正在尝试用一堆尸体制作一个布娃娃。我想用什么样的关节来连接它们?距离关节? 最佳答案 C# API 应该与 AS3.0 非常相似,看看 AS3.0 Flash Implementation Samp
我在 joint.js 中有一个 FSA,我需要使状态(圆圈)从圆圈底部开始按特定比例半填充,例如 1/2 或 1/6。棘手的部分是它需要完成两次 - 一个更大的半填充和一个更小的半填充。 这就是我想
在我的 SQL 数据库中有以下表(简化): 表格博客: +----+----------------------+----------+ | ID | Date | T
我正处于 MS3D 解析器的规划阶段,正在查看 specs我看到顶点结构有一个 boneId 变量。 “骨头”是关节的同义词吗?那么,那个 boneId 变量是关节数组的索引吗?如果不是,那么什么是骨
我是一名优秀的程序员,十分优秀!