问题标签 [translucency]

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 投票
3 回答
1847 浏览

java - Java Swing - 导致工件的半透明组件

我目前正在为大学课程做一个小组项目,我遇到了一个绊脚石。我们决定实现的程序是一个点对点聊天客户端,它有一个中央服务器,用于存储和共享用户名等。我被指派做 GUI。

一位朋友开玩笑地建议我加入“燃烧的背景!” 所以我决定这样做,但要有一个用户选择的背景图像。照原样,只有背景图像的点点滴滴是可见的,所有组件都在它上面,所以我决定尝试实现半透明。

这就是我的问题所在:

当从输入框向聊天窗口发送信息时,或者在浏览好友列表时,或者滚动聊天窗口时,都会留下奇怪的工件。这些工件有时是“发送”按钮的半透明“幽灵”,有时是菜单的一部分或旧文本。在我看来,整个框架没有正确重绘,但我不确定它是如何工作的。

对于实现 JTextComponent 的组件,我将它们的选择颜色设置为半透明颜色。对于其他组件,我将背景设置为半透明。我有一个函数 setTranslucency(Component com) 查看一个组件,根据它是什么设置它的半透明度,然后查看它是否是某种容器并递归地设置每个项目的半透明度。

现在,我发现解决此问题的方法是将窗口拖到视线之外(例如最小化或将窗口拖离屏幕并返回)。

所以,

1)有没有办法强制整个窗口像我将它拖离屏幕或最小化它时那样更新?

或者,

2)我一开始做错了吗?如果是这样,我将如何解决它?

这是一张供参考的图片:

http://i.stack.imgur.com/4J9GJ.png

0 投票
1 回答
3361 浏览

user-interface - Java Swing - 半透明组件

我最近问了一个关于半透明组件的问题,它会导致看起来没有正确更新的奇怪伪影。我收到的答案导致工件消失,但以半透明为代价。

解决方案是——对于每个半透明组件——也调用 setOpaque(false) 函数。这样,Swing 知道它需要重新绘制这些组件背后的背景。

然而,这是以我试图实现的半透明为代价的。它导致组件变得透明。

前提是:我正在为聊天客户端设计 GUI,功能请求是要有背景。通过遵循扩展 JPanel 类的代码片段,我成功地使背景工作,但后来我希望组件允许显示背景。设置半透明后,更新组件的残余部分显示在不应出现的位置。我来到这里并解决了我的问题,但现在我遇到了一个新问题。所以我们在这里。

所以,这是我推测的:

- 为每个所需组件调用 setOpaque(false) 函数而不设置半透明颜色并不能达到我想要的效果。

- 设置半透明颜色而不调用 setOpaque(false) 可以显示半透明背景,但会导致伪影,让我回到第一格。

所以我需要在没有伪影的透明和有伪影的半透明之间找到一个中间地带。也就是说,我想要一个没有伪影的半透明背景(不完全透明)。

似乎我将需要覆盖 JFrame 以使其重新绘制其所有组件,而不管不透明度如何。除非我缺少什么……这就是我在这里的原因!

谢谢!

(这里是原始问题的链接,附图片供参考:Java Swing - Translucent Components Making Artifacts

0 投票
2 回答
2690 浏览

java - 改变jframe的形状

不知道有没有可能。有什么办法可以把jframe的形状改成圆形

0 投票
2 回答
1037 浏览

windows - 在 Delphi 中使其他应用程序窗口的半透明

大家好

我在网上搜索了有关这是否可行的任何指示,但无济于事。我需要编写一个允许我选择另一个应用程序的应用程序,并通过这样做使选定的应用程序半透明并在顶部(如重影图像叠加)。

德尔福有可能吗?我正在使用 Delphi XE 和 Lazarus。如果有人可以请我指出从哪里开始的大致方向,我将非常感激。

提前致谢,

0 投票
1 回答
837 浏览

firefox - Firefox 4 中的透明 XUL 窗口

我创建了一个 Firefox 扩展,它会打开一个新窗口,这个窗口是透明的,这意味着它没有背景——它后面的桌面会发光!

它是用<window style="background:transparent !important; -moz-appearance:none !important;">.

虽然它在 Firefox 3.x 中完美运行,但在 Firefox 4 中我无法获得任何透明度。背景是白色的。有没有办法在 Firefox 4 中实现这种透明效果?

(PS:它只适用于 Windows。如果在为 Windows 修复它之后,有人知道如何为其他操作系统制作它,我会非常高兴。)

0 投票
3 回答
1891 浏览

delphi - 在半透明的 TBitmap 上绘制不透明的线

我有一个空位图,我有一个接收 TCanvas 的绘图例程。绘图程序是一个更大的库的一部分,因此实际上不受我的控制。

简单地说:如果绘图程序影响像素,我希望像素是不透明的;每个未被触摸的像素都应该保持透明。由于我无法控制绘图例程将使用的颜色,因此我宁愿不必使用该TransparentColor属性。

有没有办法实现这一目标?我可以使用某种设置来指定画布应该影响它绘制到的像素的 alpha 层?


更新:我使用的是 Delphi 2010,下面是我尝试过的代码:

0 投票
2 回答
5126 浏览

java - 透明的 JButton 仍在绘制其背景

我有一个半透明的JPanel。我通过扩展 JButton 创建了一个自定义 JButton,因为我需要一个带圆角的按钮并想为其添加一些效果。我已将按钮设置为non-opaque。当我将此按钮添加到我的半透明 JPanel 时,它看起来很好。但是在翻车时,按钮后面会涂上一个黑色的补丁,看起来真的很糟糕。我在网上搜索了一个解决方案,但找不到有用的解决方案。http://www.java.net/node/661798也描述了这个问题, 但我无法真正解决 kirillcool 的建议.....任何帮助将不胜感激

0 投票
5 回答
18528 浏览

java - Java 教程半透明窗口示例是否会给使用 jdk7 的人带来麻烦?

这是示例

如果您TranslucentWindow在支持 jdk7 的 NetBeans IDE 7.0 中构建并运行,您将收到以下异常:

根据此堆栈跟踪,有问题的行是tw.setOpacity(0.55f). 但是,正如错误所示,如果您setUndecorated(true)在框架上调用,那么它不会抛出异常并会创建一个半透明的窗口,尽管没有任何装饰(这很痛苦)。这是正常的吗?这段代码不应该“开箱即用”吗?我忽略了什么吗?

编辑

为什么他们的半透明窗口看起来装饰,或者这是自定义渲染?

这是什么...

在此处输入图像描述

应该是什么...

在此处输入图像描述

0 投票
1 回答
572 浏览

android - 当 GLSurface 为 TRANSLUCENT 时绘制正方形时出现问题。Square 被绘制了两次

我在 OpenGL for Android 中迈出了第一步,用于开发增强现实应用程序,我在相机图像前集成 OpenGL 形状时遇到了麻烦。该程序应该在相机图像上的 XZ 平面中绘制一个正方形(假设 Z 轴指向上方),但我得到了两个正方形,它们比我不使用相机时要小。

这是一些代码。

在主要活动中,我像这样设置视图和传感器:

我的渲染器的 onDraw 方法执行以下操作:

最后,我初始化 onSurfaceCreated 方法中的所有内容,如下所示:

如果我评论该行

在活动中,它把正方形画得又好又光滑,而且只有一次。但是当我让它半透明甚至透明时,它会画出两个在我旋转手机时画得不好的小方块。

如果有人知道发生了什么,将不胜感激。

谢谢!!

0 投票
1 回答
2188 浏览

iphone - iPhone:带有视图布局的半透明黑色uistatusbar问题

我的状态栏有一些问题。这是一个 iPhone 应用程序,而不是一个 iPad 应用程序。我想在应用程序的任何地方都有一个黑色半透明状态栏。

已经在应用 plist 中设置了状态栏样式。它设置为黑色半透明。

我的理解是,设置此选项后,所有视图的布局将从 0,0 而不是 0,20 开始,就像您有不透明状态栏时那样。这就是为什么 IB 为您提供选项来指定您将使用哪种状态栏的提示,以便它可以模拟它并在 IB 中正确显示它。(是的,我在 IB 中的所有视图都设置为显示黑色半透明状态栏)。布局从 0,0 开始,因此状态栏将覆盖您的视图以显示某些内容。在 IB 中它运行良好。但在我的应用程序中没有。

我的应用程序是一个基于标签栏的应用程序,只有一个视图看起来正确,即使它们都设置相同。为了让那个视图工作,我必须将背景视图图像设置为 0,-20,主视图设置为不剪辑子视图。所以看起来黑色半透明的布局不能正常工作。此外,我所有其他选项卡视图都以相同的方式设置,而不是剪辑子视图并将主背景视图设置为 0,-20。但只有在第一个选项卡中,这才真正“起作用”。

以下是一些图片:

它应该是什么样子(但仍然必须将背景设置为 0,-20): 这是它应该看起来的样子

另一个具有完全相同设置的选项卡如下所示:坏另一个标签

为了确保它是一个没有背景的黑色半透明状态栏,我在没有背景的情况下尝试了它:没有背景

和一个替代背景(替代是纯蓝色,没有轻微的拉丝效果): 替代背景

因为所有三个不起作用的示例(无背景、实际和替代)上的状态栏看起来完全相同,我假设状态栏是正确的排序,黑色半透明,但后面没有任何东西可以显示。

我的几个选项卡都有这个问题,所有在选项卡中循环通过导航控制器的视图都有这个问题。并且它们都设置为与“工作”选项卡相同,“剪辑子视图”设置为 NO,背景的原点设置为 0,-20

我认为“工作”的那个不起作用,但看起来是由于背景视图中的负偏移造成的。我认为它实际上应该设置为 0,0 并且可以工作。但是 IB 提供的主要视图的原点设置为 0,20,并且它是灰色的,所以我无法更改它。

此外,我在一个选项卡上还有另一个问题,一个设置选项卡,我使用不同的外观和感觉(更像 iPhone),黑色半透明甚至没有生效。我从一个以编程方式构建的视图开始,它显示了一个灰色的状态栏: 以编程方式构建的设置

并深入到 nib 支持的视图,它们看起来是一样的:设置笔尖支持

并且视图的布局就像是一个灰色状态栏,向下 20 像素(在 IB 中它们被设置为黑色半透明,所以我将它们布局高 20 像素)

除了应用程序 plist 条目之外,我还尝试以编程方式设置状态栏样式,但它没有效果(在这些选项卡中的任何一个上)。

我一直在研究这个(谷歌,stackoverflow,apple.com)好几个星期了,断断续续。但没有发现我应该做什么的迹象。

ETA: wantsFullScreenLayout解决了其中一个问题,所以我将其标记为已解决。我已经打开了一个新问题,更新了这里最初提出的两个问题之一,新的图片、描述等以及更适用的标题,因为问题不是 uistatusbar 本身。新问题是 新问题