gpt4 book ai didi

Java SWT - 透明外壳上的文本?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:42:41 24 4
gpt4 key购买 nike

在 Java SWT 中,有没有办法在透明外壳上绘制文本,以便只有文本显示可见?我想做的是让文本出现在我的桌面上,没有任何背景窗口。使用 shell.setAlpha() 将使整个外壳透明,包括出现在它上面的任何元素(我试图避免)。

最佳答案

这是一个例子 displaying an image without the shell .您可以相当轻松地调整它以显示文本。

更新:

好吧,我很无聊。这是在透明背景上绘制“Hello”的基本示例:

package swttest;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Region;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Test {

public static void main(String[] args) {
Test test = new Test();

test.show();
}

public void show() {
Display display = new Display();
// Create a shell with no trim
final Shell shell = new Shell(display, SWT.NO_TRIM);
shell.setForeground(display.getSystemColor(SWT.COLOR_WHITE));

//set the transparent canvas on the shell
Canvas canvas = new Canvas(shell, SWT.NO_BACKGROUND);

//create an area to paint the text
Rectangle size = new Rectangle(0, 0, 200, 200);
canvas.setBounds(size);

Region region = canvas.getRegion();

//mucking about with fonts
Font font = display.getSystemFont();

FontData[] fd = font.getFontData();

fd[0].setHeight(24);
fd[0].setStyle(SWT.BOLD);

Font bigFont = new Font(display, fd[0]);
canvas.setFont(bigFont);

// define the shape of the shell using setRegion
shell.setRegion(region);
shell.setSize(size.width, size.height);

canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
e.gc.drawString("Hello", 10, 10, true);
}
});

shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
region.dispose();
display.dispose();
}
}

关于Java SWT - 透明外壳上的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com