问题标签 [opacitymask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1054 浏览

android - Android仅在位图区域上更改不透明度

我想创建一个画笔效果,当用户在屏幕上拖动他/她的手指时,画笔只会改变下面图像/位图的 alpha。例如,如果画笔不透明度设置为 50%,那么应用画笔应该

  1. 设置该区域的 alpha/opacity,仅设置该区域而不是整个位图。
  2. 保持位图区域的基础颜色不变。

也就是说,画笔应该只影响 alpha 透明度而不影响颜色。我从以下代码开始:

正如你所注意到的,这个画笔需要有一个填充颜色。这就是想要避免的。我需要一个透明的刷子,但不是颜色。

如果有其他方法可以实现目标,那很好。

0 投票
1 回答
92 浏览

c# - 从 ObservableCollection 中删除第一个对象后,Rectangle.OpacityMask 消失

我有一个带有不透明蒙版的矩形,大部分时间都可以使用。

ListView 绑定到 ObservableCollection。当且仅当我从集合中删除第一个项目时,OpacityMask 似乎在列表中的所有项目上消失。

ListView 中的所有其他控件都正确绑定,所以我很惊讶 DataTemplate 中没有绑定到任何东西的一个控件出现问题。

我不确定是不是因为它是 VSTO,但是当我尝试检查 VisualTree 时,WPF Inspector 和 Snoop 都崩溃了。

Visual Studio 中的 Live Visual Tree 也不填充任何内容。我再次将其归结为 VSTO。

更奇怪的是,如果我将 Visual Brush 更改为 RadialGradientBrush,它会完美运行。

正常行为示例 正常行为示例

删除 ObservableCollection 中的第一项后 删除 ObservableCollection 中的第一项后

0 投票
1 回答
306 浏览

wpf - WPF OpacityMask 奇怪的行为

我想我可能在 WPF 中发现了一个错误,或者我只是不完全理解 OpacityMasks 的工作原理。正如您在第一张图片中看到的,我有一个菱形路径和一个红色圆圈。我的目标是让钻石之外的一切都变得不可见。当圆圈在菱形内部时它可以工作,但是每当我将它移动到一个角落或路径之外时,OpacityMask 似乎会被拉伸或扭曲,如您在第二张图像中看到的那样。我的问题是,无论圆圈(或任何其他子元素)在哪里,我怎样才能使 OpacityMask 工作。

第一张图片

第二张图片

这是我的 XAML 代码

很抱歉发布带有链接的图像,但我没有足够的声誉来直接嵌入图像。

任何帮助表示赞赏!

0 投票
1 回答
49 浏览

c# - 了解 OpacityMask 的有效区域

我正在使用 WPF opacitymask 来“剪切”动画区域的形状。我注意到默认情况下, opacitymask 仅适用于面板的内容,而不适用于整个面板。

将背景设置为透明是一种可行的解决方案,因为(显然它会强制拉伸不透明蒙版。但是感觉像是一种解决方法,所以我很好奇是否有一种“有意”的方式可以使不透明蒙版拉伸到整个网格。

请参阅下面的示例代码和结果:

结果输出在这里输出

0 投票
1 回答
320 浏览

wpf - 将矩形的大小设置为图像大小

我正在使用它来显示可以改变颜色的图标

问题是,并非每个图像在 100x100 中看起来都不错,如果我不填充这些值,则不会显示任何内容。我想要实现的是,矩形自动采用所需的图像大小,就像我会使用一样

任何想法如何实现这一目标?我已经尝试为 ImageBrush 命名并参考矩形的大小,这不起作用。

作为一种解决方法,我将图像放置在 Visibility=Hidden 的相同位置,并从那里获取 Rectangle 的实际高度和实际宽度,但这不是一个可接受的解决方案。欢迎任何提示。

0 投票
2 回答
336 浏览

c# - 使用图像透明度过滤鼠标事件

我整天都在研究示例、教程和论坛,我似乎无法理解一个看似简单的概念。

本质上,我正在创建一个色轮颜色选择工具。该工具是一个环形,所以我不希望鼠标执行功能,除非它悬停在工具形状本身上。

色轮是一个简单的图像。我已经尝试寻找利用不透明度映射的方法,绘制椭圆来检测鼠标(这可行,但我无法单击它下面的物理滚轮)。

我只是在这里遇到空白。

我想要(不可避免地)实现的是:鼠标移动到色轮的域中,将光标更改为滴管。当用户单击 xPos/yPos 处的像素时,我们想要获取该位置像素的 RGB 值。在纸上看起来很容易,对吧?

有人想帮忙吗?也许有些吐球?非常感谢您已经提供的任何帮助,并感谢您抽出时间至少查看我的问题!

这是目前用于色轮的图像:

色轮 PNG

更新:我有一个覆盖工作,我成功地传递了点击事件。看来我可能会走对路。接下来只需要弄清楚如何获取像素数据。

XAML:

C#:

0 投票
1 回答
56 浏览

c# - 如何将图像沿两条边缘合并到背景中?

我正在尝试在我的应用程序中创建一种时尚的效果,允许图像位于右上角,左边缘和下边缘使用Image.OpacityMask. 就像是:

在此处输入图像描述

这可以使用以下代码完成,除了Image.OpacityMask只允许一个孩子LinearGradientBrush

我怎样才能Image.OpacityMask用有效的代码创建一个这样的?我知道有一个RadialGradientBrush,但这会融合整个图像,而不仅仅是左边缘和下边缘。

0 投票
0 回答
453 浏览

wpf - 如何使 WPF 中的 VisualBrush 图标以相同的方式拉伸

什么已经在起作用:

我想在我的应用程序中使用 SVG 图标。所以我从 Material.io 下载了一些图标,并使用 Inkscape 将它们转换为 XAML 文件。

然后将这些文件的内容<VisualBrush>用作 a <Rectangle.OpacityMask>。通过这样做,我可以根据需要更改前景和背景颜色。这很重要,因为我希望能够更改图标颜色,而无需重新设计它们。

VisualBrushes 和颜色在实际应用程序中的资源字典中,但为了更好地解释,我在一个窗口中复制了所有内容。

示例代码:

笏不工作:

图标以我想要的不同方式缩放。

  • 如果我使用<VisualBrush Stretch="None">,则图标都具有相同的大小,但是当我使矩形变大时,它们的大小不会增加。这正是我对 Stretch = "None" 的期望,但不是我需要的。

    拉伸=

  • 如果我使用<VisualBrush Stretch="Uniform">,图标会放大到矩形大小,但它们会变得太大,并且大小会有所不同。(“雪佛龙”比“出口”图标大)。我认为 VisualBrush 忽略了画布和路径的大小,而是使用路径可见部分的大小。

    拉伸=

  • 其他拉伸变体(如填充)也不起作用:

    在此处输入图像描述

我需要的:

图标应该像普通图标一样随着矩形大小而增长和缩小。但它们应该以相同的比例增长/缩小。

想要的行为

问题:

是否有可能的设置让我获得所需的行为?

奖金:

我想在不修改 ViewBox 或其内容的情况下实现所需的功能,因为那是 Inkscape 自动生成的代码。

我的测试页面的完整代码:

0 投票
1 回答
122 浏览

c# - XAML:访问按钮控件内的 OpacityMask VisualBrush 路径

我是设计WPF前端的新手,请多多包涵。目前我正在为我的 XAML 应用程序创建一种样式,并且在某个时候需要帮助。我有 3 个 XAML 文件:1 个用于我的画笔绘画路径,1 个用于我的样式/颜色和 mainWindow.xaml。在我的风格中,我想创建一个自定义按钮,其中包含一个堆栈面板、一个网格和一个带有 opcityMask 填充的矩形,该填充在其上绘制了一个 visualBrush 路径。您介意帮助我了解如何访问和更改矩形填充的绘画路径吗?是否有可能附加依赖属性或其他可更改属性来更改Rectangle.OpacityMask -> VisualBrush -> 视觉路径直接来自我的 mainWindow.xaml?如何从另一个 xaml 文件的样式中访问这样的画笔绘画路径?有没有办法将新属性附加到 mainWindow.xaml 中可以设置使用的绘画路径的代码?或者您在使用样式时如何更改此类路径?非常感谢你们非常感谢您的帮助!如果某些事情没有 100% 准确地描述,请告诉我。

这是我的代码:

主窗口.xaml

样式.xaml:

[...]

0 投票
1 回答
113 浏览

qt - 如何使部分区域透明而其余部分显示半透明?

我正在尝试在图像内制作一个可选择的矩形。

看起来像使用屏幕截图,您选择的区域是全透明的,但其余部分是半透明的(或模糊)。

在此处输入图像描述

我发现opacitymask有点相似,但我希望该区域的其余部分显示半透明,而不仅仅是白色。

本项目完整代码:https ://github.com/arkceajin/QtDemos/tree/master/CropBox